* Zefiro Zefiro@Zefiro.de [2005-09-02 11:53]:
fkcd> Wofuer einen Prescaler? Bei 256 "echten" Farbstufen, also mit einer fkcd> Gamma-Korrektur von zb. 2, komme ich bei 16 MHz auf die Abstande zwischen fkcd> zwei Zeitschlitze von 2, 7, 12, 17, 22, 27, usw. Wir reden von Taktzyklen? In dem Fall würde mich wirklich sehr interessieren wie ihr in <10 Taktzyklen drei Farben separat setzt, inklusive einem Fading-Effekt.
movw XH:XL, tpH:tpL ldd output X+ out PortB, output
wobei tp auf einen Tabelleneintrag zeigt, der die Bitmaske der in diesem Zeitschlitz aktiven LEDs enthält. Diese Tabelle wird im Hauptprogramm für jeden Zyklus vorberechnet (also hundertmal pro Sekunde), wenn genug Zeit da ist.
Der nächste Zeitschlitz wird danach unabhängig davon ausgewählt, ob in diesem überhaupt eine Veränderung stattfindet.
Der Trick ist im Prinzip, dass im Timer-Interrupt nur noch die Ausgänge gesetzt werden, die eigentliche Arbeit aber außerhalb stattfindet.
Ich gehe davon aus Kommunikation über I2C und RS232 findet im Interrupt statt, verfälscht also das Timing entsprechend (minimal).
Ja, allerdings nur für den jeweils nächsten Zeitschlitz. Deshalb sind die Kommunikationsinterrupts im zeitkritischen Abschnitt deaktiviert (unschöne Lichtblitze).
Für meinen Bedarf wird das wohl zu eng werden - mein MoodCluster steuert 15 Kanäle (5 Würfel à 3 Farben) voneinander unabhängig an. Ich gebe allerdings zu daß ich bisher nur ein C-Programm verwendet habe und bei 8MHz gerade eben so 5Bit Auflösung hinkriegte.
Unser derzeitiger PWM-Code könnte ohne Änderung 8 LEDs mit 8 Bit Farbauflösung ansteuern. 16 LEDs sollten sich auch realisieren lassen, wird dann allerdings etwas eng im RAM.