Timer0-Problem

Gast #22999
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
Angehängte Dateien:
Gast #23000
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
Gast #23001
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
Gast #23006
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren