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!!