PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega32 und PWM



TheHawk
24.05.2008, 12:27
Kennt jemand ein verständliches Tutorial zum Programmieren der PWM beim Mega32? Oder kann mir wer anhand eines Beispielcodes erklären wie die PWM programmiert gehört?

wkrug
24.05.2008, 13:55
Die PWM gibt es beim MEGA32 nicht.

Der ATMEGA32 hat 4 PWM's wobei die OCxxx Register der einzelnen Timer/ Counter als Vergleichswert für die PWM benutzt werden.

Eine PWM ist mit Timer 0 möglich
Eine PWM ist mit Timer 2 möglich
Zwei PWM sind mit Timer 1 möglich, allerding mit den selben Einstellungen und Frequenzen.

Die Timer 0 und 2 sind jeweils 8 Bit Timer, somit sind damit auch nur PWM's mit 8 Bit Auflösung möglich.

Der Timer 1 kann als PWM mit 16 Bit aber auch im Fast PWM Mode auch mit 8, 9, oder 10 Bit laufen. Was natürlich eine Auswirkung auf die PWM Frequenz hat.

Welchen der unterschiedlichen PWM Modi ( Normal, Phase Correct, Fast ) für Dich geeignet ist, müsstest Du anhand deiner gewünschten Applikation selber entscheiden. Darum ist dieses Kapitel auch so Umfangreich.

Die komplette Dokumentation mit Grafiken und Beispielen findest Du im Datenblatt des ATMEGA 32 in der Rubrik des entsprechenden Timers.

TheHawk
24.05.2008, 14:09
Nun gut die Freuquenz soll eben so niedrig wie möglich sein.
Als Applikation hießt diese hier gedacht: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=40240
Es wird zwar später mit einem NE556 gesteuert aber zum TEst ob die Lampen träge genug sind möchte ich die PWM zuerst mit dem RN-Control erzeugen und zugleich mir Programmierkenntnisse in Assembler aneignen.

BIG Muzzy
24.05.2008, 14:15
Hallo

Ich spiel mich auch seit ein paar Tagen mit ATMega32 und PWM herum.

Wirklich geholfen hat mir dieses PDF:
http://www.tschallener.net/AVR/timer0.pdf

TheHawk
24.05.2008, 17:05
Hab mir jetzt das PDF durchgelesen, und mal f berechnet. Mit 16MHz ist die niedrigste Frequenz die cih erreichen kann 30 Hz. Sofern ich richtig gerechnet habe. Kann ich, wenn ich den internen Takt verwende die PWM Frequenz niedriger machen? Welche Frequenz hat überhaupt der interne Takt?

wkrug
24.05.2008, 19:49
Das mit den 30 Hz hab ich jetzt nicht nachgerechnet.

Ich würde aber mit einem Prescaler von 1024 auf eine PWM Frequenz von 0,1 bzw 0,2 Hz kommen je nachdem welchen Modus du verwendest.

So hab ich gerechnet:


16.000.000(Takt)/1024(Prescaler)/65536(16Bit Zähler)/2(für rauf und Runter zählen)

Ich meine das müsste stimmen. Ich denke mal Du hast mit 8 Bit für den Timer 0 bzw. 2 gerechnet.