Wie am einfachsten PWM-Frequenz eines Atmega328 ändern?

Hi Leute

Ich möchte gerne die PWM-Frequenz eines Atmega328 von 31kHz (gemessen mit Oszilloskop) auf ca. 3kHz runtersetzen, da die Frequenz für die LEDs zu hoch ist. Meine zwei Ausgänge sind an Pin 15 und 16 (PB1 und PB2). Der Prozessor ist über einen externen 16MHz Quarz getaktet. Ich weiss, dass für diese Ausgänge der Timer 1 relevant sind. Doch wie ich das im Code anpassen muss, weiss ich nicht.

Danke schon jetzt für Hilfestellungen!

Laurin

Die PWM-Frequenz kann nur auf einen von 5 bzw 7 Werten, je nach verwendeten Timer/Pins gesetzt werden.

https://playground.arduino.cc/Code/PwmFrequency

Grüße Uwe

31kHz

Das ist erstaunlich!
Da läuft was falsch bei dir, und sei es auch nur die Messung.

Wie hoch sollte denn die Basisfrequenz sein?

Hi,

manchmal steht sowas sogar in der Referenz :wink:

Gruß André

Dort wird Pin 15 und 16 jedoch nicht erwähnt..

laurin123:
Dort wird Pin 15 und 16 jedoch nicht erwähnt..

Und das gibt dir nicht zu denken?

Mir ist auch kein Hardware-PWM auf Pins A1 und A2 eines Atmega328 bekannt.

Da der TO von einem Atmega328 schreibt, nehme ich mal an daß das die Füßchen des ICs sind und nicht die Pins eines Arduino-Modells. Da entspricht Füßchen 14 und 15 den Pins 9 und 10.

Grüße Uwe

Na hoffentlich merkt die IDE das.

Aber das ist alles viel zu wenig konkret. Atmega328 sind viele, der Kode ist nicht bekannt,
die Messung ist völlig sinnfrei (PWM-Frequenz eines Atmega328 von 31kHz), etc.

Hallo,

es kann sich nur um die Verwechslung handeln in der Art der Pinummering. Bin mir sicher Laurin meint die echten µC Pin Nummern, weil das mit der PB1 und PB2 Bezeichnung übereinstimmt welche wiederum den Arduino Nummern 9 und 10 entsprechen. Geht gar nicht anders.

Wie man die Timerfrequenz generell ändert hatte ich hier einmal an einem Bsp. beschrieben.
http://forum.arduino.cc/index.php?topic=519208.msg3538992#msg3538992

Hey Leute

Tut mir leid, ich konnte nicht antworten, da mein kleiner Sohn das Laptop kurzerhand in Beschlag genommen hat ;(
Ich hab ja geschrieben, dass ich in meiner Schaltung die Pins 15 und 16 (die Pins des Chips, nicht des Boards) verwende. Diese Pins sind auf allen Pinout-Diagrammen vom Atmega328, die ich im Netz sehe als PWM Pins deklariert.
Ich konnte im Übrigen die PWM Frequenz von 31.372.55kHz auf 3.921.16kHz reduzieren mit dem Divisor 8 (0x02). Mein Oszi zeigt jetzt genau die 3.921.16kHz an..

OK;
Du hast dann damit Dein Problem gelöst.
Grüße Uwe

Hi

Die Darbietung der Zahlen irritiert etwas - wenn das Vorne ein Komma sein soll, gehören hinten keine weiteren Punkte mehr hin.
Wenn das Hinten ein Komma sein soll, gehört Da auch ein Komma hin - dann haben die weiter vorne stehenden Punkte wieder einen Sinn - oder hinten bleibt der Punkt, dafür fliegen die Vorderen raus.

Dem Kontext nach sind's 31,37255kHz und 3,92116kHz - wobei mir dann die 5 Nachkommastellen nach viel vorgespielter Genauigkeit aussehen - bei 31372 Perioden pro Sekunde auf 0,55 genau messen?
Bei den 3921 mit 0,16 sieht's nicht besser aus - die Werte scheinen mir 'digital' zu sein - das Messgerät bietet zweiunddreißig Stellen als Messwert an, dann werden auch zweiunddreißig Stellen davon für Voll genommen.
Wenn's wirklich so genau ist: Glückwunsch - hätte ich nicht gedacht (welches Oszi?)
Wenn's eher Hausnummern sind: Mach Dir Nichts daraus, ist zu 99% bei 'den Anderen' genau so.

MfG