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?
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
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).
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.
"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).
Ist wieder ein typischer Fall von "vorher nicht genug nachgedacht"
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.