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