MSP430 TA0CCTL1 nicht überschreibbar!?

OP #3487499
Lesenswert?

Hallo zusammen.

Ich bin total verwirrt: ich kann nicht in TA0CCTL1 schreiben! Vom Start 
des MSP430G2553 an ist TA0CCTL1 = 0x0400 = TA0CCTL0, alle anderen 
Register der Timer sind 0x00. Ich kann in TA0CCTL1 zwar schreiben, z.B. 
0xE1, dann steht allerdings 0x04E1 drin. Die Register TA0CCTL2 und die 
des anderen Timers sind überschreibbar. Folgendes resultiert in einer 
Endlosschleife:
1
 while(TA0CCTL1 != 0xE1){
2
TA0CCTL1 = 0xE1;
3
}

0x0400 ist übrigens das "SCCI" Bit!

Freue mich sehr über Hilfe!
OP #3487530
Lesenswert?

Tatsächlich! Danke das hatte ich übersehen, es ist ein nicht 
beschreibbares Bit.
Ok, hätten wir geklärt warum ich da nicht rein schreiben kann. Das ist 
allerdings nicht mein Hauptproblem momentan. Ich bin nur auf dieses Bit 
gekommen, weil der eine PWM Channel TA0CCTL1 nicht funktioniert hat 
(TA0.1). Meint ihr das könnte an dem Bit liegen? Alle anderen 3 Channel 
sind gleich initialisiert und funktionieren
OP #3487538
Lesenswert?

Vielleicht zeig ich euch einfach mal meinen Codeausschnitt:
1
    //define Pins:
2
    P2SEL2 &= ~(BIT6 + BIT7);
3
    P2DIR |= BIT6;                      // TA0.1 (motor north)
4
    P2SEL |= BIT6;
5

6
    P3DIR |= BIT0 + BIT2 + BIT3;        // TA0.2 + TA1.2 (motor east + motor west)
7
    P3SEL |= BIT0 + BIT2 + BIT3;
8

9
    //Setting up the PWMs:
10
    TA0CCR0 = pwmTimerLimit;           //setting PWM frequency (TA0CCR0 contains the upper TA0 limit)
11
    TA0CCR1 = throttleDown;            //setting the duty-cycle to 52% initially
12
    TA0CCR2 = throttleDown;
13

14
    TA1CCR0 = pwmTimerLimit;
15
    TA1CCR1 = throttleDown;
16
    TA1CCR2 = throttleDown;
17

18
    TA0CCTL1 = OUTMOD_7;            //activate PWM set/reset
19
    TA0CCTL2 = OUTMOD_7;
20
    TA1CCTL1 = OUTMOD_7;
21
    TA1CCTL2 = OUTMOD_7;
22

23
    TA0CTL = TASSEL_2 | ID_3 | MC_1 | TACLR;  //source: SMCLK, divider:8, count to CCR0, clear Timer
24
    TA1CTL = TASSEL_2 | ID_3 | MC_1 | TACLR;

Alle Werte stehen danach korrekt in den Registern, außer TA0CCTL1, da 
steht wie gesagt 0x4E1 statt 0x0E1. TA0.1 gibt aber im Gegensatz zu 
TA0.2, TA1.1 und TA1.2 kein PWM aus, aus irgend einem Grund.

//edit: an P3.5 funktioniert der PWM Ausgang!!

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