Beste,
Naar aanleiding van men vorige http://www.circuitsonline.net/forum/view/96132 topic ben ik opzoek gegaan naar meer informatie over een FIR filter.
Ik heb zelf een functie trachten op te bouwen, om zo een FIR filter te kunnen gebruiken.
Ik wil nog steeds werken met een DSPIC.

De functie:

float Fir_Filter(int Input[],int Orde,float cof[]){
	float var;
	int i =0;
			for(i=0;i<=orde;i++){
				var = var + (Input[i] * cof[i]);	
			}
	return var;
}

Input => de array van de samples van de ADC
Orde=> De orde van de filter
Cof => de filter coëfficiënten
Return variable => wordt gestuurd naar de DAC

Echter zijn er nog wel wat vragen naar boven gekomen:

- Hoe groot moet een standaard input buffer zijn?

- Veranderd de grote van de input buffer ook met de orde van filter?
Zo nee, hoe wordt dan een 50ste orde filter berekend met een buffer van bv 15 samples?

Nonkel Dw

Het input buffer moet minimaal gelijk zijn aan het buffer met filter coëfficiënten, dat lijkt me nogal logisch. De dsPIC heeft MAC (multiply-accumulate) hardware aan boord, als je die niet gebruikt, had je beter een PIC32 kunnen nemen. Er zijn application notes beschikbaar over het gebruik van die MAC, waarmee die code waarschijnlijk zo'n 8 keer sneller zal lopen.