使用TA的捕获口测频率,输入频率范围从0-5KHz左右,采样一直很稳定,直到约50Hz以下,数据异常。
在试验程序中只做捕获一个工作,在捕获口中加入标志位,发现1S内捕获中断次数异常,从几百到上千吧,输入频率恢复到50Hz以上,数据恢复正常。
用示波器看输入频率波形良好,不知道是哪里的问题?
引用:
使用TA的捕获口测频率,输入频率范围从0-5KHz左右,采样一直很稳定,直到约50Hz以下,数据异常。
在试验程序中只做捕获一个工作,在捕获口中加入标志位,发现1S内捕获中断次数异常,从几百到上千吧,输入频率恢复到50Hz以上,数据恢复正常。
用示波器看输入频率波形良好,不知道是哪里的问题?
|
|
可能是TA的时钟源太快了吧,以致在进行扑获低频时溢出了,查询一下溢出标志位。
TA的时钟源是8M晶振,在TA的中断里有对中断溢出的记数程序,溢出不应该影响捕获的中断
以下是试验程序,TB是一秒定时,输入频率10Hz,每秒捕获记数TIMERCNT3有几百次
void main(void) //组程序开始
{
init(); //调用初始化子程序
TBCCTL2|=CCIE;
interval =1;
CCTL0|= CCIE+CAP+SCS+CM0;
TACTL|= MC1;
_EINT();
while(1)
{
_BIS_SR(CPUOFF);
_NOP();
}
}
interrupt[TIMERB1_VECTOR] void TIMER_B1(void)
{
switch(TBIV)
{
case 4:
TBCCR2 += 32768;
_NOP();
break;
default: break;
}
}
interrupt[TIMERA1_VECTOR] void TIMER_A1(void)
{
switch(TAIV)
{
case 10 :
OVERFLOWCNT++;
break;
default: break;
}
}
interrupt[TIMERA0_VECTOR] void TIMER_A(void)
{ TIMERCNT3++;
_NOP();
}
又作了一下测试,输入信号10Hz,当捕获选择上升沿时,每秒捕获中断200-300次,改成捕获条边沿后,每秒捕获中断300-400次,有所变化,还是不明白为什么。