-         

Ergebnis 1 bis 5 von 5

Thema: Wie genau ist Waitms?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2005
    Ort
    Bremen
    Beiträge
    8

    Wie genau ist Waitms?

    Anzeige

    Hallo,

    Hab ein Poti am AD dran, was ich auslese und an Waitms ranhänge

    z.b.

    Do

    Wert = Getadc(0)
    Waitms Wert
    Toggle Portb.1

    Loop

    am Portb.1 hängt ein kleiner Lautsprecher, wo ein Ton entsteht.
    Das funzt auch soweit, der Ton ändert sich auch wenn man am Poti dreht.
    Der Ton steigt nicht gleichmässig an, sondern mehr stufig.

    Hat jemand da einen Idee oder anhaltspunkt warum das sein kann? Bin nicht der Held wenn es um Bascom geht.

    Gruß

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Ganz einfach:

    Du drehst am Poti und das Programm hängt derweil im Waitms-Befehl.
    Der Analogwert wird ja erst wieder gelesen, wenn die Wartezeit abgelaufen ist.
    Das "merkst" Du dann aber erst bei niedrigen Frequenzen.

    Das nächste Problem ist höchstwahrscheinlich die Auflösung.
    Mit einer Millisekunde Wartezeit erzeugst Du ein 500Hz-Signal. Mit 2ms 250Hz, u.s.w. Die Sprünge werden zwar mit abnehmender Frequenz kleiner, aber da schlägt dann schon das oben geschilderte Problem zu...

    Versuchs mal mit "Waitus Wert", dann sollte es etwas besser werden.

    Mit Bascom an sich hat das eigentlich nichts zu tun...

    Viele Grüße

    Torsten

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2005
    Ort
    Bremen
    Beiträge
    8
    @Torsten_G
    Danke für die schnelle Antwort.

    Anders gefragt, wie bekomme ich es hin das von 0Hz bis 1kHz fast stufenlos gleichmässig abdecken kann.

    >Mit Bascom an sich hat das eigentlich nichts zu tun...
    das stimmt! deshalb ja auch ----> "Bin nicht der Held" wenn es ums Bascom geht.


    Gruß

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Ort
    München
    Beiträge
    111
    Zitat Zitat von Torsten_G
    Versuchs mal mit "Waitus Wert", dann sollte es etwas besser werden.
    Geht leider nicht.
    Schau Dir mal die Syntax von Waitus an.

    Syntax
    WAITUS uS

    Remarks

    US The number of microseconds to wait. (1-65535)
    This must be a constant. Not a variable!

    Das kann man dann höchstens in eine for-next-Schleife packen.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Zitat Zitat von lektrikman1001
    Anders gefragt, wie bekomme ich es hin das von 0Hz bis 1kHz fast stufenlos gleichmässig abdecken kann.

    Das ist zwar nicht komplex aber auch nicht mal eben mit 5 Zeilen zu erledigen.

    Das Poti soll ja nur als Bedienelement eingesetzt werden und da der Bediener kaum mit Überschallgeschwindigkeit daran herumdoktert ist es auch nicht nötig es pausenlos abzufragen.

    20x die Sekunde reicht auch.
    Damit wir mit x=Getadc(y) nicht sinnlos auf dsie Konversion warten müssen sollte man das ganze über den Interrupt erledigen.
    Dh. die Wandlung wird gestartet und erst wenn der IRQ kommt wird schnell ausgelesen.
    Damit ist die Sollwertvorgabe auf ein Minimum an Rechenzeit beschränkt.
    Die Samplerate kannste später noch anpassen.

    Die Frequenzerzeugung würde ich über einen Timer erledigen (Periodendauer) dann bist du relativ Präzise und da der Timer ebenfalls wie der AD-Wandler für sich alleine Arbeitet kannst du auch hier Rechenzeit einsparen.


    Mein Tip:

    Fress dich durch das Handbuch(oder Hilfe oder PDF usw.) und mach dich mit den beiden oben angesprochenen Vertraut.
    Is eine super Möglichkeit die vielen Spielarten von Timer und ADC zu erlernen und,was viel wichtiger ist,auch zu begreifen
    Gruß
    Ratber

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •