Frank schrieb:
> Ich hätte noch die Idee einen Timer laufen zu lassen und in jedem
> Überlauf Interrupt die neue Zeit die der Timer laufen soll vorzugeben.
> Geht auch soweit und belastet den Rest nicht so extrem.
Nicht so extrem ist gut ausgedrückt.
"So gut wie überhaupt nicht" trifft es schon eher.
> Ist aber
> irgendwie auch nicht schön.
Das dachte ich auch mal, musste mich aber eines besseren belehren
lassen. Das ganze ist in der Tat recht einfach mit dem richtigen Timer.
> Macht man das so?
Hier
Modellbauservo Ansteuerung
hab ich das für 8 Servos gemacht, wobei die Signale dann auch noch auf 8
Ausgänge verteilt werden müssen.
Dein Fall ist ein wenig anders gelagert, aber auch wieder nicht.
Das Prinzip ist einfach:
Man rechnet sich aus, wie weit der Timer jeweils zählen muss. Dann wird
der Compare-Match des Timers um genau diesen Wert in der ISR weiter
gestellt. Pünktlich nach Ablauf der Zeit meldet sich der Timer wieder
mit einem Interrupt und man setzt den nächsten Wert.
In Summe war das viel einfacher, als ich ursprünglich angenommen hatte.
Wie das konkret bei deinem µC funktioniert, kann ich mangels Wissen über
deinen µC nicht sagen. Ich denke allerdings, dass er ähnliche
Funktionalität bereit stellt. Mehr als einen Compare-Match, der einen
Interrupt auslöst, benötigt man hardwareseitig ja nicht.