PWM

Gast #422523
Lesenswert?

Hallo.
Ich habe einen AT MEGA 644 zur Verfügung. Der hat laut Datenblatt 6 PWM 
Kanäle. Heißt das, dass ich auf jedem Kanal eine eigene PWM Frequenz 
ausgeben kann? Also 6 verschiedene PWM Frequenzen ausgeben kann?

Konkret:
Ich will LEDs über einen entsprechenden Treiber in ihrer Helligkeit 
regulieren. Dafür brauch ich min 4 PWM Signale,(da ich 4 verschiedene 
Farben habe) die ich unabhängig voneinander einstellen kann.

Gruß Matthias
#422526
Lesenswert?

Ob du verschiedene Frequenzen einstellen kannst, weiß ich gerade nicht. 
Ist aber auch egal, da bei einer PWM nicht die Frequenz (sonst hieße es 
ja FWM :-) sondern die Pulsbreite variiert wird.

Und die unterschiedlichen Compareregister kannst du auf jeden Fall 
getrennt steuern.
Gast #422539
Lesenswert?

Ja, aber das PWM Signal wird ja über die Timer gesteurt, davon habe ich 
ja aber nur einen 16- und einen 8 bit Timer. Daher stellt sich mir die 
Frage, wie ich mit 2 Timern 6 PWM Kanäle in ihrer Pulsbreite steuern 
kann?
Läuft das dann so dass der Timer zählt und wenn er Kompare A erreicht 
den einen Pin toggelt dann weiter zählt und bei Compare B einen anderen 
Pin toggelt? Oder wie soll ich mir das vorstellen?
Gast #422545
Lesenswert?

Die Output-Pins musst Du entsprechend konfigurieren. Jede 
Compare-Einheit hat einen fest verdrahteten Ausgangspin (Namen siehe 
mein letztes Posting), der bei entsprechender Konfiguration getoggelt 
werden kann, wenn das dazugehörige Compare-Ereignis eintritt. Bis auf 
die Tatsache, dass je zwei PWM-Kanäle am selben Timer hängen, sind die 
Compare-Einheiten A und B jeweils völlig unabhängig voneinander 
steuerbar. Sie laufen nur eben mit der selben Frequnez...

Bist Du sicher, dass Du wirklich vier unterschiedliche Frequenzen 
brauchst?
Gast #422553
Lesenswert?

Also das hab ich falsch geschrieben, ich brauch nur eine Frequenz. Die 
muss ich auch nie verändern.
Was ich ändern will ist die Pulsbreite und die unabhängig voneinander.
Wenn ich dich richtig verstanden habe, kann ich 6 unterschiedliche 
Pulsbreiten erzeugen.
Gast #422557
Lesenswert?

> Läuft das dann so dass der Timer zählt und wenn er Kompare A
> erreicht den einen Pin toggelt dann weiter zählt und bei
> Compare B einen anderen Pin toggelt? Oder wie soll ich mir
> das vorstellen?

Normalerweise geht man bei einer PWM so vor:
a) Fast PWM: Der Timer zählt hoch, bei erreichen des Compare-Wertes in 
einem der Compare-Register wird der dazugehörige Pin entweder 
ausgeschaltet (nichtinvertierte PWM, Tastverhältnis ist proportional zum 
Compare-Wert) oder eingeschaltet (invertierte PWM, Tastverhältnis ist 
umgekehrt proportional zum Compare-Wert). Bei erreichen des 
eingestellten Maximalwertes (TOP) der PWM wird dann jeweils die 
entgegengesetzte Aktion durchgeführt und der Timer (Register TCNTx) wird 
auf null zurückgesetzt.

b) symmetrische (phasenrichtige oder phase correct) PWM: Der Timer zählt 
hoch, bei erreichen eines Compare-Wertes wird (je nachdem, ob 
invertierte oder nichtinvertierte PWM) der Pin gesetzt oder gelöscht, 
siehe oben. Bei erreichen des Maximalwertes (TOP) wird die Zählrichtung 
umgekehrt und bei erneutem Erreichen des Compare-Wertes (diesmal von 
oben) wird der Pin wieder in den ursprünglichen Zustand geschaltet. Bei 
null wird die Zählrichtung des Timers dann wieder umgekehrt und das 
Spiel geht von vorne los.

> Wenn ich dich richtig verstanden habe, kann ich 6 unterschiedliche
> Pulsbreiten erzeugen.

Genau!
Wenn alle drei Timer mit dem selben TOP-Wert und Prescaler laufen (z.B. 
8-Bit-PWM), dann hast Du 6 PWM-Kanäle mit derselben PWM-Frequenz, aber 
unabhängig voneinander einstellbaren Tastverhältnissen zur Verfügung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren