Hi
I have trouble to getting Timer1_A0 & A1 to work on different frequency, The Timer1_A1 seem to follow whatever I set on Timer1_A0.
From what I can understand, Timer1_A0, A1 & A2 should be able to work indecently right?
In the following code, I expect LED1 toggle 1Hz, while the LED2 toggle 4Hz, but I see them both toggle at 1Hz. What have I done wrong??
Thanks guys!
int main(void) { //InitialSystem(); wdt_stop(); /* 12.5pF to ACLK */ BCSCTL3 |= XCAP_3; /* divide ACLK by 8 */ BCSCTL1 |= DIVA_3; /* initial all IOs to a known state */ P1DIR = 0xFF; P1OUT = 0x00; P2DIR = 0xFF; P2OUT = 0x00; P3DIR = 0xFF; P3OUT = 0x00; /* ACLK, up mode, clear timer */ TA1CTL = TASSEL_1 + MC_1 + TACLR; /* enable interrupt */ TA1CCTL0 |= CCIE; TA1CCR0 = ONE_SECOND; /* enable interrupt */ TA1CCTL1 |= CCIE; TA1CCR1 = (ONE_MS * 250); LED1_OUTPUT(); LED2_OUTPUT(); flash_led1(3); _BIS_SR(GIE+LPM3_bits); while(1); }
#pragma vector=TIMER1_A1_VECTOR __interrupt void TIMER1_A1_ISR(void){ /* CCIFG is automatically reset when the TACCR1 & TACCR2 interrupt request is serviced */ switch(TA1IV){ case 0x02: /* timer1_A1 */ LED2_OUT ^= LED2_BIT; break; case 0x04: /* timer1_A2 */ break; case 0x0A: /* timer1 overflow */ break; } } /* timer1 A0 interrupt handler */ #pragma vector=TIMER1_A0_VECTOR __interrupt void TIMER1_A0_ISR(void){ /* CCIFG is automatically reset when the TACCRO interrupt request is serviced */ timer_counter++; LED1_OUT ^= LED1_BIT; }