//NOTCH2.C Two FIR notch filters to remove two sinusoidal noise signals #include "BS900.cof" //BS @ 900 Hz coefficient file #include "BS2700.cof" //BS @ 2700 Hz coefficient file short dly1[N]={0}; //delay samples for 1st filter short dly2[N]={0}; //delay samples for 2nd filter int y1out = 0, y2out = 0; //init output of each filter short out_type = 1; //slider for output type interrupt void c_int11() //ISR { short i; dly1[0] = input_sample(); //newest input @ top of buffer y1out = 0; //init output of 1st filter y2out = 0; //init output of 2nd filter for (i = 0; i< N; i++) y1out += h900[i]*dly1[i]; //y1(n)+=h900(i)*x(n-i) dly2[0]=(y1out >>15); //out of 1st filter->in 2nd filter for (i = 0; i< N; i++) y2out += h2700[i]*dly2[i]; //y2(n)+=h2700(i)*x(n-i) for (i = N-1; i > 0; i--) //from bottom of buffer { dly1[i] = dly1[i-1]; //update samples of 1st buffer dly2[i] = dly2[i-1]; //update samples of 2nd buffer } if (out_type==1) //if slider is in position 1 output_sample(dly1[0]); //corrupted input(voice+sines) if (out_type==2) output_sample(y2out>>15); //output of 2nd filter (voice) return; //return from ISR } void main() { comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop }