手头有个项目,前任工程师写的一个数字滤波程序如下,本人菜鸟,不是很懂,现在项目中采样频率提高了50倍,以前10Hz,现在500Hz,导致采集的信号工频没有被滤掉,请高手给与指点,原来的程序如下:
void c1filterculi(void)
{
if(C1FILTERTIME!=0)
return;
C1FILTERTIME=50;
if(C1FILTERSTART==1)
{
C1DATA0[0]=AD4096AVERAGE[0];
C1DATA0[1]=AD4096AVERAGE[0];
C1FILTERSTART=0;
return;
}
C1DATA0[1]=C1DATA0[0];
C1DATA0[0]=AD4096AVERAGE[0];
C1DATA1[1]=C1DATA1[0];
J=C1DATA0[0];
K=C1DATA0[1];
J=J-K;
J=J<<4; //12-BIT AD
J=J+C1DATA1[1];
GG220TIME();
K=K+0X8000;
if((K&0X80000000L)!=0)
K=0;
K=K/221;
if((K&0XFFFF0000L)!=0)
K=0XFFFF;
C1DATA1[0]=K;
}
void GG220TIME(void)
{
K=0X00;
J=J<<2;
K=K+J;
J=J<<1;
K=K+J;
J=J<<1;
K=K+J;
J=J<<2;
K=K+J;
J=J<<1;
K=K+J;
} |