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