Forum: Mikrocontroller und Digitale Elektronik Avr Atmega 88PA: MAX-Wert des Timers im Fast PWM Mode wird ignoriert


von Rapha (Gast)


Lesenswert?

Hallo liebes Forum,

ich versuche derzeit erfolglos den Timer0 bei einem Atmega88 im Fast PWM 
Modus 7 mit benutzerdefiniertem Maximalwert einzustellen.
Der Timer ignoriert meinen im OCR0A-Register eingestellten Maximalwert 
einfach, und zählt bis 255 durch.

Hier mein Quellcode:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  DDRD  |=  1<<PD5;                             //  Port mit LED auf Ausgang schalten
6
  OCR0A  =  20;                                 //  MAX-Wert des Timers
7
  OCR0B  =  10;                                 //  COMPARE-Wert
8
  TCCR0A  |=  (1<<WGM02)|(1<<WGM01)|(1<<WGM00)  //  Timer auf FAST PWM mit OCR0A als MAX (MODE 7)
9
  TCCR0A  |=  (1<<COM0B1)|(0<<COM0B0)           //  Lösche OCB0 bei Compare Match
10
  TCCR0B  |=  (0<<CS02)|(0<<CS01)|(1<<CS00);    //  Timer-Frequenz = F_CPU
11
  
12
  while(1)
13
    {
14
     __asm("nop");                  // Hilfsbefehl für Break-Point im Simulator
15
    }
16
}

Im CTC Modus zählt der Timer ordnungsgemäß bis zum eingestellten 
Maximalwert.
Weiß jemand Rat? Danke für eure Hilfe.

Link zum Datenblatt: 
http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

von holger (Gast)


Lesenswert?

>  TCCR0A  |=  (1<<WGM02)|(1<<WGM01)|(1<<WGM00)  //  Timer auf FAST PWM mit >OCR0A 
als MAX (MODE 7)


WGM02 existiert NICHT in TCCR0A.

von Rapha (Gast)


Lesenswert?

Vielen vielen Dank Holger, jetzt klappts.
Hab den ganzen Mittag verzweifelt den Fehler gesucht, aber einfach 
nichts gefunden. War schon kurz vorm Nervenzusammenbruch ;-)

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.