mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega324p - PWM


Autor: Myjestic Elek. (myjestic)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Myjestic Elek. (myjestic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,

AVR Studio GCC.

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Myjestic Elek. (myjestic)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Myjestic Elek. (myjestic)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Myjestic Elek. (myjestic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Du hast mir sehr geholfen! :-)

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.