Gast
#1707308
Hallo zusammen, ich habe ein Problem mit dem Timer CCR0 - ich wollte TimerA0 ebenfalls als ganz normalen Zähler nehmen, jedoch zählt das Register viel zu lange hoch - es dauert ewig, bis da endlich mal der CCR0-Wert erreicht ist und ich verstehe nicht, woran das liegt. Der TimerA1 funktioniert. Es ist ein MSP430F2011. Bitte um Hilfe - was mache ich falsch? Habe den Wert für CCR0 jetzt schon total runtergescharubt, aber trotzdem blinkt die andere in der Zeit zich Male. #include "msp430x20x1.h" #include "stdint.h" #define LED1 0x01; #define LED2 0x02; volatile uint16_t zaehler1 = 0; volatile uint16_t zaehler2 = 0; void main (void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1SEL = 0x00; P1DIR |= 0x03; P1OUT &= ~0x03; TACTL = TASSEL_2 + ID_2 + MC_2; // SMCLOCK + Teiler 8 + Cont.-Mode TACCTL0 = CCIE; TACCR0 = 100; TACCTL1 = CCIE; TACCR1 = 100; _BIS_SR (GIE); while (1) {} } #pragma vector=TIMERA0_VECTOR // ISR nach CCR0 __interrupt void timer0 (void) { zaehler2 += 1; if (zaehler2 == 100) { zaehler2 = 0; P1OUT ^= LED2; TACCR0 += 50000; } } #pragma vector=TIMERA1_VECTOR // ISR nach CCR1 __interrupt void timer1 (void) { zaehler1 += 1; if (zaehler1 == 5000) { zaehler1 = 0; P1OUT ^= LED1; TACCR1 += 50000; } }