ATmega324p - PWM

OP #1677078
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.
Gast #1677096
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
Gast #1677149
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
Gast #1677156
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
Gast #1677204
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

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