Other Parts Discussed in Thread: MSP430G2231
I am trying to toggle P1.0 (red LED) using Timer_A0.
My program is
#include <msp430g2231.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x41; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 10000;
TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
for{ // Infinite loop
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // Toggle P1.0
//CCR0 += 50000; // Add Offset to CCR0
}
This program is running succesfully. But for CCRO count 10000, time period should be 10msec assuming SMCLK frequency 1MHz;
while period of my program is 18.36 msec and square wave pulse has equal T_on T_off time.
Same is with mode-control_3, only difference is that Time period is doubled.
Could you please clarify it?