Forum: Mikrocontroller und Digitale Elektronik 4 unabhängige PWM-Kanäle bei ATmega16


von Johannes (Gast)


Lesenswert?

Hallo,

ich wollte nur kurz fragen, ob ich das Datenblatt richtig verstehe,
dass der mega16 4 unabhängige PWM-Kanäle besitzt (OC0, OC1A, OC1B und
OC2) die ich völlig unabhängig voneinander ansteuern kann.

Mir geht es in erster Linie um den 16Bit-Timer der ja zwei Ausgänge
gleichzeitig bedient. Verstehe ich es richtig, das die beiden Ausgänge
unabhängig voneinander funktionieren? Eine zusätzliche Frage wäre, ob
ich die Ausgänge zuweisen kann? Oder steht die PWM die aus dem
CompareRegisterA resultiert grundsätzlich an OC1A und entsprechen die
von CompareRegisteB an OC1B?

Vielen Dank im Vorraus,
Johannes

von TravelRec. (Gast)


Lesenswert?

Unabhängig? Bedingt. Der 16-Bit Timer bedient beide PWMs mit dem
gleichen Timer, die Output Compares sind getrennt, allerdings fest mit
den korrespondierenden Pins verknotet. Timer 0 und 1 teilen zudem einen
gemeinsamen PreScaler.

von Johannes (Gast)


Lesenswert?

Mit gleichem Prescale und fest verknüpften Pins kann ich leben. Das es
jedoch möglich ist an OC1A und OC1B unterschiedliche PWM's durch
unterschiedliche Compares auszugeben hab ich jedoch richtig verstanden,
oder?

Das mit dem verknüpft oder nicht verknüpft erschien mir nämlich ein
wenig undurchsichtig. Im DB ist nämlich nirgendswo erwähnt wie genau
die beiden OC1*'s zusammenhängen.

Schonmal vielen Dank,
Gruß Johannes

von TravelRec. (Gast)


Lesenswert?

Ja, hast Du richtig verstanden, alle xxxx1A-Register bzw. -flags und
-Steuerbits gelten für das A-PWM und alle xxxx1B-Register bzw. -flags
und -Steuerbits gelten für das B-PWM. Das A-PWM gibt auf dem OC1A-Pin
aus und das B-PWM auf dem OC1B-Pin. Ummodifizierungen sind pinmäßig
nicht möglich, da sie hardwareverknüpft mit den entsprechenden
OutputCompareUnits sind.

von tom (Gast)


Lesenswert?

hallo,

eine codebeispiel fuer 4 kanal PWM wuerde mich sehr erfreuen,
etwas schleierhaft das thema ist.

--
danke,
TOM

von TravelRec. (Gast)


Lesenswert?

Also im Grunde steht in den Datenblättern der µCs alles drin (ok, is
englisch, aber es gibt ja auch nette Bildchen und Tabellen). Läuft
alles nach schema F: Timer starten mit irgendeiner Clock, PWM
aktivieren im entsprechenden Timer-Register (entweder Fast oder
Phasen/Frequenzgenau...), einstellen ob negiert oder nicht und
Ausgangspins aktivieren. Dann in das OutputCompare-Register ´nen Wert
schreiben und fertig ist das PWM. Es gibt z.T. Unterschiede zwecks
Pufferung und zeitsynchoner Eintragung der Registerwerte seitens der
CPU, aber mit ein wenig Probieren und ´nem Oszi ist man schnell da, wo
man hin will.

von tom (Gast)


Lesenswert?

vielen dank, ich kann sowohl lesen als englisch.
meine frage bezog sich unipolares PWM, nicht auf
bipolares PWM. ich moechte die zwei PWM kanaele
eines ATMEGA32 fuer 4 kanaele unipolares (!) PWM
nutzen, und daher bat ich hoeflichst um ein bei-
spiel.

von Stefan (Gast)


Lesenswert?

Hallo,
ich habe im Prinzip die gleiche Frage und hoffe hier mal auf eine
Antwort ohne einen neuen Thread aufmachen zu müssen. Ich will bei
meinem Mega8 mit einem Timer 2 PWM kanäle realisieren, bin aber auch
nicht sicher ob das geht. Ich möchte eine PWM Grundfrequenz von ca
20khz haben und an 2 Ausgängen, OC1A und OC1B dann unterschiedliche
PWMs ausgeben, z.B an OC1A 20% Ein und 80% aus und an OC1B 40% Ein und
60% aus. Das müsste doch eigendlich zu machen sein oder?

mfg
Stefan

von TravelRec. (Gast)


Lesenswert?

Die Letze Frage muß man mit "Ja" beantworten. Im Output Compare
Register des entsprechenden Kanals wird der Output-Compare Wert (einmal
20% des gesamten Timerumfangs 8,9,10-bit, einmal 80%...)eingetragen und
mittels der Bits COM1A1 und COM1A0 bzw. COM1B1 und COM1B0 (im Register
TCCR1A) wird festgelegt, wann der OC1x-Pin ein- bzw. ausgeschaltet
wird.

Stichwort: set on top, clear on compare match
einschalten bei Timer-Obergrenze, ausschalten bei compare wert

Stichwort: clear on Top, set on compare match
ausschalten bei Timer-Obergrenze, einschalten bei compare-wert

Je nach Variation der Output-Compare Werte kann man dann beide PWMs
verändern, ohne daß sie ihre Synchonität zueinander verlieren (weil an
einen Timer gebunden).

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.