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
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.
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
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.
hallo, eine codebeispiel fuer 4 kanal PWM wuerde mich sehr erfreuen, etwas schleierhaft das thema ist. -- danke, TOM
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.