Hallo,

ich verwende keine AVRs, kann also die Einstellungen der Timerregister nicht überprüfen. Ich will mich trotzdem mal an eine Fehlersuche wagen.

xxi) Beim Betrieb des Timer1_A mit 20ms und nur einer Rampe - also das Servo-Standardsignal läufts problemlos.
xxii) Der Betrieb mit dem Timer1_A mit 2ms und der darin erzeugten Rampe von 1 bis <2 ms läuft teilweise minutenlang.

Dieses gibt mir zu denken. Wenn deine Pulszeit ganz dicht an den 2ms ist, könnte folgendes Problem auftreten: ein Heartbeat wird bearbeitet, während der Zeit tritt sowohl ein COMPA als auch ein COMPB Ereignis ein, und nach dem Heartbeat werden die Interrupte in der falschen Reihenfolge bearbeitet.

Ich würde die Aufgabe anders lösen:

Du programmierst einen Timer auf die gewünschte Pulslänge und setzt den Ausgang. Kommt jetzt der Interrupt, setzt du den Ausgang zurück, holst dir den Wert für den nächsten Kanal aus einer Tabelle programmierst den Timer und setzt den nächsten Ausgang usw. Wenn du durch alle durch bist, machst du einfach einen längeren Puls ohne einen Ausgang zu setzen, um auf die ungefähr 20ms zu kommen. Wenn die 20ms genau sein sollen, kann man alle Pulse aufaddieren und von 20ms abziehen. Damit bekommt man für kleines Geld 10 Servos gesteuert.

Ich sehe gerade, Searcher denkt in eine ähnliche Richtung.

MfG Klebwax