Forum: Mikrocontroller und Digitale Elektronik 25kHz-PWM mit attiny13


von Holger K. (Gast)


Lesenswert?

Hallo allerseits,

eine 25kHz-Pulsweitenmodulation möchte ich gerne mit einem attiny13 
realisieren, da dieser über einen konfigurierbaren "Fast Pwm Mode" 
verfügt. Bei genauerem Studium dieses Forums sowie des Datenblattes habe 
ich dann festgestellt, dass die Ausgangsfrequenz durch folgende 
Gleichung definiert ist:

f= fclk / (N * 510) [Phase Correct PWM Mode]

Bei Verwendung eines Controllers mit einer Taktfrequenz von 10MHz komme 
ich dann leider nur auf f = 19,6kHz.

Nun habe ich dazu folgende Fragen:
1. Habe ich vielleicht einen Rechenfehler gemacht?
2. Wenn nein, gibt es andere Prozessoren von Atmel, bei denen sich die 
Frequenz exakter definieren lässt?

Herzlichen Dank im Voraus!

Gruß
   Holger

von spess53 (Gast)


Lesenswert?

Hi

>Nun habe ich dazu folgende Fragen:
>1. Habe ich vielleicht einen Rechenfehler gemacht?

Nein. Außer, das du erst von 'Fast PWM' redest und dann mit Phase 
Correct PWM rechnest.

>2. Wenn nein, gibt es andere Prozessoren von Atmel, bei denen sich die
>Frequenz exakter definieren lässt?

Du kannst auch mit dem ATTiny13 deine 25kHz erreichen. Im Mode 5 lässt 
sich der Top-Wert des Timers, und damit die Frequenz, mit OCR0A 
einstellen. Bei den 9,6MHz des ATTiny ergeben sich bei OCR0A= $C0 die 
25kHz. Mit OCR0B wird das Tastverhältnis eingestellt.

MfG Spess

von Oliver J. (skriptkiddy)


Lesenswert?

Versuchs mal mit WGM0[2:0] = 5 (Mode 5)
Da ist der maximale Timer-Wert OCR0A.
Damit würde sich folgender Zusammenhang ergeben:

f= fclk / (N x 2 x OCR0A) [Phase Correct PWM Mode 5]

OCR0A = fclk / (f x 2 x N)

Mal für deinen Fall berechnet:

geg: f    = 25kHz       ges:  OCR0A
     fclk = 10MHz
     N    = 1


Lsg:

     OCR0A = 10000000 / (25000 x 2 x 1) = 200


Allerdings hat man nun keine 8-Bit Auflösung für den Dutycycle mehr. 
Sind blos noch 7.64 Bit.


Gruß Oliver

von Holger K. (Gast)


Lesenswert?

Hallo Spess,

herzlichen Dank für die schelle Hilfe!


Gruß
   Holger

von Matthias L. (Gast)


Lesenswert?

>OCR0A = ... = 200
>Sind blos noch 7.64 Bit

Wobei das nicht unbedingt ein Nachteil sein muss. Ein Max-Wert von 200 
hat auch Vorteile.
So kann man ohne zu rechnen, in 0,5%-Schritten dimmen...

von spess53 (Gast)


Lesenswert?

Hi

>Wobei das nicht unbedingt ein Nachteil sein muss. Ein Max-Wert von 200
>hat auch Vorteile.

Genau genommen sind es allerdings 192. Bei 200 sind es 24kHz.

MfG Spess

von Oliver J. (skriptkiddy)


Lesenswert?

spess53 schrieb:
> Genau genommen sind es allerdings 192. Bei 200 sind es 24kHz.
>
> MfG Spess

Aber nicht bei den vom TO genannten 10MHz.

von spess53 (Gast)


Lesenswert?

Hi

>Aber nicht bei den vom TO genannten 10MHz.

Die 10MHz müssten als externer Takt anliegen. Ich habe mit dem internen 
RC-Oszillator (9,6MHz) gerechnet.

MfG Spess

von Oliver J. (skriptkiddy)


Lesenswert?

spess53 schrieb:
> Die 10MHz müssten als externer Takt anliegen.
Schon klar

> Ich habe mit dem internen RC-Oszillator (9,6MHz) gerechnet.
Ich nicht. Und der TO auch nicht.

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.