Guten Tag,ich versuche derzeit einen PIC24FJ64GA004 so zu programmieren, das er aus dem Signal dass ich ihm gebe eine FFT bildet. Das Eingangssignal ist analog. Das Ganze soll sequenziel ablaufen. Erst wird das durch den ADC konvertierte Signal aufgezeichnet, dann wird es gefiltert, und danach die FFT gebildet. Soweit die Theorie. Bis jetzt bin ich so weit dass mein Mikrocontroller das Signal das ich ihm gebe (aus der Audiobuchse von meinem Laptop) aufzeichnet. Nach dem filtern erhalte ich nur noch falsche Werte (siehe Excel Datei). Weiss einer woran das liegen kann? Der Code zum Filter stammt von Winfilter. Hier noch der Code zum Filter:
1 | for( a=0; a>Laufnahme; a++ ) |
2 | {
|
3 | //shift the old samples
|
4 | for( d=2; d>0; d-- ) |
5 | {
|
6 | x[d] = x[d-1]; |
7 | y[d] = y[d-1]; |
8 | }
|
9 | //Calculate the new output
|
10 | x[0] = Sgn[a]; |
11 | y[0] = ACoef[0] * x[0]; |
12 | for( d=1; d<=2; d++ ) |
13 | {
|
14 | y[0] += ACoef[a] * x[a] - BCoef[a] * y[a]; |
15 | }
|
16 | SgnFilt[d] = y[0]; |
17 | }
|