mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM


PWM
Autor: Matthias (Gast)
Datum:

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

Autor: Mike R. (thesealion)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny.m:
Das heißt ich kann nur 3 verschiedene PWM Signale erzeugen. Das ist 
blöd, denn ich brauch 4.

Autor: johnny.m (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig verstanden.
Die Pulsbreite eines jeden Ausgang kann frei und unabhängig eingestellt 
werden.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke. Das habe ich wissen wollen

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.