Forum: Mikrocontroller und Digitale Elektronik PWM mit Timer2 beeinflusst Interrupt


von Martin S. (tungl)


Lesenswert?

Hallo,

mein Projekt (mit ATMega32) beinhaltet u.a. DCF77-Empfang, den ich ueber 
einen Interrupt (INT0, an PD2) realisiert habe, der auf die Flanken des 
Signals reagiert. Funktioniert soweit wunderbar.

Nun wollte ich noch eine PWM verwenden, um die Hintergrundbeleuchtung 
des Displays zu dimmen. Dazu habe ich noch den Timer2 angeschmissen:
1
  TCCR2 |= (1<<CS20);   
2
    TCCR2 |= (1<<WGM21) | (1<<WGM20); 
3
    TCCR2 |= (1<<COM21) | (0<<COM20) ; 
4
  
5
    
6
    DDRD |= (1<<PD7); 
7
8
    pwmValue = 255;
9
    OCR2 = pwmValue;

Soweit, so gut. Display leuchtet maximal (da pwmValue = 255), der 
Interrupt fuer DCF wird weiter munter gefeuert.
Aendere ich jetzt pwmValue auf irgendwas kleiner als 255, wird  hoert 
das einfach auf. Die Interrupt-Funktion wird einfach nicht mehr 
aufgerufen. (die PWM funktioniert aber wunderbar).

Hat jemand eine Idee, woran das liegen koennte?

Viele Gruesse,
Martin

Nachtrag:
Bei OCR2 = 0 funktioniert es so halbwegs, da wird der Interrupt 
zumindest manchmal ausgeloest.

von holger (Gast)


Lesenswert?

>Soweit, so gut. Display leuchtet maximal (da pwmValue = 255), der
>Interrupt fuer DCF wird weiter munter gefeuert.

Das sind 100% bzw. Dauerstrich

>Aendere ich jetzt pwmValue auf irgendwas kleiner als 255, wird  hoert
>das einfach auf. Die Interrupt-Funktion wird einfach nicht mehr
>aufgerufen. (die PWM funktioniert aber wunderbar).

>Hat jemand eine Idee, woran das liegen koennte?


Deine PWM streut in den DCF Empfänger.
Entstör den mal mit einem 100 Ohm plus 1uF am Empfänger
in der VCC Leitung.

von Martin S. (tungl)


Lesenswert?

Hallo Holger,

> Deine PWM streut in den DCF Empfänger.
> Entstör den mal mit einem 100 Ohm plus 1uF am Empfänger
> in der VCC Leitung.

Danke fuer den Tipp. Ich habe das mal schnell ausprobiert, aber leider 
hat sich an der Situation nichts geaendert.

Hat noch jemand einen Vorschlag?

von holger (Gast)


Lesenswert?

>Danke fuer den Tipp. Ich habe das mal schnell ausprobiert, aber leider
>hat sich an der Situation nichts geaendert.

Dann leg den Empfänger mal drei Meter weg von deiner
PWM Dreckschleuder.

von Thomas E. (thomase)


Lesenswert?

Martin S. schrieb:
> TCCR2 |= (1<<CS20);
Und mach mal langsamer.

mfg.

von Martin S. (tungl)


Lesenswert?

>> TCCR2 |= (1<<CS20);
> Und mach mal langsamer.

Ahhh, bestens. Schon mit einem Prescaler von 8 geht es wieder. Vielen 
Dank!

von Thomas E. (thomase)


Lesenswert?

Martin S. schrieb:
> Ahhh, bestens. Schon mit einem Prescaler von 8 geht es wieder. Vielen
> Dank!
Teil den soweit runter, dass es gerade eben nicht flackert.

mfg.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.