diff --git a/dsp.c b/dsp.c index 1201799..1aa3195 100644 --- a/dsp.c +++ b/dsp.c @@ -26,7 +26,23 @@ int16_t samp_buf[SAMPLE_LEN]; int16_t ref_buf[SAMPLE_LEN]; #endif -#if 1 +#ifdef USE_VARIABLE_OFFSET +int16_t sincos_tbl[AUDIO_SAMPLES_COUNT][2]; +void generate_DSP_Table(int offset){ + float audio_freq = AUDIO_ADC_FREQ; + // N = offset * AUDIO_SAMPLES_COUNT / audio_freq; should be integer + // AUDIO_SAMPLES_COUNT = N * audio_freq / offset; N - minimum integer value for get integer AUDIO_SAMPLES_COUNT + // Bandwidth on one step = audio_freq / AUDIO_SAMPLES_COUNT + float step = 2 * VNA_PI * offset / audio_freq; + float v = step/2; + for (int i=0; i>3); - acc_samp_c+= (int32_t)(samp_c>>3); - acc_ref_s += (int32_t)( ref_s>>3); - acc_ref_c += (int32_t)( ref_c>>3); +// acc_samp_s+= (int32_t)(samp_s>>4); +// acc_samp_c+= (int32_t)(samp_c>>4); +// acc_ref_s += (int32_t)( ref_s>>4); +// acc_ref_c += (int32_t)( ref_c>>4); } #endif @@ -134,19 +180,19 @@ calculate_gamma(float gamma[2]) #if 1 // calculate reflection coeff. by samp divide by ref #if 0 - float rs = acc_ref_s; - float rc = acc_ref_c; - float rr = rs * rs + rc * rc; + measure_t rs = acc_ref_s; + measure_t rc = acc_ref_c; + measure_t rr = rs * rs + rc * rc; //rr = sqrtf(rr) * 1e8; - float ss = acc_samp_s; - float sc = acc_samp_c; + measure_t ss = acc_samp_s; + measure_t sc = acc_samp_c; gamma[0] = (sc * rc + ss * rs) / rr; gamma[1] = (ss * rc - sc * rs) / rr; #else - float rs_rc = (float) acc_ref_s / acc_ref_c; - float sc_rc = (float)acc_samp_c / acc_ref_c; - float ss_rc = (float)acc_samp_s / acc_ref_c; - float rr = rs_rc * rs_rc + 1.0; + measure_t rs_rc = (measure_t) acc_ref_s / acc_ref_c; + measure_t sc_rc = (measure_t)acc_samp_c / acc_ref_c; + measure_t ss_rc = (measure_t)acc_samp_s / acc_ref_c; + measure_t rr = rs_rc * rs_rc + 1.0; gamma[0] = (sc_rc + ss_rc*rs_rc) / rr; gamma[1] = (ss_rc - sc_rc*rs_rc) / rr; #endif