Prinzipiell ist es egal, ob du Software- oder Hardware-PWM nimmst. Wenn die Ansteuerung nicht stimmt, ist es weder mit der einen noch mit der anderen Methode exakt...Zitat von Bääääär
Im Endeffekt läuft du Geraden mit unterschiedlicher Steigung entlang: die x-Achse entspricht der Zeit, die y-Achse entspricht der Helligkeit bzw. dem Duty der auszugebenden PWM. Vorgegeben sind Start- und Endhelligkeit(en) der einzelnen Kanäle, Start- und Endzeit(en) sind jeweils gleich.
Weil Division teuer und zudem ungenau ist, sollte man den Einsatz geschickterer Algorithmen erwägen.
Erwähnenswert ist hier der Bresenham-Algorithmus, wie er auch zum Zeichnen von Strecken benutzt wird und zB in vielen Grafik-Chips implementiert ist. Es ist seht effizient, kommt ohne Division aus und erreicht immer exakt seine Zielkoordinaten. Auch den AVR wird's freuen, da nur addiert, subtrahiert und verglichen wird:
http://de.wikipedia.org/wiki/Bresenham-Algorithmus
Ich verwende ihn zur Zeichnen von Linien in meiner Scope-CLock, aber für deine Zwecke ist er ebenfalls hervoragend geeignet.
Lesezeichen