Einspruch:bei 8 Bit Auflösung immer noch auf 20 MHz / 256 / 256 = 300 Hz Wiederhohlfrequenz. Flimmerfrei würden so sogar bis zu 50 LEDs gehen
Du fährst mit diesen Parametern alle 256 Taktzyklen einen Timer Overflow Interrupt, wenn Du einen der 8Bit Timer verwendest.
Das sind im Günstigsten Fall ca. 250 Assembler Befehle.
Da der Einsprung und der Aussprung ja auch Rechenzeit verbrät bleibt Dir dann für die Hauptroutine fast nichts mehr übrig.
Eine Alternative wäre es noch den 16Bit Timer im Comparematch Mode mit CTC laufen zu lassen.
Damit wäre dann die PWM Frequenz, sowie die anzahl der Takte dazwischen ( voneinander abhängig ) in weiten Grenzen einstellbar.
Hir hat auch schon jemand mal eine Rotine vorgestellt, die die einzelnen Kanäle nach ihrer Pulsbreite sortiert und den Comparematch dann von einem zum nächsten Kanal weiterschaltet.
Somit können bei einem Timerdurchlauf alle gewünschten Kanäle bedient werden. Dadurch kann mit sehr hohen Prescale Raten gearbeitet werden, was Rechenzeit für das Hauptprogramm bringt.
Lesezeichen