Forum: Mikrocontroller und Digitale Elektronik PWM Frequenz Verständnisfrage


von Stefan (Gast)


Lesenswert?

Hallo Leute,

ich beschäftige mich mittlerweile mit PWM bei AVR und habe eine Frage zu 
der Frequenz. Ich finde leider nicht viele Infos dazu im Internet, 
obwohl es über PWM viele gute Tutorials gibt.

Wenn
- F_CPU bei 16MHz liegt
- der Prescaller 1
- der Timer0 von 0 bis 255 zählt und wieder bis 0 zurück (also 512 
Schritte)
dann ergibt sich eine Frequenz von 31250Hz für PWM.

Ist meine Rechnung korrekt?

Gruß
Stefan

von smoke (Gast)


Lesenswert?

Stefan schrieb:
> Ist meine Rechnung korrekt?

Nein. Formel steht im Datenblatt. 512 Schritte ist ebenfalls nicht 
richtig.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

smoke schrieb:
> 512 Schritte ist ebenfalls nicht richtig.
Denn dafür müsste er jeweils 2x 0 und 2x 255 hintereinander zählen...

von Axel S. (a-za-z0-9)


Lesenswert?

smoke schrieb:
> Stefan schrieb:
>> Ist meine Rechnung korrekt?
>
> Nein. Formel steht im Datenblatt. 512 Schritte ist ebenfalls nicht
> richtig.

Das hättest du auch hilfreicher formulieren können. Z.B. so:
1
Die Rechnung wäre korrekt, wenn es 512 Schritte wären.
2
Es sind aber nur 510 Schritte und die PWM-Frequenz ist
3
darum etwas höher, nämlich 31.373 kHz.

von A. (Gast)


Lesenswert?

Bei 8-Bit Timer:

Frequenz PWM = F_CPU  Prescaler  TOP (256):

Das ergibt 62500 Hz.

von M. K. (sylaina)


Lesenswert?

A. schrieb:
> Bei 8-Bit Timer:
>
> Frequenz PWM = F_CPU  Prescaler  TOP (256):
>
> Das ergibt 62500 Hz.

Aber nur bei Fast-PWM ;)

von T.U.Darmstadt (Gast)


Lesenswert?

Die Freuenz beträgt sogar 125kHz, bei 50:50!

von Alex G. (dragongamer)


Lesenswert?

Wtf sind das für verwirrende Antworten? o.O

von Curby23523 N. (Gast)


Lesenswert?

Du teilst den CPU-Takt durch den Teiler, dann kennst du die Frequenz 
deines Timers. Der Kehrwert davon und du weißt, wie lange der Timer für 
+1 seines Zählers braucht. Dann multiplizierst du das ganze mit deinen 
maximalen Zählwert und du weißt die Zeit für einen Takt. Den Kehrwert 
davon = deine PWM Frequenz.

Die Formel von A. stimmt schon. Bei F_CPU = 8.000.000 und einen max. 
Zählwert von 65536 (0-65535) und einen Teiler von 8 ergibt das:

8.000.000 : 8 : 65536 = 15HZ

Ein bisschen wenig. Bei Einem Teiler von 1, wäre die Frequenz: 8.000.000 
/ 65536 = 122Hz.

Dann lassen wir den Timer mal nur bis 12Bit zählen:
8.000.000 / 4096 = 2kHz

von Axel S. (a-za-z0-9)


Lesenswert?

Nils H. schrieb:
> Die Formel von A. stimmt schon. Bei F_CPU = 8.000.000 und einen max.
> Zählwert von 65536 (0-65535) und einen Teiler von 8 ergibt das

Nur war das nicht gefragt. Der TE hat zwar (wohl unwissentlich [1]) 
keine Angaben zum verwendeten Timer, PWM-Modus und TOP-Wert gemacht. 
Aber aus dem Kontext geht ziemlich klar hervor, daß es ihm um eine 
phasenkorrekte PWM mit einem 8-Bit Zähler ohne Zählumfangsbegrenzung 
geht.

[1] https://de.wikipedia.org/wiki/Hanlon%E2%80%99s_Razor

von batman (Gast)


Lesenswert?

Dann gibts da ja noch die "frequenzkorrekte" PWM. Ändert die was an der 
Frequenz?

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.