[ZLG-ARM] 2214,采用捕获中断测频,怎么不稳定啊?

[复制链接]
3087|5
 楼主| jstu023123 发表于 2007-12-26 14:21 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;测量电子水泡的频率,正反各测一次,两次计数差值与水泡倾角在一定范围内近似成正比,水平时差值为0。现我采129次,头尾相减,即128个周期的计数值。正反测量值相差后不大稳定,跳动大(超过允许变化范围)。而128个单周期计数值读出发现,相差不大,±1个计数。应该128次相加后稳定才是啊。是不是我测频方法不对啊?有更好的测频方法吗?测的频率为60~80kHZ。<br />部分程序如下:<br />#define&nbsp;BORDER_NUM&nbsp;&nbsp;&nbsp;129<br />static&nbsp;UINT16&nbsp;num=0;<br />static&nbsp;BOOL&nbsp;sgCapFinished&nbsp;=&nbsp;FALSE;<br />static&nbsp;UINT32&nbsp;counter&nbsp;=&nbsp;0;&nbsp;&nbsp;//&nbsp;128次计数值<br /><br />void&nbsp;__irq&nbsp;IRQ_Time1(void)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断程序<br />{&nbsp;&nbsp;&nbsp;T1IR&nbsp;=&nbsp;0x10;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;sgCapFinished&nbsp;==&nbsp;FALSE&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;(num&nbsp;==&nbsp;0)|(num&nbsp;==&nbsp;BORDER_NUM-1)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;=&nbsp;T1CR0&nbsp;-&nbsp;counter;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;num&gtBORDER_NUM-1)&nbsp;&nbsp;//&nbsp;已采完<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;sgCapFinished&nbsp;=&nbsp;TRUE;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1TCR&nbsp;=&nbsp;0x03;&nbsp;&nbsp;&nbsp;//&nbsp;复位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CCR&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;//&nbsp;关使能<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;<br />}<br /><br />void&nbsp;Time1_CaptureFreq(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Timer1_Init(&nbsp;);&nbsp;&nbsp;//预分频为0,上升沿捕获,使能<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;sgCapFinished&nbsp;==&nbsp;FALSE&nbsp;);&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;等待<br />&nbsp;&nbsp;&nbsp;&nbsp;T1TCR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;sgCapFinished&nbsp;=&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;=&nbsp;0;<br />}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />int&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;|=&nbsp;(0x01&lt&lt29);&nbsp;&nbsp;//&nbsp;反<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Time1_CaptureFreq(&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dat1&nbsp;=&nbsp;counter;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(&nbsp;str,&nbsp;&quot;&nbsp;%6d&nbsp;&quot;,&nbsp;dat1&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_DispStr(&nbsp;8,&nbsp;3,&nbsp;str,&nbsp;NORMAL_VIEW);&nbsp;&nbsp;//&nbsp;显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;|=&nbsp;(0x01&lt&lt29);&nbsp;&nbsp;&nbsp;//&nbsp;正<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Time1_CaptureFreq(&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dat2&nbsp;=&nbsp;counter;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(&nbsp;str,&nbsp;&quot;&nbsp;%6d&nbsp;&quot;,&nbsp;dat2&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_DispStr(&nbsp;8,&nbsp;2,&nbsp;str,&nbsp;NORMAL_VIEW);&nbsp;&nbsp;//&nbsp;显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />}
zcq30 发表于 2007-12-26 15:12 | 显示全部楼层

输入信号不稳定造成,可以在输入信号前加一个施密特触发

  
XDream 发表于 2007-12-26 16:34 | 显示全部楼层

采样次数太多了

一个正弦波如果采样个二三十次,再平均的话,得出的值也是好稳定的。
 楼主| jstu023123 发表于 2007-12-27 08:53 | 显示全部楼层

谢谢!

&nbsp;&nbsp;采样几十次再平均的话,就把微变化量给去掉了,若微调时(倾斜1分以内)就看不出变化咯。。。<br />&nbsp;&nbsp;如果输入信号频率漂移的话(3、4百Hz内),会出现计数不稳定吗?用11.0592M采
XDream 发表于 2007-12-27 13:13 | 显示全部楼层

关于测频

ARM捕获计数很稳定。但是测得的计数值是根据你输入的频率来确定的。
 楼主| jstu023123 发表于 2007-12-28 16:10 | 显示全部楼层

明白咯

&nbsp;&nbsp;&nbsp;&nbsp;实时频率在中心频率附近漂移,这种频漂对计数的精确度有影响,有没有好的算法,能减弱频漂的影响,尽量逼近中心频率、稳定计数啊?<br />谢谢啦。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

93

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部