-
-
Erfahrener Benutzer
Robotik Einstein
Ich würde sowas per Software PWM machen.
Dazu würde ich den Timer 0 oder 2 frei laufen lassen und zwar mit Prescaler /1 oder /8.
16MHz Taktfrequenz wären Empfehlenswert.
Im Timer Overflow Interrupt wird ein weiteres Register hochgezählt.
Wenn der Wert des Überlaufregister einen der 3 Timer Sollwerte ( = deine 3 Farben ) Überschreitet wird der entsprechende Ausgang low geschaltet.
Geht der Überlaufzähler wieder auf 0 werden alle Ausgänge deren Sollwert nicht 0 sind wieder eingeschaltet.
Die Vergleiche und das setzen der Ports, werden im Timer Overflow Interrupt gemacht.
Diese Art der PWM Erzeugung belastet den ATMEGA 8 ziemlich stark.
Bei Taktteiler /1 wird alle 256 Takte ein Timer Overflow Interrupt ausgelöst.
Die Interrupt Routine muss also so kurz wie möglich, am Besten in Assembler geschrieben sein. Bei Takteiler /8 entschärft sich die Lage etwas, es wird nur alle 2048 Prozessortakte ein Interrupt ausgelöst.
Bei /1 komm ich auf eine PWM Frequenz von 122 Hz. Bei /8 komm ich auf 15 Hz ( = eigentlich zu wenig ) bei einem 16MHz Quarz.
Die RGB Werte können in der Hauptroutine in die entsprechenden Register ( bzw. RAM Speicherplätze ) eingeschrieben werden.
Es sind dann die Werte 0...255 = 256 Werte möglich.
Weitere Interruptroutinen sollten auf jeden Fall vermieden werden.
Eine andere Stategie wäre die RGB Werte nach ihrem Wert zu sortieren und den nächsten Wert in das Comparematch Register einzutragen.
Dabei wären dann nur 4 Interrupts ( 3* Comparematch + 1*Overflow ) nötig.
Diese Art der PWM Erzeugung wäre meine erste Wahl, wenn ich noch andere Interrupts laufen habe.
Sind aber 2 Werte recht eng beieinander z.b. rot = 2, grün = 3, und der Controller hält sich zu lange in einer anderen Interruptroutine auf, kann der Comparematchinterrupt für grün verschluckt werden.
Das Setzen und Löschen der Ports findet auch hier auf Softwareebene statt.
Also auch hier sind die Interrupts so kurz wie nur irgend möglich zu halten.
Das Thema Software PWM wurde hier im Forum schon zig mal behandelt, schau halt mal mit der Suchfunktion noch ein wenig rum.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen