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
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.
Da die 6 PWM-Kanäle an drei Timern hängen (je zwei PWM-Kanäle pro Timer) kannst Du bis zu drei unterschiedliche Frequenzen (eine pro Timer) realisieren.
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?
@johnny.m: Das heißt ich kann nur 3 verschiedene PWM Signale erzeugen. Das ist blöd, denn ich brauch 4.
Der Mega644 hat drei Timer (Timer 0, Timer 1 und Timer 2). Jeder Timer hat zwei Compare-Units (OC0A, OC0B, OC1A, OC1B, OC2A und OC2B). Das macht 6 PWM-Kanäle an drei Timern...
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?
Heißt dass jetzt, dass ich mit den 3 Timern 6 unterschiedliche PWM Signale gleichzeitig erzeugen kann? Oder dass ich 6 Kanäle habe, von denen aber je 2 die gleiche Pulsbreite haben?
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.
> 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.
Richtig verstanden. Die Pulsbreite eines jeden Ausgang kann frei und unabhängig eingestellt werden.
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.