Unruhiges LED dimmen - warum?

Gast #1936617
Lesenswert?

Hallo,

Ich experimentiere gerade mit dem dimmen von LEDs. Leider ist das ganze 
vor allem bei kurzen High Phasen des PWM Signals sehr unruhig und 
flackert. Mir ist nur nicht klar warum, da ich das ganze über den Timer2 
realisiere, der eine höhere Prio als die Interrupts von Timer1 und 
Timer0 haben, sollte das saubere Schalten des PWM Signals höhere 
Priorität haben.

Ich hab das ganze über einen Timer2 Overflow Interrupt und einen Timer2 
Compare Match am ATMEGA 168 realisiert:
1
TCCR2B   |= (1<<CS22);   // Prescale Takt / 128 (ergibt Periode 11,574us)
2
TCCR2B  &= ~(1<<CS21);  // Ergibt 2,963ms PWM Takt
3
TCCR2B  |= (1<<CS20);
4
TIMSK2 |= (1<<OCIE2A);  // Compare Match A INTERRUPT
5
TIMSK2 |= (1<<TOIE2);  // Timer2 Overflow INTERRUPT
6

7
OCR2A = 128;
8

9
ISR(TIMER2_COMPA_vect)
10
{
11
if(channelJobArray[0] == 22)
12
{
13
  //Lösche LED
14
  PORT_OUT1 &= ~(1<<OUT1);      
15
}
16
}
17

18
ISR(TIMER2_OVF_vect)
19
{
20
PORT_OUT1 |= (1<<OUT1);      
21
  
22
TCNT2 = 0;
23
}

Hat jemand eine Idee wo der Fehler liegt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren