mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer0-Problem


Autor: Marc Schwarzbach (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei, eine Ansteuerung für Servos zu bauen und will dazu alle 
25ms die Ausgaberoutine per Timer0 aufrufen.

Das Programm läuft auch, aber wenn ich mir das Signal auf dem Oszi 
anschaue, sieht man, dass es nicht kontinuierlich abgegeben wird, 
sondern nur in Blöcken von ca.5 und dann kommt eine Pause von mehreren 
10ms.

Ich kann im Code keinen Fehler finden, also befürchte ich, dass es was 
Hardwaremässiges ist.....

Vielen Dank für eure Hilfe

Marc

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so genau habe ich das nicht nachgerechnet, aber ein delay Aufruf im 
Interrupt ist schon mal bedenklich, in der Zeit laufen dir weitere 
Timmer Int. auf. Die wollen auch noch abgearbeitet werden und die bremst 
du in der Delayschleife aus.

Entweder den Timer mit Capture Register benutzen oder ein weiteres 
Hilfsregister für den Int. das du innerhalb des 25 ms Zyklus die 0,5 - 2 
ms für den Servo erzeugst.

Oder gleich mit PWM das ist eleganter.

Gruß Mike

Autor: Marc Schwarzbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mike,

das mit der Delayschleife sollte eigentlich kein Problem sein, da sie 
nur 1ms dauert und der Timer erst nach 25ms wieder anspricht.
Das reti kommt also spätestens 2ms nach dem aufruf.

Was mich eigentlich wundert ist, dass der Interrupt manchmal aufgerufen 
wird und manchmal nicht... (obwohl sich ja nichts an den Randbedingungen 
ändert)

Gibt es dafür einen Grund im Quelltext??
Rufe ich den Timer falsch auf und da läuft ab und zu was über??

Das mit Capture-Register oder PWM hab ich bewusst nicht gemacht, da ich 
mehr als 1 Servo ansteuern will...

Gruss

Marc

Autor: Oliver K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,

ich kann auch keinen Fehler in Deinem Programm finden.

Ist der Prozessor mit dem richtigen Quartz versehen?

Grüße
Oliver

Autor: Marc Schwarzbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

der prozessor hat einen 4MHz Schwinger dran und läuft mit anderen 
Programmen Problemlos.

Welchen Wert hat der Timer eigentlich, nachdem er in den Interrupt 
reinläuft?? Ich bin davon ausgegangen, dass er einfach über die Null 
weiterzählt.

Gruss
Marc

Autor: Oliver K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,

Dein Reload-Wert stimmt auch. Habs grad nachgerechnet?!

Der Timer läuft immer rund. Das sollte nicht das Problem sein.

Am Besten im AVR-Studio simulieren. Haltepunkte setzen und die Zeiten + 
Pinsaugaben anschauen.

Grüße
Oliver

Autor: Frankl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Müssen die Servos nicht mit RPF von 50Hz = 20ms angsteuert werden ?

Autor: Marc Schwarzbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

Die Servos sind, was die Wiederholrate angeht, recht genügsam...
Ich habe erst gar nicht gemerkt, dass ich grosse Lücken im Signal habe, 
als ich ein Servo dran hatte.

Nur wenn man dagegendrückt merkt man, dass es manchmal ruckt...

Man kann also sagen, je genauer ein Servo bei einer anliegenden Kraft 
die Position halten soll, umso höher muss die Frequenz sein.(da gibts 
aber wohl auch grenzen..)

Die 1-2ms müssen natürlich exakt stimmen.

MFG

Marc

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.