MSP430 Timer B PWM

Gast #1331967
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
}
#1332001
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.
Gast #1332092
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?

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