Forum: Mikrocontroller und Digitale Elektronik ATmega8535 - PWM frequenz von Timer1/Timer2 unterschiedlich


von Mario M. (Gast)


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

von joergderxte_gast (Gast)


Lesenswert?

Schau mal in welchem Register "WGM12" tatsächlich ist (Tipp: TCCR1B).
/Klugscheiß

von Mario M. (muraer)


Lesenswert?

Tschack.... Dankesehr! :)

Gruss
Mario

von Mario M. (muraer)


Lesenswert?

Hmm, noch ne Nachfrage - Warum hat der Compiler nicht gemotzt? (AVR-GCC)
Weiss der nur, dass das WGM12-Bit das x-te Bit ist? Also ist WGM12 nur 
ein Synonym für eine Ziffer?

von joergderxte_gast (Gast)


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.

von Sinusgeek (Gast)


Lesenswert?

> Also ist WGM12 nur
> ein Synonym für eine Ziffer?

Genau, eine Bitnummer, und die passt zu jedem Byte, auch zu denen, wo 
sie nicht hingehört. ;-)

~

von Mario M. (muraer)


Lesenswert?

Tiiptop! :)
Gruss und noch einen schönen Abend

Mario

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.