最近做毕设用5509做一数字滤波器,主要程序如下,现在出现一个问题,我采集256个点,进行fir处理后用da输出,结果出现问题,不知原因,请教达人指点,不胜感激,<br />如图所示,每隔一定周期将会输出一段失真,不知什么原因,该如何改正?<br /> <br /> for ( i=0;i<256;i++ )<br /> {<br /> ........... //ad采集程序<br /> fIn[nIn]=nADC2; //滤波器程序<br /> k=nIn;<br /> fOutput=FIR();<br /> fOut[nOut]=fOutput;<br /> nDAC3=(int)fOut[nOut]; //滤波送给da输出<br /> ........<br /> nIn++; <br /> nIn%=256; <br /> nOut++; <br /> if ( nOut>=256 )<br /> {<br /> nOut=0;<br /> <br /> }<br /> <br /> }<br />float FIR() //滤波算法<br />{<br /> float fSum;<br /> fSum=0;<br /> for (j=0;j<FIRNUMBER;j++ ) //FIRNUMBER为滤波阶数,为8<br /> { <br /> if(k>=j)<br /> fSum+=(fIn[k-j]*fHn[j]);<br /> else<br /> break;<br /> <br /> }<br /> <br /> return(fSum);<br />} |
|