Tool/software: TI C/C++ Compiler
Hello everyone,
I have MSP430G2553 LaunchPad and I have problem with interrupts.
I wanted to write simple program which would blink leds with ~12,5Hz frequency, and with button, which would enable/disable blinking. Both features would use interrupts. I wrote simple code, but it goes forever after entering TIMER0_A1_VECTOR. Could you help me? Thanks in advance, there is the code:
#include <msp430g2553.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= BIT0 + BIT6; // P1.1 + P1.6 diodes
P1DIR &= ~BIT3; // P1.3 switch
P1OUT |= BIT0 + BIT6; // diodes on
P1REN |= BIT3; // resistor on P1.3
P1OUT |= BIT3; // pull up
P1IE |= BIT3; // P1.3 interrupt enable
P1IES |= BIT3; // high to low edge
P1IFG &= ~BIT3; // interrupt flag clear
//TIMER A
TACTL = TASSEL_2 + MC_1 + ID_3 + TAIE; // TAIE activates interrupts, TASSEL_2 SMCLK - 1MHz, MC_1 UP mode, ID_3 1MHz/8 = 125kHz
//TIMER 0
TA0CCR0 = 50000; // 125kHz / 50000 = 2.5Hz -> 400ms
TA0CCTL0 = CCIE; // TA0CCR0 interrupt activated
_BIS_SR(LPM0_bits + GIE); // enters LPM0 with interrupt enable
}
#pragma vector=TIMER0_A0_VECTOR // timer interrupt
__interrupt void Timer_A (void)
{
P1OUT ^= BIT0 + BIT6; // toggle diodes
}
#pragma vector=TIMER0_A1_VECTOR // timer interrupt
__interrupt void Timer_AA (void)
{
P1OUT ^= BIT0 + BIT6; // toggle diodes
}
#pragma vector=PORT1_VECTOR // switch interrupt
__interrupt void Port_1(void)
{
CCTL0 ^= CCIE; // toggle CCTL0 interrupt enabled
P1OUT ^= BIT0 + BIT6;
P1IFG &= ~BIT3; // interrupt flag clear
}