Witam!
Chciałbym zrealizować filtr IIR, oto współczynniki:
w każdym przerwaniu od MCBSP (port wejściowy) pobieram próbkę i przepuszczam ją przez filtr. Oto procedura w przerwaniu:
program jednak nie działa; czy moglibyście polecić jakiś algorytm?
Chciałbym zrealizować filtr IIR, oto współczynniki:
// licznik
float c[6]=
{
6.3700e-006,
31.84e-006,
63.68e-006,
63.68e-006,
31.84e-006,
6.3700e-006
};
//mianownik
float d[6]=
{
1.0000,
-4.7193,
9.0731,
-8.8773,
4.4193,
-0.8956
};
w każdym przerwaniu od MCBSP (port wejściowy) pobieram próbkę i przepuszczam ją przez filtr. Oto procedura w przerwaniu:
x[m] = (float)probkar; // probka z wejscia, m -> indeks (poczatkowo 0)
temp = 0; // zmienna pomocnicza
for (i=0; i<N; i++) // N - ilosc wspolczynnikow a/b
{
temp += d[i] * y[(N+m-i-1)%N]; // implementacja struktury filtru
temp += c[i] * x[(N+m-i-1)%N];
}
y[m]=temp;
probkar = (short int)y[m]; // rzutowanie
m=(m+1)%(N+1); // zwiekszanie indeksu
program jednak nie działa; czy moglibyście polecić jakiś algorytm?