diff --git a/src/eis_shield/ad5933.c b/src/eis_shield/ad5933.c index f0bfb039afb9bad1c39ac7a62d057284d20cb82f..9a48e61756bca97f961f742f0d10692a22928a61 100644 --- a/src/eis_shield/ad5933.c +++ b/src/eis_shield/ad5933.c @@ -115,6 +115,8 @@ static bool set_settling_cycles(uint16_t cycles); static void set_gain(uint8_t pga_gain, uint8_t o_range); static void set_control_mode(uint8_t); +static uint16_t init_settle_ms = 400; + static uint8_t read_byte(uint8_t address) { /** @@ -220,7 +222,7 @@ static void write_block(uint8_t address, uint8_t length, uint8_t* buffer) { } void ad5933_set_params(uint32_t start, uint32_t increment, uint16_t n_increments, - uint16_t settle_cycles, uint8_t gain, uint8_t output_range) { + uint16_t settle_cycles, uint8_t gain, uint8_t output_range, uint16_t init_ms) { /** * Set EIS sweep parameters. * @@ -237,6 +239,7 @@ void ad5933_set_params(uint32_t start, uint32_t increment, uint16_t n_increments set_num_increments(n_increments); set_gain(gain, output_range); set_settling_cycles(settle_cycles); + init_settle_ms = init_ms; return; } @@ -395,7 +398,7 @@ cint16_t ad5933_measure_one(uint8_t measure_type) { ad5933_reset(); set_control_mode(CTRL_STANDBY_MODE); set_control_mode(CTRL_INIT_START_FREQ); - delay_ms(400); + delay_ms(init_settle_ms); set_control_mode(CTRL_START_FREQ_SWEEP); break; diff --git a/src/eis_shield/ad5933.h b/src/eis_shield/ad5933.h index a0b7c4b304f07109922cf619262493d45c4638df..636e60d6bde37ea518dd0a214f584aae190a05b7 100644 --- a/src/eis_shield/ad5933.h +++ b/src/eis_shield/ad5933.h @@ -25,7 +25,8 @@ typedef struct c_int16_t { void ad5933_set_internal_mclk(uint8_t internal); void ad5933_reset(void); void ad5933_set_params(uint32_t start, uint32_t increment, uint16_t n_increments, - uint16_t settle_cycles, uint8_t gain, uint8_t output_range); + uint16_t settle_cycles, uint8_t gain, uint8_t output_range, + uint16_t init_ms); void ad5933_sweep(cint16_t imp[], int n); cint16_t ad5993_get_complex_data(void); cint16_t ad5933_measure_one(uint8_t measure_type); diff --git a/src/eis_shield/eis.c b/src/eis_shield/eis.c index d73f1d3a477201e0d116eec172fb61bd8698f170..efc2b963c376a32a6650ca793937da1151fe6412 100644 --- a/src/eis_shield/eis.c +++ b/src/eis_shield/eis.c @@ -24,7 +24,7 @@ void eis_init(void){ void eis_measure_auto(uint32_t start, uint32_t increment, uint16_t n_increments, uint16_t settle_cycles, uint8_t pga_gain, uint8_t output_range, uint8_t iv_gain, uint16_t attenuation, uint16_t offset, - uint8_t reference, cint16_t* result_buffer){ + uint8_t reference, uint16_t init_ms, cint16_t* result_buffer){ /** Runs eis experiment in auto mode and writes result to buffer. @@ -38,10 +38,11 @@ void eis_measure_auto(uint32_t start, uint32_t increment, uint16_t n_increments, @param attenuation gain setting @param offset offset voltage in max5443 units @param reference Reference connection setting + @param init_ms Delay before first measurement in ms @param result_buffer Buffer to store results */ eis_set_mclk(0); - ad5933_set_params(start, increment, n_increments, settle_cycles, pga_gain, output_range); + ad5933_set_params(start, increment, n_increments, settle_cycles, pga_gain, output_range, init_ms); eis_set_ref(reference); eis_set_gain(iv_gain); ad5272_write_rdac(attenuation); @@ -57,9 +58,9 @@ void eis_measure_auto(uint32_t start, uint32_t increment, uint16_t n_increments, void eis_set_params(uint32_t start, uint32_t increment, uint16_t n_increments, uint16_t settle_cycles, uint8_t pga_gain, uint8_t output_range, uint8_t iv_gain, uint16_t attenuation, uint16_t offset, - uint8_t reference, uint16_t mclk_div2){ + uint8_t reference, uint16_t mclk_div2, uint16_t init_ms){ eis_set_mclk(mclk_div2); - ad5933_set_params(start, increment, n_increments, settle_cycles, pga_gain, output_range); + ad5933_set_params(start, increment, n_increments, settle_cycles, pga_gain, output_range, init_ms); eis_set_ref(reference); eis_set_gain(iv_gain); ad5272_write_rdac(attenuation); diff --git a/src/eis_shield/eis.h b/src/eis_shield/eis.h index 805d70a47c33b9d904a41151bd77d3e45df7b267..012900d733587036762c97239655dc61a3ca183b 100644 --- a/src/eis_shield/eis.h +++ b/src/eis_shield/eis.h @@ -22,11 +22,11 @@ void eis_init(void); void eis_measure_auto(uint32_t start, uint32_t increment, uint16_t n_increments, uint16_t settle_cycles, uint8_t pga_gain, uint8_t output_range, uint8_t iv_gain, uint16_t attenuation, uint16_t offset, - uint8_t reference, cint16_t* result_buffer); + uint8_t reference, uint16_t init_ms, cint16_t* result_buffer); void eis_set_params(uint32_t start, uint32_t increment, uint16_t n_increments, uint16_t settle_cycles, uint8_t pga_gain, uint8_t output_range, uint8_t iv_gain, uint16_t attenuation, uint16_t offset, - uint8_t reference, uint16_t mclk_div2); + uint8_t reference, uint16_t mclk_div2, uint16_t init_ms); cint16_t eis_measure_one(void); extern uint8_t eis_status;