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 }
>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.
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
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.
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?
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
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.