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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.