Hallo zusammen,
Ich beschäftige mich gerade das erste mal mit PWM und möchte via PWM
eine LED dimmen, habe aber keine Timer mehr frei! Also dachte ich, ich
versuch es über einen Umweg: ein Timer erzeugt einen 10ms Takt und zählt
mit einer Periode von ca 73us immer von 136 auf 255. Diesen Timer
verwende ich auch für die PWM. Ich habe zum Test in der main ein paar
Zeilen geschrieben die die LED dimmen sollen
1 | if((TCNT0 >= 119) && (TCNT0 < 139))
|
2 | {
|
3 | PORT1 |= (1<<OUT8); //aktiviere Ausgang vorübergehend
|
4 | }
|
5 | else
|
6 | {
|
7 | PORT1 &= ~(1<<OUT8); //lösche Ausgang
|
8 | }
|
(139-119)*73us ergibt hier eine High Phase von ca 1,5ms (PWM Periode
10ms).
Die LED dimmt zwar schon aber flackert stark und lässt sich nicht weit
runter dimmen, sie ist irgendwann ganz aus. Je höher man dimmt (je
heller...) desto weniger flackert es auch.
Woran könnte das liegen? Wo ist der Denkfehler?