DoubleBuffered OCR von Timer/Counter0 und OC0

OP #335413
Lesenswert?

Hallo alle zusammen.

Ich schreibe zur Zeit einen Simulator für einen ATMega16, um damit den
Statespace für einen Model Checker aufzubauen. Aus der Dokumentation
von Atmel habe ich eigentlich fast alles, was ich brauche, aber ein
paar Dinge sind mir noch nicht wirklich endgültig klar:

Wenn der Timer0 in PWM-Modus ist, dann ist das OCR gepuffert, um das
PWM-Signal symetrisch zu halten. Ich gehe davon aus, dass der Puffer
nicht nur bei TOP bzw BOTTOM übertragen wird, sondern auch, wenn der
Timer0 den PWM-Modus verlässt, aber das steht nicht explizit in der
Doku. Ebenso steht in der Doku nicht drin, dass der aktuelle Wert des
OCR in den Puffer geschrieben wird, wenn der Timer0 in PWM-Modus geht.
Außerdem gehe ich davon aus, dass der Timer0 ein internes Bit hat, in
dem er den Wert für OC0 speichert, dass dann (bei passendem COM) über
PVOE/PVOV den Port überschreibt, dass dieses Bit mit 0 initialisiert
wird und dass es sich nur durch FOC oder Output-Compare-Matches
ändert.

Ich brauche jetzt keine dummen Kommentare, sondern würde gerne etwas
Feedback von jemandem bekommen, der es weiß!

Vielen Dank
Volker Kamin
Gast #335414
Lesenswert?

Eine PWM hat grundsätzlich einen Tiefpaß nachgeschaltet, um das
Analogsignal zu erzeugen. Sei es ein RC-Tiefpaß oder die Trägheit des
Auges oder die mechanische Trägheit eines Motors.

Anders gesagt, es interessiert keinen, wie sich eine PWM beim
Einschalten verhält, Hauptsache es wird der gewünschte Analogwert
erreicht.
Und ich kenne keine Anwendung, die ständig zwischen PWM und Timer hin
und her schaltet. Wenn ich eine PWM brauche, dann doch für die gesamte
Programmlaufzeit.


Wenn es Dich aber doch interessiert, wird Dir wohl nichts anderes übrig
bleiben, als es selber auszuprobieren.

Ich würde dabei auch nicht darauf vertrauen, daß der Simulator es
richtig macht, man sollte schon einen echten AVR nehmen.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren