Forum: Mikrocontroller und Digitale Elektronik 4xPWM (unabhängige) mit ATMEGA32?


von Franz (Gast)


Lesenswert?

Hallo,

ich brauche für eine Motor(en)-Steuerung 4 unabhängig einstellbare PWM 
Signale. Leider dachte ich, dass der ATMEGA32 mit 4PWM Kanälen diese 
Aufgabe meistern würde. Jedoch habe ich, leider nachdem ich ihn gekauft 
habe, feststellen müssen, dass man zwei 8-Bit Timer (den 16 Bit Timer 
lasse ich außer Acht) mit jeweils nur einem "Output Compare Register" 
hat. Dieses sagt, wann von der Positiven auf die Negative Flanke (auch 
umgekehrt) umgeschaltet wird.
Also mit anderen Worten kann ich hier wohl nur 2 unabhängige 8-Bit PWM 
Kanäle realisieren.
Natürlich könnte ich jetzt noch den 16-Bit Timer benutzen, der zwei 
OCR's hat. Jedoch lässt sich wegen der Mischung aus 8 und 16 Bit Timern 
kein vernünftig untereinander abgestimmtes PWM Singal erzeugen.

Meine Frage ist nun, ob ich falsch liege und vielleicht doch vier 8-Bit 
PWM's mit dem ATMEGA32 erzeugen kann oder ob ich hier 7€ in den Sand 
gesetzt habe.
Von dem ATMEGA168 weiß ich mittlerweile, dass er zwei 8-Bit Timer hat 
plus jeweils zwei OCR'S, was dann vier PWM's macht. Gibt es noch weitere 
AVR µC die die geforderte Aufgabe beherrschen?

von Manos (Gast)


Lesenswert?

Abhängig von der Auflösung und der Frequenz der PWM-Signale kannst Du 
auch 30 PWM-Kanäle realisieren...

Timer - Interrupt - Vergleich - Port setzen - auf nächsten Interrupt 
warten oder weiter im Programm

von Johannes M. (johnny-m)


Lesenswert?

Stichwort Soft-PWM. Da kommste allerdings nicht besonders hoch, was die 
Frequenz angeht. Abgesehen davon kann man (wenn man damit sonst nichts 
vorhat) den Timer 1 genau wie die beiden anderen Timer mit einer 
8-Bit-PWM betreiben. Das wären dann noch mal 2 8-Bit-Kanäle. Wo liegt 
das Problem? Auch die Synchronisierung sollte machbar sein (da sehe ich 
eher bei Timer 2 das größere Problem, weil der einen eigenen Prescaler 
hat).

von Franz (Gast)


Lesenswert?

Mit welcher Frequenz arbeitet der Timer überhaupt (ohne Vorteilung)? 
Eventuell reicht die Frequenz von ihm aus um ein 4-Kanal Soft-PWM zu 
erzeugen. Wobei die PWM Frequenz nicht mehr im hörbaren Bereich liegen 
sollte.

von Franz (Gast)


Lesenswert?

"Abgesehen davon kann man (wenn man damit sonst nichts
vorhat) den Timer 1 genau wie die beiden anderen Timer mit einer
8-Bit-PWM betreiben. Das wären dann noch mal 2 8-Bit-Kanäle. Wo liegt
das Problem?" (Johannes M.)

Ja, dass ist schon richtig, dass insgesamt 4 unabhängige PWM Signale 
erzeugbar sind. Jedoch muss ich bei dem 16 bit Timer, was die 
Wertübergabe anbelangt, immer umrechnen. Das führt natürlich zu Fehlern, 
die eventuell (das muss ich erst testen) nicht akzeptierbar sind. 
Außerdem ist es nicht wirklich elegant einen Mischmasch aus 8 und 16 Bit 
Timern zu produzieren. Ich persönlich weiß nicht, was die Folgen bzw. 
Probleme davon sind und versuche dem erstmal aus dem Weg zu gehen (falls 
es mit Soft PWM nicht klappen sollte).

von Ralph (Gast)


Lesenswert?

Ist wieder ein typischer Fall von "vorher nicht genug nachgedacht"

von Falk B. (falk)


Lesenswert?

@ Franz (Gast)

>Mit welcher Frequenz arbeitet der Timer überhaupt (ohne Vorteilung)?

Oszillatortakt.

>Ja, dass ist schon richtig, dass insgesamt 4 unabhängige PWM Signale
>erzeugbar sind. Jedoch muss ich bei dem 16 bit Timer, was die
>Wertübergabe anbelangt, immer umrechnen. Das führt natürlich zu Fehlern,

???
Was gibt es da gross umzurechnen. Du den 16 Bit Timer auch als 8 Bit PWM 
konfigurieren. Fertig.

>Außerdem ist es nicht wirklich elegant einen Mischmasch aus 8 und 16 Bit
>Timern zu produzieren. Ich persönlich weiß nicht, was die Folgen bzw.

Käse.

MfG
Falk

von Franz (Gast)


Lesenswert?

Hab's gefunden...
In dem 16-Bit Timer Counter Control Register (TCCR1A/B) kann man mit 
Hilfe von WGM12, WGM11 und WGM10 ein 8-Bit PWM einstellen.
Danke für die konstruktiven Vorschläge ;)

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.