打印
[ZLG-ARM]

2214,采用捕获中断测频,怎么不稳定啊?

[复制链接]
2040|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jstu023123|  楼主 | 2007-12-26 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    测量电子水泡的频率,正反各测一次,两次计数差值与水泡倾角在一定范围内近似成正比,水平时差值为0。现我采129次,头尾相减,即128个周期的计数值。正反测量值相差后不大稳定,跳动大(超过允许变化范围)。而128个单周期计数值读出发现,相差不大,±1个计数。应该128次相加后稳定才是啊。是不是我测频方法不对啊?有更好的测频方法吗?测的频率为60~80kHZ。
部分程序如下:
#define BORDER_NUM   129
static UINT16 num=0;
static BOOL sgCapFinished = FALSE;
static UINT32 counter = 0;  // 128次计数值

void __irq IRQ_Time1(void)    // 中断程序
{   T1IR = 0x10; 
    if( sgCapFinished == FALSE )
    {    if( (num == 0)|(num == BORDER_NUM-1) )
          counter = T1CR0 - counter;    
          num++;
         if( num>BORDER_NUM-1)  // 已采完
        {   sgCapFinished = TRUE; 
              T1TCR = 0x03;   // 复位
              T1CCR = 0x00;   // 关使能
     }   }
    VICVectAddr = 0x00;
}

void Time1_CaptureFreq( void )
{
    Timer1_Init( );  //预分频为0,上升沿捕获,使能
    while( sgCapFinished == FALSE );   //  等待
    T1TCR = 0x00;
    sgCapFinished = FALSE;
    num = 0;
}
        
int main(void)
{    ...
      IO0CLR |= (0x01<<29);  // 反
      Time1_CaptureFreq( );
      dat1 = counter;
      counter = 0;

      sprintf( str, " %6d ", dat1 );
      LCD_DispStr( 8, 3, str, NORMAL_VIEW);  // 显示
      
        
      IO0SET |= (0x01<<29);   // 正
      Time1_CaptureFreq( );
      dat2 = counter;
      counter = 0;

      sprintf( str, " %6d ", dat2 );
      LCD_DispStr( 8, 2, str, NORMAL_VIEW);  // 显示
      
     ...
}

相关帖子

沙发
zcq30| | 2007-12-26 15:12 | 只看该作者

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

使用特权

评论回复
板凳
XDream| | 2007-12-26 16:34 | 只看该作者

采样次数太多了

一个正弦波如果采样个二三十次,再平均的话,得出的值也是好稳定的。

使用特权

评论回复
地板
jstu023123|  楼主 | 2007-12-27 08:53 | 只看该作者

谢谢!

  采样几十次再平均的话,就把微变化量给去掉了,若微调时(倾斜1分以内)就看不出变化咯。。。
  如果输入信号频率漂移的话(3、4百Hz内),会出现计数不稳定吗?用11.0592M采

使用特权

评论回复
5
XDream| | 2007-12-27 13:13 | 只看该作者

关于测频

ARM捕获计数很稳定。但是测得的计数值是根据你输入的频率来确定的。

使用特权

评论回复
6
jstu023123|  楼主 | 2007-12-28 16:10 | 只看该作者

明白咯

    实时频率在中心频率附近漂移,这种频漂对计数的精确度有影响,有没有好的算法,能减弱频漂的影响,尽量逼近中心频率、稳定计数啊?
谢谢啦。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

93

帖子

0

粉丝