Forum: Mikrocontroller und Digitale Elektronik Atmega Fast PWM


von Lukas S. (Firma: TU München) (lukas_07)


Lesenswert?

Hallo,

ich bin aktuell mit der Ansteuerung eines Motors beschäftigt und setze 
mich deshalb mit PWM auseinander. Ich arbeite mit einem Atmega164PA.

Mit den Fast PWM Modi komme ich zurecht mit Ausnahme des Modus 15 bei 
dem das Register OCR1A zur Definition des TOP Werts des Counters 
verwendet wird.

Normalerweise wird OCR1A verwendet um den Vergleichswert einzustellen 
und der TOP Wert des Counters ist fest.

Mir fehlt also im Modus 15 sozusagen die Möglichkeit einen 
Vergleichswert einzustellen da das Register schon benutzt wird um den 
TOP Wert einzustellen. Mir ist also nicht klar wie ich die Pulsbreite in 
diesem Modus regulieren kann (außer 100%, 50% und 0%).

Ich hoffe ich habe mich nicht zu umständlich ausgedrückt.

Vielen Dank und liebe Grüße.

von julian (Gast)


Lesenswert?

Lukas S. schrieb:
> Normalerweise wird OCR1A verwendet um den Vergleichswert einzustellen

und OCR1B

> Mir fehlt also im Modus 15 sozusagen die Möglichkeit einen
> Vergleichswert einzustellen da das Register schon benutzt wird um den
> TOP Wert einzustellen. Mir ist also nicht klar wie ich die Pulsbreite in
> diesem Modus regulieren kann (außer 100%, 50% und 0%).

Nur noch mit OCR1B auf OC1B Ausgang

von THOR (Gast)


Lesenswert?

Lukas S. schrieb:
> Mir fehlt also im Modus 15 sozusagen die Möglichkeit einen
> Vergleichswert einzustellen da das Register schon benutzt wird um den
> TOP Wert einzustellen. Mir ist also nicht klar wie ich die Pulsbreite in
> diesem Modus regulieren kann (außer 100%, 50% und 0%).

Gar nicht, der Modus ist eigentlich gar keine PWM mehr. Bei 14 kannst du 
mit ICR den TOP-Wert einstellen und mit OCR1x den Vergleichswert, hast 
also Kontrolle über Frequenz und Duty Cycle.

Bei Modus 15 hast du nur Kontrolle über die Frequenz weil der Timer ja 
auf 0 springt sobald TOP erreicht wurde.

Du kannst also OC1x setzen, löschen oder toggeln. Toggeln ergibt 50% 
Duty und setzen/löschen entweder 100% oder kurze Nadelpulse, das weiss 
ich so grad nicht.

Modus 15 kannst du für ne FSK verwenden.

von c-hater (Gast)


Lesenswert?

THOR schrieb:

> Gar nicht, der Modus ist eigentlich gar keine PWM mehr.

Blödsinn, natürlich ist das PWM.

> Bei Modus 15 hast du nur Kontrolle über die Frequenz weil der Timer ja
> auf 0 springt sobald TOP erreicht wurde.

Du hast definitiv das Konzept der Timer nicht begriffen. Es hängt vom 
Timer-Modus ab, was man kontrollieren kann. Je nach Modus kann man mal 
die Frequenz kontrollieren (also über Taktquelle und Prescaler hinaus) 
und mal nicht, hat dafür aber mehr PWM-Kanäle zur Verfügung.

Wie das genau umgesetzt ist, hängt vom konkreten Device und Timer ab. 
Der Pferdefuss ist halt, dass immer nur eine begrenzte Zahl von 
Hardwareregistern im Timer existieren und diese je nach Modus 
unterschiedlich verwendet werden können. Mal ist OCRA halt ein Register, 
welches den Duty von PWM-Kanal A steuert, mal ist es ein Register, 
welches die PWM-Frequenz steuert. Dann steht halt Kanal A nicht als 
PWM-Kanal zur Verfügung.

Jedem, der Datenblätter lesen kann, wird das unmittelbar klar. Indem man 
es (bzw. sie) einfach nur mal liest...

von Lukas S. (Firma: TU München) (lukas_07)


Lesenswert?

Mit dem Datenblatt beschäftige ich mich durchaus.

Also kann man sagen dass ich im Modus 15 OCR1A als Output für das PWM 
Signal "verliere" aber den einen Motor problemlos mit dem Signal von 
OCR1B steuern kann?

von Falk B. (falk)


Lesenswert?

Ja

von Thomas E. (thomase)


Lesenswert?

Ja. Wobei beim Timer1 die Frequenz auch mit dem ICR eingestellt werden 
kann. Dann steht auch das OCR1A wieder für PWM zur Verfügung. Das ist 
allerdings nicht dasselbe wenn im Betrieb nicht nur der Duty, sondern 
auch die Frequenz verändert werden soll.

von Lukas S. (Firma: TU München) (lukas_07)


Lesenswert?

Okay vielen Dank mehr muss ich für meine Anwendung erstmal auch nicht 
wissen

von c-hater (Gast)


Lesenswert?

Lukas S. schrieb:

> Mit dem Datenblatt beschäftige ich mich durchaus.

Ich nehme zu deinen Gunsten an, dass das die Wahrheit ist. Dann hast du 
dich aber definitiv nicht intensiv genug damit beschäftigt...

Diese AVR8-Timer sind nun wirklich recht primitive Hardware. Was willst 
du machen, wenn du mal richtig potente µC-Peripherie programmieren 
musst? Wieder heulend hier im Forum aufschlagen?

Also mir wäre das irgendwie peinlich. Na klar, niemand kann alles wissen 
und bei komplexerer funktionsreicher Hardware gibt es trotz DB und ANs 
nicht selten Aspekte, die durch die Dokumentation nicht hinreichend 
beleuchtet werden, weil auch diese Werke nur von Menschen verfasst 
werden, und diese eben nur die "übliche" Nutzung der Hardware im Kopf 
hatten.

Aber wie schon gesagt: AVR8-Timer sind absolut triviales Zeug. Alles, 
was man dazu wissen muss, kann man problemlos aus den verfügbaren 
Quellen eruieren. Man muss es nur tatsächlich auch wollen...

Beitrag #4951048 wurde von einem Moderator gelöscht.
von julian (Gast)


Lesenswert?

THOR schrieb:
> Gar nicht, der Modus ist eigentlich gar keine PWM mehr. Bei 14 kannst du
> mit ICR den TOP-Wert einstellen und mit OCR1x den Vergleichswert, hast
> also Kontrolle über Frequenz und Duty Cycle.
>
> Bei Modus 15 hast du nur Kontrolle über die Frequenz weil der Timer ja
> auf 0 springt sobald TOP erreicht wurde.
>
> Du kannst also OC1x setzen, löschen oder toggeln. Toggeln ergibt 50%
> Duty und setzen/löschen entweder 100% oder kurze Nadelpulse, das weiss
> ich so grad nicht.

Noch einer, der das Datenblatt lesen sollte.


> Modus 15 kannst du für ne FSK verwenden.

Was auch immer du mit FSK meinst.

von Falk B. (falk)


Lesenswert?

FSK = frequency shift keying, aka Frequenzmodulation

Beitrag #4951109 wurde von einem Moderator gelöscht.
Beitrag #4951339 wurde von einem Moderator gelöscht.
Beitrag #4951344 wurde von einem Moderator gelöscht.
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.