#include <msp430x14x.h>
int mian (void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD;
for (i=0;i<20000;i++);
P1SEL|=BIT1;
P2SEL|=BIT0;
P2DIR|=BIT0;
CCTL0=CM_1+SCS+CAP+CCIE;
TACLT=TASSEL_2+MC_2;
_EINT();
LPM0;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0 (void)
{
static unsigned int new_cap,old_cap,diff_cap,aver_cap,index;
static unsigned int diff_array[16],cap_array[16];
new_cap=TACCR0;
diff_cap=new_cap-old_cap;
cap_array[index]=new_cap;
diff_array[index++]=diff_cap;
aver_array+=diff_cap;
old_cap=new_cap;
if (index==16)
{
aver_array/=16;
index=0;
}
}
这段程序时我参照TI的例程写的,我的疑问是timerA一直计数(continue模式),当捕获到上升沿的时候,将TAR的计数值存入TACCR0,我的理解有错吗?
假如TAR计数到60000,来了一个上升沿,然后TAR计数到65535溢出,返回0重新计数,当TAR=10时又来一个上升沿,这时候算脉冲时间不就错了吗?请问怎么解决?
