Forum: Mikrocontroller und Digitale Elektronik MSP430 Timer-B Einstellungen


von Bernd S. (berndschneider123)


Lesenswert?

Hallo,

klemm bisschen fest und hoffe ihr könnt mir weiterhelfen.

ich möchte 3 PWM-Signale erzeugen:
PWM-A mit einer Frequenz von 500 Hz
PWM-B und PWM-C mit einer Frequenz von 1250 Hz

Dafür habe ich beim MSP430 Port2.1(TB0)für PWM_A, Port2.2(TB1)für PWM_B 
und Port2.3(TB2) für PWM_C vorgesehen.

Timer B hab ich bis jetzt so eingestellt:

BIS.W     #TBSSEL0+CNTL1+CNTL0+MC0+ID1+ID0,&TBCTL

Ich möchte im Output-Mode 7 arbeiten da ich mein Puls-Pausen-Verhältnis 
im Programm variieren möchte.

ACLK(32768) ist meine Eingangsfrequenz, der Vorteiler ist auf /1

Die Formel
t=(nccr0+1)*k/fclk
fclk=input-divider-eingangsfrequenz
k vorteiler
nccr0 zählerstand CCR0

umstellen auf
nccr0=(t*fclk/k)-1

nccr0=((1/500)*32678)-1

bekomme ich nccr0=64,536 heraus.

Trage ich den Wert 64,536 jetzt in das TBCCR0 Register?
Und was sagt die nächste Formel tpw=n*(k/fclk) aus?

von Jörg S. (joerg-s)


Lesenswert?

2 PWMs mit zwei unterschiedlichen Frequenzen sind nur mit zwei Timern 
möglich (afaik).
Zweites Problem (sehr häufiger Fehler ;) ) TB0 / TA0 hängen am CC0 
Register, sind somit NUR für die Frequenzeinstellung benutzbar.

Zum Thema PWM mit MSP sollte es ja ansonsten sehr viele Beispiele im 
Netz geben. Ich verweise mal auf dieses:
http://www.mathar.com/msp_disco1.html

von Bernd S. (berndschneider123)


Lesenswert?

Danke, bin schon ein großes Stück weiter gekommen!

Jetzt bin ich wieder an der Formel angelangt und stehe wieder vor dem 
Problem mit den nccr0 Eintrag in das TBCCR0-Register.

fclk=32768
k=1
t=0,0008 (f=1250)

laut formel kommt für nccr0 25,2144....

Vielleicht denke ich einfach zu kompliziert...

von Jörg S. (joerg-s)


Lesenswert?

Ob das mit dem -1 stimmt weiß ich jetzt nicht, aber sonst sind deine 
Werte für CC0 korrekt.

>Trage ich den Wert 64,536 jetzt in das TBCCR0 Register?
Ja. Halt 65 oder 64 je nachdem wohin du deine Abweichung haben willst. 
Alternativ den Takt erhöhen, dann wird's genauer.

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
Noch kein Account? Hier anmelden.