Forum: Mikrocontroller und Digitale Elektronik nochmal PWM erzeugung


von Ingo L. (grobian)


Lesenswert?

Für die Erzeugung eines PWM Sigmals gibt es ja beim AVR mehrere 
Möglichkeiten
Der Phase Correct PWM Mode...
...wobei hier der Zähler immer wieder von 0 nach MAX und dann von MAX 
nach 0 zählt.

Im noninverting Compare Output mode, wird beim heraufzählen der Output 
Compare (OC) gelöscht, und beim herunterzählen wird Output Compare 
gesetzt. Ausschlaggebend ist der Vergleich (Compare-Match) zwischen 
TCNTn-Register (hier ist der aktuelle Zählerstand der Timers)  und 
OCRn-Register (hier kommt der PWM-Wert rein).

Im inverting Compare Output-Modus, wird der Vorgang umgekehrt, also beim 
heraufzählen wird das Output Compare (OC) bei Übereinstimmung von 
TCNTn-Register und OCRn-Register (Compare-Match) gesetzt und beim 
herunterzählen (beim Compare-Match) gelöscht.


...und der Fast PWM Mode

Hierbei zählt der Timer immer von Null an aufwärts, bis der Maximalwert 
erreicht ist. Danach fängt er wieder von vorne bei Null an.
Den gewünschten  PWM-Ausgangswert lege ich wieder im OCRn-Register ab.
Beim Compare-Match wird wieder der OC je nach Einstellung gelöscht oder 
gesetzt.

Welche Betriebsart nehme ich jetzt für die Erzeugung einer Wave am 
entsprechendem Ausgang.

von Simon K. (simon) Benutzerseite


Lesenswert?

Du hast das Prinzip schon richtig verstanden, aber deine Frage macht 
keinen Sinn.

Es kommt auf den Anwendungszweck an, denn der Phase Correct mode 
erzeugte (wie der Name halt sagt) IMMER ein Phasenkorrektes Signal, 
AUCH, wenn man den PWM Wert ändert, ändert sich nicht der Phasenwinkel 
und somit ist die Frequenz dauerhaft konstant.

Beim Fast Mode hast du halt eine höhere Ausgangsfrequenz, aber bei jeder 
PWM Änderung hat man unter Umständen eine Periodendauer lang eine andere 
Frequenz am Ausgang oder sogar starke glitches/spikes.

Ich finde das im Datenblatt eigentlich recht gut erklärt. Muss man halt 
auch mal das Gehirn anschalten und darüber nachdenken ;)

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.