diff --git a/dsp_fft.c b/dsp_fft.c index 21e70a4..077ff90 100644 --- a/dsp_fft.c +++ b/dsp_fft.c @@ -100,14 +100,22 @@ volatile uint32_t dsp_tickx = 0; // Load indicator DSP loop // Spectrum bins for a frequency #define BIN(f) (int)(((f)*FFT_SIZE+S_RATE/2)/S_RATE) -#define BIN_FC 256 // BIN_FC > BIN_3000 to avoid aliasing! -#define BIN_100 7 -#define BIN_300 20 -#define BIN_900 59 -#define BIN_3000 197 - +#define BIN_FC BIN(FC_OFFSET) // BIN_FC > BIN_3000 to avoid aliasing! +#define BIN_100 BIN(100) +#define BIN_300 BIN(300) +#define BIN_900 BIN(900) +#define BIN_3000 BIN(3000) +static inline void __not_in_flash_func(dsp_curve)(int16_t *pData, int step) +{ + int i = 0; + pData[i] = pData[i]/15; i+=step; + pData[i] = pData[i]/4; i+=step; + pData[i] = pData[i]/2; i+=step; + pData[i] = ((int32_t)pData[i]*3)/4; i+=step; + pData[i] = ((int32_t)pData[i]*933)/1000; +} /* * This applies a bandpass filter to XI and XQ buffers @@ -138,30 +146,17 @@ void __not_in_flash_func(dsp_bandpass)(int lowbin, int highbin, int sign) for (i=hi2+1; i