另外,在一个项目中设计捕获信号的频率,想法就是捕获相邻两个脉冲的下降沿,计算出频率,加上while语句是为了防止执行其他程序时有漏掉一个或几个脉冲的情况,但是现在的问题就是如果正好在捕获两个脉冲中间,信号消失,就在陷入wihle中出不来,请问有什么好方法测这个频率么! if((CCIFG&TACCTL1)) // Wait for first signal from photodiode
{
for(i=0;i<Num_of_result;i++)
{
testloop=0;
while(!(CCIFG&TACCTL1));// Exit after capture 8 times
frequencyWidth[index]=CCR1;
index=(index+1)%Num_of_result;
if((TAIFG&TACTL))
{
overflow++;
TACTL &=~ TAIFG;
}
TACCTL1 &=~ CCIFG;
}
_NOP();
}
此帖出自
小平头技术问答
或者IO中断也可以。
if((CCIFG&TACCTL1)) // Wait for first signal from photodiode
{
for(i=0;i<Num_of_result;i++)
{
testloop=0;
while(!(CCIFG&TACCTL1));// Exit after capture 8 times
frequencyWidth[index]=CCR1;
index=(index+1)%Num_of_result;
if((TAIFG&TACTL))
{
overflow++;
TACTL &=~ TAIFG;
}
TACCTL1 &=~ CCIFG;
}
_NOP();
}
averageFrequency = ((overflow*65536)+frequencyWidth[Num_of_result-1]-frequencyWidth[0])/(Num_of_result-1);
一周热门 更多>