Fir Ohjelma

Alla c-kielinen FIR-esimerkki

Oletus, luetaan AD-muuntimen datat data_buffer taulukkoon ja FIR kertoimet lasketaan etukäteen weights[]-taulukkoon

FIR-suodattimessa on 8 arvoa, joissa suodattimen lisäksi kalibrointiarvo.
Laske suodatettu FIR arvo. FIR-laksenta-aliohjelma palauttaa 16 bitin intger-luvun.

#define FIR_WEIGHTS 8
#define MAX_DATA_SAMPLES 16

char weights[FIR_WEIGHTS];
char data_buffer[MAX_DATA_SAMPLES];
char data_index; /* osoitin viimeksi saatuun näytteenottodataan */
// Laske aina jokaisen datan jälkeen fir suodatettu arvo
signed int16 fir(void)
{
signed int8 i,j;
signed int16 sum;

j = data_index - FIR_WEIGHTS;
if(j < 0)
j = j + MAX_DATA_SAMPLES;

sum = 0;
for(i=0; i<FIR_WEIGHTS; i++) { // 8 FIR_WEIGHTS

sum = sum + weights[i] * data_buffer[j];
j = j + 1;
if(j >= MAX_DATA_SAMPLES) // 16
j = 0;

}

return sum;

}

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License