This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432 TimerA0



Hi, i have MSP432 launchpad. I want to blink a led every 1second ( ON, wait 1s, OFF, wait 1s...) thanks to timerA.

So i configure my clock at 12MHz, and the timerA0 so that every 1ms the TA0CCR0 is reached. I increase a value in the interrupt routine so that every seconds the led is toggled.

What's wrong ? Well i have no tools to check my clock, and TA0CCR0 is not reached every 1ms but less. If i increase the value in my interrupt routine i can see the led blink but too fast, i have no idea what's the frequency.
I don't know what's wrong in my code, any idea ?

void main(void)
{
    WDTCTL = WDTPW | WDTHOLD;           // Stop watchdog timer

    CSKEY = CSKEY_VAL;                  // Unlock CS module for register access
    CSCTL0 = 0;                         // Reset tuning parameters
    CSCTL0 = DCORSEL_3;                 // Set DCO to 12MHz (nominal, center of 8-16MHz range)
    CSCTL1 = SELA_2 | SELS_3 | SELM_3;  // Select ACLK = REFO, SMCLK = MCLK = DCO
    CSKEY = 0;                          // Lock CS module from unintended accesses


    __enable_interrupt();
    NVIC_ISER0 = 1 << ((INT_TA0_0 - 16) & 31);
    
    P1DIR |= BIT0;                    // Configure P1.0 as output
    TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, UP, clear
    TA0CCR0 = 12000; 	
    TA0CCTL0 = CCIE;

    while(1);
}


void TimerA0_0IsrHandler(void)
{
	static uint32_t i = 0;
	i++;
	if(i == 1000) // 1s
	{
	    P1OUT ^= BIT0;
	    i=0;
	}
}

Olivier.

**Attention** This is a public forum