Forum: Mikrocontroller und Digitale Elektronik ATmega324p - PWM


von Myjestic E. (myjestic)


Lesenswert?

Hi,

jetzt "wurste" ich mich schon seit geraumer Zeit durch diverse Beiträge 
und das Datenblatt, komme aber leider nicht so recht ans Ziel.

Controller: ATmega324P
Takt: 14745600 Hz

Ich will ein Hardware-PWM-Signal mit einer Frequenz von 5kHz erzeugen.
Das Ganze soll auf PB4 ausgegeben werden.

Könnt Ihr mir bitte anhand eines Beispielcodes zeigen wie die Register 
zu setzen sind?

Vielen Dank schonmal.

von spess53 (Gast)


Lesenswert?

Hi

Programmiersprache wäre auch interessant.

Problematisch ist deine gewünscht Frequenz. Mit dem 8-Bit-Timer und und 
deinem Prozessortakt lassen sich in der Grössenordnung bei voller 
PWM-Auflösung nur 1,8kHz und 7,2kHz erzeugen. 5kHz geht nur mit 
verringerter Auflösung (91 Stufen).

MfG Spess

von Myjestic E. (myjestic)


Lesenswert?

Sorry,

AVR Studio GCC.

Mit 91 Stufen würde ich auf alle Fälle auskommen.

von spess53 (Gast)


Lesenswert?

Hi

TCCR0A = 1<<COM0B1|1<<WGM00

TCCR0B = 1<<WGM02|1<<CS01

OCR0A = 0x5C

OCR0B = 0x00...0x5C

-Vorteiler 8

-Mode5 PWM, Phase Correct

-Clear OC0B on Compare Match when up-counting. Set OC0B on Compare Match 
when
 down-counting.

Wenn ich mich nicht verlesen habe sollte das passen. Syntax solltest du 
noch mal überprüfen da meine C-Kenntnisse minimal sind.

MfG Spess

von Myjestic E. (myjestic)


Lesenswert?

Kannst Du mir bitte daran erläutern, wo Du Die Frequenz des PWM-Signals 
festlegst.

Mit welchem Register lege ich dann die Pulsbreite fest?

von spess53 (Gast)


Lesenswert?

Hi

>Kannst Du mir bitte daran erläutern, wo Du Die Frequenz des PWM-Signals
>festlegst.

OCR0A

>Mit welchem Register lege ich dann die Pulsbreite fest?

OCR0B

Ein Blich ins Datenblatt schadet nicht.

MfG Spess

von Myjestic E. (myjestic)


Lesenswert?

Das habe ich getan, leider blieb bei meiner Registerkonfiguration die 
Änderung OCR0A ohne Auswirkung.

Jetzt geht es.

Allerdings muss OCR0A = 185 sein damit ich auf 5kHz komme.

Wie berechnet sich das nun? Ich will es ja auch verstehen. Danke 
schonmal soweit.

von spess53 (Gast)


Lesenswert?

Hi

>Allerdings muss OCR0A = 185 sein damit ich auf 5kHz komme.

Stimmt. Ich hatte mit Fast PWM gerechnet.

>Wie berechnet sich das nun? Ich will es ja auch verstehen. Danke
>schonmal soweit.

Das Datenblatt ist an dieser Stelle etwas unvollständig. Die Formeln für 
die PWM-Frequenz gelten nur für einen Topwert von 255. Für Phase Correct 
PWM kannst du aber die Formel für CTC verwenden.

MfG Spess

von Myjestic E. (myjestic)


Lesenswert?

Danke Du hast mir sehr geholfen! :-)

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.