ATmega8535 - PWM frequenz von Timer1/Timer2 unterschiedlich

Gast #1122453
Lesenswert?

Hallo zusammen,

ich arbeite gerade mit einem ATmega8535 (intern 8MHz) und versuche 3 
HW-PWM-Kanäle zu erzeugen, welche alle mit derselben PWM-Frequenz 
arbeiten.
Ich nutze dazu den Fast-PWM Modus von Timer2 und den Fast-PWM Modus von 
Timer1 (Timer1 hat zwei Compareausgänge ==> Zwei Kanäle).
Timer1 ist auch auf 8Bit Genauigkeit eingestellt. Die Prescaler von 
Timer1 und Timer2 sind gleich. Hier der Code:
1
//Set up PWM-Timer2: 
2
  TCCR2 |= ((1<<WGM21) | (1<<WGM20) | (1<<COM21)); //Fast PWM, non-inverting
3
  OCR2 = 128;
4
  TCCR2 |= (1<<CS22); //Start Timer2, Prescaler = 64
5

6
  //Set up PWM-Timer1:
7
  TCCR1A |= ((1<<COM1A1) | (1<<COM1B1) | (1<<WGM12) | (1<<WGM10)); //Fast PWM, non-inverting, 8-Bit
8
  OCR1A = 128;
9
  OCR1B = 128;
10
  TCCR1B |= ((1<<CS11) | (1<<CS10)); //Start Timer1, Prescaler = 64

Eigentlich sollten nun alle 3 PWMs dieselbe Frequenz haben... Doch die 
Frequenz der PWM von Timer2 ist doppelt so gross wie diejenige der 
beiden PWMs von Timer1... warum?
Habe im Datenblatt keinen Hinweis gefunden - die müssten doch dieselbe 
Frequenz haben?

Gruss
Mario
Gast #1122582
Lesenswert?

> Also ist WGM12 nur ein Synonym für eine Ziffer?
Genau so ist das, ein Macro in einer Headerdatei ("iom8535.h" in diesem 
Fall - um ganz präzise zu sein).

hth, Jörg
ps.: Bevor jemand auf dumme Gedanken kommt: diese Datei wird automatisch 
eingebunden, wenn der AVR angegeben ist (im 'Studio-Project bzw. 
Makefile), die gehört nie manuell eingebunden.

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