mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage integrierte PWM


Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Verständnisfrage zum integrierten PWM-Counter bei den
AVR-Prozessoren

Der Counter inkrementiert und dekrementiert den Zählerwert bis zum
eingestellten Max solange der Counter aktiv ist.

Beim erreichen des Wertes im Compare Register wechselt der zugehörige
Port automatisch von H nach L oder umgekehrt.
Entstehen dadurch Unterbrechnungen / Verzögerungen im Hauptprogramm
oder kann man diesen Counter als autark betrachten.

Muss der Zähler unterbrochen werden um den Wert im Compare-Register zu
verändern oder kann das während des laufenden Zählers erfolgen?

Autor: schlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Hardware PWM Generator läuft völlig autark mit der eingestellten
Periode und dem Dutycycle, solange, bis er von dem Programm gestoppt
wird. Es entsteht keine Prozessorlast

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Muss der Zähler unterbrochen werden um den Wert im Compare-Register >zu
verändern oder kann das während des laufenden Zählers erfolgen?

Nein. Allerdings kann es zu interessanten Effekten kommen, wenn der
neue Vergleichswert schon überschritten wurde.

Autor: skragan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"interessante Effekte" können z.b. das abrauchen von endstufen sein
:o)

Autor: Qwerty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Datenblatt wird der OCR-Wert aber doch gelatcht und dann
synchronisiert übernommen, oder? Zitat:

"Note that in the PWM mode, the 10 least significant OCR1A bits, when
written, are transferred to a temporary location. They are latched when
Timer/Counter1 reaches TOP. This prevents the occurrence of odd-length
PWM pulses (glitches) in the event of an unsynchronized OCR1A write."

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Laut Datenblatt wird der OCR-Wert aber doch gelatcht

Schon, aber das beseitigt nicht alle Probleme.
Wenn du den OCR Wert kleiner machst und der aktuelle Counter Stand
aber schon größer als der neue OCR Wert ist, dann zählt der
Counter munter bis zum Overflow weiter.

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
< munter bis zum Overflow weiter. >
und von da dann wider zurück?

Was färe dann falsch? Der Impuls sollte in diesem Fall ja länger
werden, und so wird er etwas länger als der vorhergehende und nicht
ganz so lang wie der nächste? oder verstehe ich was falsch?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kommt auf den PWM-Modus an:
Beim CTC- und OC-Modus würde der Timer komplett durchlaufen und erst
nach einem Überlauf auf den neuen Wert reagieren.
Beim Phase-Correct-Mode vermutlich auch.
Die damit zusammenhängenden Probleme sind aber auch im Datenblatt
beschrieben (PWM-Modi...).

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In den PWM-Betriebsarten sollte so was eigentlich gar nicht passieren
können (es sei denn, ich habe im Datenblatt etwas falsch verstanden
oder übersehen). Das Compare-Register und der TOP-Wert (unabhängig
davon, wo der steht) wird beim Erreichen von TOP aktualisiert, d.h. in
dem Moment, in dem entweder (Betriebsart Fast PWM) das Zählregister auf
Null zurückgesetzt wird oder (Betriebsart Phase Correct PWM) der Zähler
seine Zählrichtung umkehrt. Probleme kann es eigentlich nur dann geben,
wenn man im CTC-Modus arbeitet.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was färe dann falsch? Der Impuls sollte in diesem Fall ja länger
> werden, und so wird er etwas länger als der vorhergehende und nicht
> ganz so lang wie der nächste?

Ich sag mal so:

Wenn ich eine 16 bit PWM laufen habe und ich verringere
den Wert von 800 auf 400 und als Folge davon generiert
mir die Hardware einen Puls der Länge 65936, dann könnte
ich mir schon vorstellen, dass das je nach Anwendung der
PWM zu Problemen führen kann. Das ist immerhin eine
Überschreitung um das 164-fache.

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
???
Ich habe das so verstanden, das es 2 Register gibt die beschrieben
werden müssen.
Das eine als oberer Grenzwert bis zu dem der Zähler zählt um dann
wieder umzukehren und zu 0 zurückzuzählen
Das zweite ist das Compare register an dem der Port von L nach H oder
umgekehrt schaltet?
Um die Impulslänge zu verändern werde ich doch in der Regel nur den
Wert des Compare-Registers ändern, also den Zeitpunkt der Umschaltung,
nicht Würde ich den Wert den oberen Grenzwertes ändern, wäre ja neben
der Impulsbreite auch die Frequenz verändert und das ist doch nicht
Sinn der Sache oder?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johnny: Hast mal wieder Recht.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul:
Net ganz. Habe grad noch mal genauer nachgelesen: Wenn man einen
PWM-Modus benutzt, der das Capture-Register ICRx als TOP-Value nutzt,
kann es schief gehen, weil das nicht gepuffert wird! Das ist aber
anscheinend die einzige Ausnahme...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das eine als oberer Grenzwert bis zu dem der Zähler zählt um dann
>wieder umzukehren und zu 0 zurückzuzählen
>Das zweite ist das Compare register an dem der Port von L nach H oder
>umgekehrt schaltet?

Das nennt Atmel "Phase-Correct-Mode".
Die o.g. Probleme gibt es beim CTC-Mode oder wie Johnny schon meinte,
wenn man das ungepufferte ICP-Register als TOP benutzt.
Allerdings ändert man die Grenzwerte ja eher selten, wenn man mit einer
konstanten PWM-Frequenz arbeitet, die ja durch TOP und BOTTOM festgelegt
wird.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@flyingwolf:
Richtig, es gibt in einigen PWM-Modi (nämlich in denen, die keinen
festen TOP-Wert haben) zwei Werte, die man setzen muss. Allerdings wird
man in den meisten Anwendungsfällen (mal abgesehen von
Audio-Anwendungen) die PWM-Frequenz (und damit den TOP-Wert) konstant
lassen. Dann braucht man sich nur noch um das Tastverhältnis zu
kümmern, das mit dem entsprechenden Compare-Register eingestellt wird.
Und wie oben schon angedeutet, kann das weiter oben beschriebene
Problem mit dem Überlauf dann auftreten, wenn der TOP-Wert im
(ungepufferten) ICR-Register steht. Wenn man einen PWM-Modus mit festem
TOP-Wert (also 8-, 9- oder 10-Bit-PWM) oder einen mit OCRxy als TOP
nutzt, dann kann das Problem prinzipiell nicht auftreten.

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mal abgesehen von Audio-Anwendungen

Wo finde ich was zu dem Thema?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab hier in letzter Zeit mehrere Threads gesehen, wo Leute (anscheinend)
irgendwelche Audiosignale per PWM generieren wollen. Dabei könnte ich
mir zumindest vorstellen, dass es u.U. Sinn macht, während der
laufenden Anwendung Änderungen an der Frequenz vorzunehmen... (nur so
ne Vermutung)

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.