From 4820c4f433ae5a66fa016c832110ceb395557778 Mon Sep 17 00:00:00 2001 From: Michael DM Dryden Date: Mon, 1 May 2017 17:18:43 -0400 Subject: [PATCH] Implemented 4x averaging --- src/eis_shield/eis.c | 3 +++ src/eis_shield/eis.h | 3 ++- src/experiment.c | 48 +++++++++++++++++++++++++++++++++++++------- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/eis_shield/eis.c b/src/eis_shield/eis.c index 7e43c9a..d73f1d3 100644 --- a/src/eis_shield/eis.c +++ b/src/eis_shield/eis.c @@ -79,6 +79,9 @@ cint16_t eis_measure_one(void){ case EIS_STATUS_MEASURE: result = ad5933_measure_one(AD5933_MEASURE_NEXT); break; + case EIS_STATUS_REPEAT: + result = ad5933_measure_one(AD5933_MEASURE_REPEAT); + break; default: result = ad5933_measure_one(AD5933_MEASURE_NEXT); break; diff --git a/src/eis_shield/eis.h b/src/eis_shield/eis.h index ff7b9af..805d70a 100644 --- a/src/eis_shield/eis.h +++ b/src/eis_shield/eis.h @@ -11,7 +11,8 @@ #define EIS_STATUS_READY 0 #define EIS_STATUS_MEASURE 1 -#define EIS_STATUS_DONE 2 +#define EIS_STATUS_REPEAT 2 +#define EIS_STATUS_DONE 3 #include #include "ad5933.h" diff --git a/src/experiment.c b/src/experiment.c index e147ca7..dc310e7 100644 --- a/src/experiment.c +++ b/src/experiment.c @@ -121,6 +121,8 @@ void experiment_handler(char command){ uint16_t n_increments, settle_cycles, attenuation, offset, mclk_div2; uint8_t pga_gain, output_range, iv_gain, reference; + uint8_t avg_counter = 0; + scanf("%lu%lu%u%u%hhu%hhu%hhu%u%u%hhu%u", &start_f, &increment_f, &n_increments, &settle_cycles, &pga_gain, &output_range, &iv_gain, &attenuation, &offset, &reference, &mclk_div2); @@ -132,9 +134,11 @@ void experiment_handler(char command){ result.increment = 0; + cint16_t imp_avg[4]; + pot_exp_start(); //Disconnect DStat from shield eis_set_params(start_f, increment_f, n_increments-1, settle_cycles, pga_gain, output_range, - iv_gain, attenuation, offset, reference, mclk_div2); + iv_gain, attenuation, offset, reference, mclk_div2); while (eis_status != EIS_STATUS_DONE){ if (udi_cdc_is_rx_ready()){ @@ -144,12 +148,42 @@ void experiment_handler(char command){ } } - result.imp = eis_measure_one(); - if (result.imp.real != 0 && result.imp.imag != 0) { - printf("B\n"); - udi_cdc_write_buf(&result, 6); - printf("\r\n"); - result.increment++; + imp_avg[avg_counter] = eis_measure_one(); + + if (eis_status == EIS_STATUS_DONE) + break; + + else if (avg_counter < 4){ + eis_status = EIS_STATUS_REPEAT; + avg_counter++; + } + else { + avg_counter = 0; + eis_status = EIS_STATUS_MEASURE; + + int32_t sum_real = 0; + int32_t sum_imag = 0; + + for (uint8_t i = 0; i < 4; i++) { +// printf("#IMP: %i \r\n", imp_avg[i].real); + sum_real += imp_avg[i].real; + sum_imag += imp_avg[i].imag; + } + + sum_real /= 4; + sum_imag /= 4; + + result.imp.real = sum_real; + result.imp.imag = sum_imag; + + printf("#IMP: %i + %ii\r\n", result.imp.real, result.imp.imag); + + if (result.imp.real != 0 && result.imp.imag != 0) { + printf("B\n"); + udi_cdc_write_buf(&result, 6); + printf("\r\n"); + result.increment++; + } } } -- GitLab