//Fir3LP.c FIR using three lowpass coefficients with three different BW #include "lp600.cof" //coeff file LP @ 600 Hz #include "lp1500.cof" //coeff file LP @ 1500 Hz #include "lp3000.cof" //coeff file LP @ 3000 Hz short LP_number = 1; //start with 1st LP filter int yn = 0; //initialize filter's output short dly[N]; //delay samples short h[3][N]; //filter characteristics 3xN interrupt void c_int11() //ISR { short i; dly[0] = input_sample(); //newest input @ top of buffer yn = 0; //initialize filter output for (i = 0; i< N; i++) yn +=(h[LP_number][i]*dly[i]); //y(n) += h(LP#,i)*x(n-i) for (i = N-1; i > 0; i--) //starting @ bottom of buffer dly[i] = dly[i-1]; //update delays with data move output_sample(yn >> 15); //output filter return; //return from interrupt } void main() { short i; for (i=0; i<N; i++) { dly[i] = 0; //init buffer h[1][i] = hlp600[i]; //start addr of LP600 coeff h[2][i] = hlp1500[i]; //start addr of LP1500 coeff h[3][i] = hlp3000[i]; //start addr of LP3000 coeff } comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop }