Forum: Mikrocontroller und Digitale Elektronik Schnelles PWM mit AVR?


von Radlos > Radab (Gast)


Lesenswert?

Hallo Leute,

ich beziehe mich mal auf folgende Angaben: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29

Da steht, wenn ich das richtig verstanden habe, das ein PWM doch einen 
Teiler von 510 bei 8Bit zur CPU-Freq hat, selbst wenn ich über CS10 bis 
12 direkt den Takt ohne Teiler vorgebe, oder?

Das würde doch auch heißen, das ich bei 16MHz Takt doch max 31,372kHz 
(16Mhz/510) erzeugen könnte :(

Bitte sagt mir das ich falsch liege! Ich brauche mind. 125kHz bei 8Bit 
Auflösung. jammer

von PWM (Gast)


Lesenswert?

Die Tabelle ist 1. nicht für den Fast-PWM Modus und 2. vernachlässigt 
den Prescaler (bzw. nimmt an f_TC1 = f_clk_IO / Prescaler)

von Lukas K. (carrotindustries)


Lesenswert?

Radlos > Radab schrieb:
> . 125kHz bei 8Bit
> Auflösung

Nimm einen von den schicken neuen AVRs mit PLL. Der Timer wird dann mit 
ca. 64MHz betrieben, dann kommst du auf max. 250kHz PWM-Frequenz.

von Tobi W. (todward)


Lesenswert?

Nicht ganz!
Wenn ich keinen Denkfehler drin hab, liegt die maximal Frequenz bei
F_CPU / 255 (8bit)
also bei 62,745khz. Mehr ist leider nicht drin.

Grüße
Tobi

PS.: Erzeuge doch das PWM extern über einen Timer ala NE555 oder eben 
vergleichbarem. Der dürfte schnellbenug sein und über den µC stellte das 
dann hat ein.

von Εrnst B. (ernst)


Lesenswert?

Radlos > Radab schrieb:
> Bitte sagt mir das ich falsch liege! Ich brauche mind. 125kHz bei 8Bit
> Auflösung. jammer

Nimm einen andern AVR. Die Tiny25/45/85 z.B. können erstmal per PLL auf 
64MHz hoch, um damit dann den Timer für die PWM zu füttern.
Damit ereichst du 250kHz bei 8Bit, oder halt auch 125kHz.

von Oliver J. (skriptkiddy)


Lesenswert?

Radlos > Radab schrieb:
> Das würde doch auch heißen, das ich bei 16MHz Takt doch max 31,372kHz
> (16Mhz/510) erzeugen könnte :(

Mit Fast-PWM würdest du ca. die doppelte Frequenz herausbekommen. Das 
ist aber immer noch zu wenig. Es gibt aber z.B. den ATTiny26, welcher 
intern 64 MHz per PLL erzeugen kann und diese können auf die Timer 
gegeben werden. Damit würdest du im 8-Bit-Modus 250kHz PWM-Frequenz 
erreichen.

Gruß Skriptkiddy

von Εrnst B. (ernst)


Lesenswert?

Tobi W. schrieb:
> Wenn ich keinen Denkfehler drin hab, liegt die maximal Frequenz bei
> F_CPU / 255 (8bit)

Den hast du ;)
F_CPU / 256 (8 bit).

Der Sprung von 0xFF zurück auf 0 kostet auch einen Takt ;)

von Vlad T. (vlad_tepesch)


Lesenswert?

Luk4s K. schrieb:
> Nimm einen von den schicken neuen AVRs mit PLL. Der Timer wird dann mit
> ca. 64MHz betrieben, dann kommst du auf max. 250kHz PWM-Frequenz.

welche sind das denn?
das waren doch entweder 8pinner oder Typen die man kaum bekommt.

von Tobi W. (todward)


Lesenswert?

Εrnst B✶ schrieb:
> Der Sprung von 0xFF zurück auf 0 kostet auch einen Takt ;)

Stimmt... ritzen geh ;)
Würde jez den Braten aber auch net fett machen, da ja fast die hälfte 
fehlt...

Εrnst B✶ schrieb:
> Nimm einen andern AVR. Die Tiny25/45/85 z.B. können erstmal per PLL auf
> 64MHz hoch,

Huch... Da muss ich wohl geschlafen haben als die das erzählt haben xD 
Wusste ich gar nicht!

Gruß
Tobi

von Lukas K. (carrotindustries)


Lesenswert?

Vlad Tepesch schrieb:
> Luk4s K. schrieb:
>> Nimm einen von den schicken neuen AVRs mit PLL. Der Timer wird dann mit
>> ca. 64MHz betrieben, dann kommst du auf max. 250kHz PWM-Frequenz.
>
> welche sind das denn?
> das waren doch entweder 8pinner oder Typen die man kaum bekommt.

Εrnst B✶ schrieb:
> [...] Die Tiny25/45/85 z.B. [...]

von Radlos > Radab (Gast)


Lesenswert?

Hmpf

wie sieht es eigentlich mit dem Takt aus? Wenn ich einen ATtiny48-20 
nehmen würde, kann ich den durch die interne RC-Schaltung auf die max. 
PWM Freq bringen? Ein Quarz/Oszillator würde ich nicht unbedingt 
spendieren wollen...

von Lukas K. (carrotindustries)


Lesenswert?

Radlos > Radab schrieb:
> ATtiny48-20

Der Hat keine PLL.
Mit dem 25/45/85 und 8MHz RC-Oszillator kommst du mit der PLL auf die 
64MHz Timer-Frequenz, damit auf 250kHz PWM. Siehe Datenblatt, S.24.

von Radlos > Radab (Gast)


Lesenswert?

War ein Tippfehler! es ist wirklich ein 45!!!

Super, dann kann ich ja sogar einen ATtiny45-10 oder einen ATtiny45-20 
nehmen :)

von Ulrich (Gast)


Lesenswert?

Wenn man mehr als 8 Pins braucht; der Tiny461 und 261 (bzw. der alter 
Vorgänger Tiny26) hat auch den Internen PLL und hat 20 Pins.

Bei der Länger der Periode reichen 255 Zyklen um auf 256 verschiedene 
Zustände zu kommen. Das ist aber eher ein minimaler Unterschied.

von Rubelus (Gast)


Lesenswert?

Radlos > Radab schrieb:
> ATtiny45-20

Sollte es schon sein ;)

Wer spricht denn hier was von 256Khz?! Der Tiny schafft so sogar 500khz 
im FastModus ;)

Und wenn du den TinyX5 im PLL Modus mit 64Mhz fahren willst kommt er 
automatisch in den Tiny15 Mode - sprich du hast für deinen µC an sich 
nur noch 1,6 Mhz Takt zu Verfügung.

von Rubelus (Gast)


Lesenswert?

Nachtrag:


Der Tiny schafft sogar ohne PLL im normalen Timer1 PWM eine 250Khz PWM 
Freq mit 8Bit Auflösung und eine 500Khz Freq mit 7Bit Auflösung im Asnyc 
Modus...

Siehe Datenblatt Seite 91 / Tabelle 12-3

von Spess53 (Gast)


Lesenswert?

Hi

ATtiny261/461/861 und ATtiny15L haben ebenfalls eine PLL.

>Der Tiny schafft sogar ohne PLL im normalen Timer1 PWM eine 250Khz PWM
>Freq mit 8Bit Auflösung und eine 500Khz Freq mit 7Bit Auflösung im Asnyc
>Modus...

Bei mir sind 250kHz x 256 oder 500kHz x 128 immer noch 64MHz.

MfG Spess

von Rubelus (Gast)


Lesenswert?

Spess53 schrieb:
> Bei mir sind 250kHz x 256 oder 500kHz x 128 immer noch 64MHz.

Oha... jep... in der Zeile verrutscht :D Und ich schreib auch noch Asnyc 
Mode -.-

"To set Timer/Counter1 in asynchronous mode first enable PLL and then 
wait 100 μs for PLL to
stabilize. Next, poll the PLOCK bit until it is set and then set the 
PCKE bit."

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.