|
我用msp430F149的定时器A的1通道捕获超声波的应答信号来测量距离出现奇怪现象
下面是定时器设置
void TimerInit()
{
TACTL=TASSEL_2+ID_3+MC_2+TACLR;//SMCLK=1MHZ,连续计数模式 清零计数器
//下降上升沿捕获,输入信号端为CCI1A,同步比较,捕获模式,中断使能
TACCTL1=CM_3+CCIS_0+SCS+CAP+CCIE;
P1DIR&=~BIT2;
P1SEL|=BIT2;
P3DIR|=BIT1;
_EINT();//开放总中断
}
第一种正常现象距离显示正常
#pragma vector=TIMERA1_VECTOR
__interrupt void TIMER_ISR(void)
{
static uchar i=0;
switch(TAIV)
{
case 2:t1=TACCR1;
TACTL|=TACLR;//清零
break;
case 10:break;
}
}
第二中奇怪现象
#pragma vector=TIMERA1_VECTOR
__interrupt void TIMER_ISR(void)
{
static uchar i=0;
switch(TAIV)
{
case 2:t1[i]=TACCR1;
TACTL|=TACLR;//清零
i++;
if(i>=4)
i=0;
break;
case 10:break;
}
}
当我把采集的数据依次放入数组的时候,再用串口显示的发现
t1[0]的数据不正常(奇怪的数据) t1[1]的数据正常
t1[2]的数据不正常(奇怪的数据) t1[3]的数据正常
...................................................................
t1[i-2]的数据不正常(奇怪的数据) t1[i-1]的数据正常
不知道为什么???纠结啊!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|