//Firbuf.c FIR filter with output in buffer plotted with CCS #include "bp41.cof" //BP @ 1 kHz coefficient file int yn = 0; //initialize filter's output short dly[N]; //delay samples short buffercount = 0; //init buffer count const short bufferlength = 1024; //buffer size short yn_buffer[1024]; //output buffer interrupt void c_int11() //ISR { short i; dly[0] = input_sample(); //newest input @ top of buffer yn = 0; //initialize filter's output for (i = 0; i< N; i++) yn +=(h[i]*dly[i]) >> 15; //y(n)+=h(i)*x(n-i) for (i = N-1; i > 0; i--) //start @ bottom of buffer dly[i] = dly[i-1]; //data move to update delays output_sample(yn); //output filter yn_buffer[buffercount] = yn; //filter's output into buffer buffercount++; //increment buffer count if(buffercount==bufferlength) //if buffer count = size buffercount = 0; //reinitialize buffer count return; //return from interrupt } void main() { comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop }