Hallo,
so sieht mein Programm aus, das kommt ein Signal (Echo signal)
soll mit gefiltert aber igerndwie scheint nicht richtig zu
funktionieren, klar der Signal ist ein Flaot zahl wird umgewandelt in
Fractional, dann durch Blackfin bearbeitet.
Hast Du schonmal sowas gemacht, wenn ja würde mich freuen wenn Du mir
weiter helfen kannst.
Gruss
#include <filter.h>
#include <fract.h>
#include "FIR.h"
#include "BF533 Flags.h"
#include "Echo_1_1.h"
#include <string.h>
#define laenge_filter 50
float state[laenge_filter+1];
float filt_ende[laenge_filter];
float laenge_echo=256;
float filter[6][50] = {.......}
fract16 fir_delay[laenge_filter*6];
fract16 fir_coeffs[laenge_filter*6];
fir_state_fr16 fir_state[6];
//////////////////////////////////////////////////////////////
void Init_filter(void)
{
short i,j;
float f;
int u;
for(i=0;i<6;i++)
{
for(j=0;j<laenge_filter;j++)
{
fir_coeffs[i*laenge_filter+j]=5000;//(short)(filter[i][j]*32768);
//2^15=32768
}
}
for(i=0;i<6;i++)
fir_init (fir_state[i], &fir_coeffs[laenge_filter*i],
&fir_delay[laenge_filter*i], laenge_filter,1);
}
////////////////////////////////////////////////////////////
float filt_nrg()
{
int filtnum=2; //laenge=960,del_filt;
float x[256];
fract16 Signal_in[256],Signal_out[256];
short i;
memcpy(x,echo,laenge_echo);
// Float to Fract.
for(i=0;i<256;i++)
Signal_in[i]=x[i]/32768;
fir_fr16(Signal_in, Signal_out, 256 , &fir_state[filtnum]);
fir_fr16(Signal_out, Signal_in, 256 , &fir_state[filtnum]);