Liste der Anhänge anzeigen (Anzahl: 1)
Pseudo PWM
Nun ja, pseudo PWM, weil es sich nicht um eine richtige Puls-Weiten-Modulation handelt.
Ich lasse das programm mit allen Steueraufgaben einfach immer wieder durchlaufen und vergleiche am ende einen Zähler mit meinem Vorgabewert für die Farbe. (RGB - Steuerung)
Ist der zähler höher als der Wert, leuchtet die jeweilige LED nicht, bei niedrigerem Wert leuchtet sie.
soweit Wäre es ja eine PWM.
Nun wollte ich aber den Strom besser über die Periode verteilen.
Deshalb wird der Zähler nicht um eins erhöht, sondern immer um 12 vor jeder einzelnen Farbe, und am schluss nochmal um 1, damit bei 256 durchläufen auch alle werte je farbe genau einmal erreicht werden.
also:
Anfang:
.
.
.
Zähler=Zähler+12;
Vergleich mit Rot; -> Leuchtet oder nicht
Zähler=Zähler+12;
Vergleich mit Grün; -> Leuchtet oder nicht
Zähler=Zähler+12;
Vergleich mit Blau; -> Leuchtet oder nicht
Zähler++;
goto Anfang
Die Frequenzen habe ich nicht genau bestimmt.
Da ich viele Abfragen und so weiter im Programm habe (ca 450 anweisungen im HEX-File), waren für einen Flimmerfreien Betrieb die 4MHz, die ich anfangs genutzt habe zu wenig. (hat leicht im unteren Helligkeits-Viertel geflimmert)
Deshalb bin ich auf ein 20MHz quarz umgestiegen und da flimmert nix mehr.
Aber wie gesagt, genaue frequenzen...
mal durchrechnen...
Bei einer Helligkeit von 1 (genau 1/256 der Periode an) siht das wohl so aus:
f=20000000/4 (interner Takt) für eine anweisung.
bei 450 Anweisungen wären das dann je Durchlauf:
5000000/450 = 11111.11111 HZ.
Jetzt braucht man 256 Durchläufe für eine Periode...
11111.11111/256 = 43.403 HZ
beträgt nun die Helligkeit 2/256 hat man dann fast die doppelte Frequenz.
Bei 3/256 fast die dreifache...
Bei höheren helligkeiten verteilen sich dann die ON-Zeiten immer gleichmäßiger, jedoch nicht exakt gleichmäßig.
Ich hänge mal ein EXCEL-Tabellchen dran, das meine PWM etwas verdeutlicht.