Ejemplo n.º 1
0
int16 iir_filter(int16 tmp)
{
    int i;
    
    x[0] =  (double) (tmp); // Read received sample and perform typecast
    y2[0] = 0;                              // Initialize output
  
    for(i = 0;i <= FILTER_LENGTH;i++)   // Run FIR filter for each received sample
    {
        y2[0] += b2[i]*x[i];
    } 
    
    for(i = 1;i <= FILTER_LENGTH;i++)   // Run FIR filter for each received sample
    {
        y2[0] -= a2[i]*y2[i];
    } 
 	
    for(i = FILTER_LENGTH-1;i >= 0;i--) // Roll x array in order to hold old sample inputs
    {
        x[i+1] = x[i];
        y2[i+1] = y2[i];
    }
    
    return floor_and_convert(y2[0]);
}
Ejemplo n.º 2
0
int low_pass_filter(int data)
{
   int i;
   x_low[0] =  (double) data;
   
   y_low[0] = 0;
  
   for(i = 0;i <= FILTER_LENGTH_low;i++)                 // Run IIR filter for each received sample
   {
      y_low[0] += b_low[i]*x_low[i];
   } 
   
   for(i =1;i <= FILTER_LENGTH_low;i++)               // Roll x array in order to hold old sample inputs
   {
      y_low[0] -= a_low[i]*y_low[i];
   }

   for(i = FILTER_LENGTH_low-1;i >= 0;i--)
    {
       x_low[i+1]=x_low[i];
       y_low[i+1]=y_low[i];
    }

    return floor_and_convert(y_low[0]);
}
Ejemplo n.º 3
0
int16 filter(int16 data_in)
{
    x[0] =  (float) data_in; 
    y = 0;                              
      for(i = 0;i <= FILTER_LENGTH;i++)  
    {
        y += b[i]*x[i];
    } 
 	    for(i = FILTER_LENGTH-;i >= 0;i--)
    {
        x[i+] = x[i];
    }
        return floor_and_convert(y);
}