www.mikrocontroller.net

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


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

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

--
danke,
TOM

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.