Assuming HF XTAl = 6.5MHz, I generate toggle rate: P2.2 =TACCR0 = 6.5MHz/2x26 = 125kHz, P2.4 = TACCR2 = 6.5/4x26 = 62.5kHz. But when I set these value in my source code for TACCR0=26 and TACCR2=52, I get the toggle rates with the same value = 50Hz. When I change TACCR0 = 500 and TACCR2 = 1000, the toggle rate is 6.5kHz and 3.23kHz. I don't know the reason why. Please help me!
This is my source code:
BCSCTL1 |= XTS + XT2OFF;
// turn external oscillator on
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time delay for flag to set
}
while ((IFG1 & OFIFG) == OFIFG); // OSCFault flag still set?
BCSCTL2 |= SELM_3 + SELM0 + SELS; // MCLK = SMCLK = HF LFXT1 (safe)
P2SEL |= (BIT2+BIT4);
P2DIR |= (BIT2+BIT4);
TACCTL0 = OUTMOD_4 + CCIE;
TACCTL2 = OUTMOD_4 + CCIE;
TACCR0 = 0;
TACCR2 = 0;
TACTL = TASSEL_1 + MC_2 + TAIE;
_enable_interrupts();
}
#pragma vector =TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
TACCR0 += 26;
}
#pragma vector =TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
switch (TAIV)
{
case 2:
{
break;
}
case 4:
{
TACCR2 += 52;
break;
}
}
}