Доброго времени суток.
Пытаюсь измерять частоту при помощи захвата таймера В (кристалл MSP40FG4618). Для проверки подцепил на вход таймера Р2.3 ACLK. Но при каждом прерывании TBR увелисивается только на 13 тиков, хотя должно быть гораздо больше (таймер тактируется SMCLK = 8 МГц)
Код:
Код
#include "msp430xg46x.h"
volatile unsigned int i;
int Capture;
void main (void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP10PF | DCOPLUS;
do
{
IFG1 &= ~OFIFG;
for (i = 0x47FF; i > 0; i--);
}
while ((IFG1 & OFIFG));
for(i=2100;i>0;i--);
P1DIR = 0x32; // P1.1 & P1.5 to output direction
P1SEL = 0x32; // P1.1 & P1.5 to output MCLK & ACLK
P2SEL = 0x08;
SCFI0 |= FN_4; // x2 DCO freq, 8MHz nominal DCO
SCFQCTL = 121; // (121+1) x 32768 x 2 = 7.995392 MHz
_BIS_SR (GIE);
TBCTL = TBSSEL_2 | MC_2; //TBCLK=SMCLK, Mode = CONT
TBCCTL2 = CM_1 | CCIS_0 | CCIE | CAP | SCS; // Capture on rising, Synchronous, Interrupt enabled
while (1);
}
#pragma vector = TIMERB1_VECTOR
__interrupt void CaptureISR (void)
{
Capture=TBCCR2; // Тут стоит бряк
}