Part Number: MSP430G2333
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;
}