Forum: Mikrocontroller und Digitale Elektronik Fragen zu PWMs im ATmega128


von Owen S. (senmeis)


Lesenswert?

Hallo,

ich moechte 8 Kanaele von PWMs mit einem ATmega128 realisieren.
Ganz schnell habe ich das Handbuch vom ATmega128 gelesen, aber trotzdem 
konnte   ich keine Entscheidung treffen.

Frage 1: Koennen alle PWMs mit einem einzigen Quarz realisiert werden? 
Da ich gelesen habe, gibt es noch spezielle Oszillatoren fuer PWMs 
(TOSC) ausser Quarz.

Frage 2: Alle PWMs sollen eine Periode von 20ms (50Hz) haben. Nach der 
Formel
"fPWM = fclk_I/O/(N*256)" muss ein Quarz mit einer komischen 
Taktfrequenz eingesetzt werden, wie z.B. 13,1MHz (N = 1024). Gibt es 
Moeglichkeiten mit 16 MHz?

Gruss
Senmeis

von bastel-wastel (Gast)


Lesenswert?

PWM braucht keinen Quarz, aber der ATMEGA braucht einen.

Die PWM-Frequenz kannst du mit den entsprechenden Registern des ATmega 
einstellen. In deiner Formel steht das N für den entsprechenden Wert, 
den du in das Register schreiben musst.

von bastel-wastel (Gast)


Lesenswert?

Den ATmega kannst du auch mit seinem internen Oszillator betreiben. 
Dieser ist allerdings nicht sehr genau, was die Frequenz betrifft.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Bei 50Hz kannst Du soviele PWMs machen, wie Du willst, und zwar in 
Software. In einer Timer-gesteuerten Interrupt-Service-Routine erhöhst 
Du einen Zähler, der die entsprechende Anzahl an Variablen mit sich 
vergleicht und den betreffenden Portpin setzt (wenn kleiner) oder löscht 
(wenn gleich oder größer). Die Variablengröße entscheidet über die 
Auflösung der PWM. Um die gewünschte Frequenz zu erreichen, kann man 
einen Timer mit dem CTC-Mode betreiben und die Vorteiler entspechend 
einstellen. Das geht mit jeder geraden Quazfrequenz. Nur bei sehr 
schnellen Ausgaben bestimmter Frequenzen sind Quarze mit krummen 
Frequenzen vonnöten.

von bastel-wastel (Gast)


Lesenswert?

Hier noch entsprechende Link zu einem Artikel über Software-PWM:
http://www.mikrocontroller.net/articles/Soft-PWM

von Owen S. (senmeis)


Lesenswert?

Sicher kann man mit Software schaffen, aber ich konzentriere mich 
momentan nur auf Hardware-Realisierung. Geht es mit 16MHz für alle 8 
Kanäle?

Gruss
Senmeis

von STK500-Besitzer (Gast)


Lesenswert?

>Geht es mit 16MHz für alle 8 Kanäle?

Hat der ATmega128 überhaupt 8 PWM-Kanäle?
Wenn dem so wäre, geht es. Ich bezweifle aber, dass er diese Menge an 
PWM-Kanälen hat.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das Datenblatt sagt: siehe Anhang.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Sicher kann man mit Software schaffen, aber ich konzentriere mich
>momentan nur auf Hardware-Realisierung. Geht es mit 16MHz für alle 8
>Kanäle?

Damit blockierst Du Dir alle Timer und kannst das ungerade Teilen über 
den CTC-Modus nicht nutzen. Daher brauchst Du in der Tat einen Quarz, 
dessen Frequenz ein binäres Vielfaches von 50 Hz ist. Tu Dir einen 
Gefallen und mach´s in Software. Ist dann auch von der Verdrahtung 
einfacher, weil nicht quer um den Chip verstreut.

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.