mikrocontroller.net

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


Autor: Mario M. (mariom)
Datum:

Bewertung
0 lesenswert
nicht 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:
//Set up PWM-Timer2: 
  TCCR2 |= ((1<<WGM21) | (1<<WGM20) | (1<<COM21)); //Fast PWM, non-inverting
  OCR2 = 128;
  TCCR2 |= (1<<CS22); //Start Timer2, Prescaler = 64

  //Set up PWM-Timer1:
  TCCR1A |= ((1<<COM1A1) | (1<<COM1B1) | (1<<WGM12) | (1<<WGM10)); //Fast PWM, non-inverting, 8-Bit
  OCR1A = 128;
  OCR1B = 128;
  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

Autor: joergderxte_gast (Gast)
Datum:

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

Autor: Mario M. (muraer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tschack.... Dankesehr! :)

Gruss
Mario

Autor: Mario M. (muraer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: joergderxte_gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

~

Autor: Mario M. (muraer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tiiptop! :)
Gruss und noch einen schönen Abend

Mario

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.