mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Timer B PWM


Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salu zusammen

Ich habe noch nie etwas mit Timern gemacht. Nun habe ich mir hier einen 
RGB Controller gebaut. Dieser liest die Werte für die Intensität der 
einzelnen Farben über einen AD Wandler ein (Potis). Nun möchte ich gerne 
je nach Poti Stellung ein entsprechendes PWM Signal erzeugen und an den 
Pins TB0 - TB2 ausgeben (Pin 36-38 / MSP430F149)

Denkt ihr die folgende Initialisierung des Timers B ist so korrekt wie 
ich mir das überlegt habe?

Die Frage die sich mir immer noch stellt ist, wie bekomme ich jetzt die 
entsprechende PWM auf die Pins P4.0-4.2? ACLK ist 1MHz. Hier beschreibe 
ich einfach einmal das CCR2 Register. Ist jetzt CCR1 für P4.0, CCR2 für 
P4.1 usw, oder sehe ich da etwas falsch? Irgendwie habe ich einfach 
ziemliche Probleme mit dem Verständnis wie ich die PWM rausbekomme. Wie 
ein Timer funktioniert habe ich denke ich verstanden. Wäre echt froh 
wenn ich von Euch Hilfe bekommen würde. Achja, wie gross würded ihr 
period wählen?

Gruss reflection

void PWM(int duty, int period)
{
  TBCTL = MC0;                       // Stop the timer
  TBCTL = TBSSEL_2 + TBCLR;           // ACLK, Clear Tar
  TBCCR0 = period;                  // PWM Period
  TBCCTL2 = OUTMOD_7;                 // CCR2 reset/set
  TBCCR2 = dutycycle;                 // CCR2 PWM duty cycle
  P4DIR |= 0x07;                      // P4 output
  P4SEL |= 0x07;                      // P4 option
  TBCTL |= MC0;                       // Start Timer_B in up mode
}

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun möchte ich gerne je nach Poti Stellung ein entsprechendes PWM Signal
>erzeugen und an den Pins TB0 - TB2 ausgeben (Pin 36-38 / MSP430F149)
TB0 ist mit CCR0 verknüpft. Da du CCR0 für die Periode brauchst, fällt 
der weg.

>Ist jetzt CCR1 für P4.0, CCR2 für P4.1 usw, oder sehe ich da etwas
>falsch?
CCR1 = TB1 = P4.1

>Achja, wie gross würded ihr period wählen?
So das die Umrechung von ADC-Wert auf PWM einfach ist. Also evt. 4095. 
Dann brauchst du nur noch den Wert vom ADC in CCRx laden und bist 
fertig.

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch, na das ist natürlich nicht so gut! Kann ich denn auf eine andere 
Art und Weise TB0 bis TB2 nutzen? Hab den Print eben schon fertig :o\

Gruss

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fürchte das das nicht geht, da diese ganzen Toggle/Reset/Set 
Geschichten immer abhängig von CCR0 sind.
Die einzige Alternative wäre also nur die PWM in Software (mit dem Timer 
als Hilfsmittel) zu erledigen. Wenn der MSP sonst nichts zu tun hat 
könnte es evt. noch einigermassen gehen.

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem, hab die Leiterbahn bereits aufgefräst ;o) und neu 
verdrahtet. Mal schauen ob es funzt. Komme aber erst heute Abend dazu

Gruss und Danke schonmal im Voraus

PS: Kann mir noch jemand sagen wie ich jetzt ganz genau die 
Periodendauer ausrechne? Bei einem ACLK von 1MHz. Nehme ich an ich setze 
CCR^0 auf 255, kann ich dann 1MHz / 255 rechnen und bekomme die 
Periodendauer?

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Timer rennt mit 1Mhz. D.h. ein Timer Takt = 1/1Mhz = 1µs
Bei 255 Timer Takten dann entsprechend 1µs * 255 = 255µs Periodendauer

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.