Forum: Mikrocontroller und Digitale Elektronik Gleichzeitig Overflow + PWM


von Sam F. (fm85)


Lesenswert?

Hallo,

ich habe einen Mega644 und benutze den Timer1 um alle 25ms mittels des 
Overflow Interrupts einen Aktion auszuführen.
1
  TCCR1A = 0;
2
  TCCR1B |= (1<<CS12);// prescaler 256
3
  TCNT1 = 0xF3CB;    // 25ms OVF @16MHz    
4
  TIMSK1 |= (1<<TOIE1);

Leider habe ich hardwaretechnisch an die Verwendung von Timer1 zur PWM 
Erzeugung gebunden, daher meine Frage ob es möglich ist gleichzeitig ein 
PWM Signal an OC1A zu erzuegen? Welcher PWM Modus ist dafür am 
geeignetsten?

Vielen Dank schon mal und Grüße!

von Christopher G. (cbg)


Lesenswert?

Ja, du kannst PWM erzeugen und gleichzeitig die Overflow ISR verwenden.

von Sam F. (fm85)


Lesenswert?

Das habe ich so:
1
TCCR1A |= (1<<COM1A1) | (1<<WGM10);
2
TCCR1B |= (1<<CS12);              // prescaler 256
3
TCNT1 = 0xF3CB;                     // 25ms OVF @16MHz    
4
TIMSK1 |= (1<<TOIE1);
5
OCR1A  = 0xF3DB;

versucht. Dadurch stimmen meine 25ms aber nicht mehr.

von Falk B. (falk)


Lesenswert?

@  Sam Fischer (fm85)

>Erzeugung gebunden, daher meine Frage ob es möglich ist gleichzeitig ein
>PWM Signal an OC1A zu erzuegen?

Ja. Aber das hat dann 1/25ms = 40 Hz. Wenn dir das zu niedrig ist, musst 
du eine höhere PWM-Freqeunz erzeugen und per Software nur jeden Xten 
Overflow zur Berechung nutztn.

> Welcher PWM Modus ist dafür am geeignetsten?

Fast alle.

MFG
Falk

von Christopher G. (cbg)


Lesenswert?

Nimm lieber ICR1 als TOP wenns noch frei is und rechne dir den nötigen 
TOP Wert aus. Sonst musst du natürlich jedes mal im Overflow auch das 
TCNT1 Register vorladen.

von Sam F. (fm85)


Lesenswert?

40Hz könnten noch gehen, ich will nur eine LED in der Helligkeit 
steuern. Was mir gerade nur suspekt vorkommt ist die Tatsache dass mein 
Timer jetzt scheinbar viel schneller läuft als vorher. Dabei habe ich 
nur die Zeile
1
TCCR1A |= (1<<COM1A1) | (1<<WGM10);

eingefügt.

Das mit dem ICR1 stimmt natürlich. Im moment lade ich immer TCNT1 neu 
wie du gesagt hast.

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.