From cc0685a3331ba723e7bff9540eee9b734a50ee04 Mon Sep 17 00:00:00 2001 From: jess Date: Wed, 1 Apr 2026 01:29:27 -0700 Subject: [PATCH] fix: AD5941 soft-reset between measurement modes to prevent pH->EIS lockup --- main/echem.c | 6 ++++++ main/eis.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/main/echem.c b/main/echem.c index 59f060d..cb20334 100644 --- a/main/echem.c +++ b/main/echem.c @@ -93,6 +93,9 @@ static uint16_t mv_to_vbias_code(float v_cell_mv) static void echem_init_lp(uint32_t rtia_reg) { + AD5940_SoftRst(); + AD5940_Initialize(); + CLKCfg_Type clk; memset(&clk, 0, sizeof(clk)); clk.HFOSCEn = bTRUE; @@ -207,6 +210,9 @@ static float read_current_ua(float rtia_ohms) static void echem_init_adc(void) { + AD5940_SoftRst(); + AD5940_Initialize(); + CLKCfg_Type clk; memset(&clk, 0, sizeof(clk)); clk.HFOSCEn = bTRUE; diff --git a/main/eis.c b/main/eis.c index 74a2ec0..4ba43cd 100644 --- a/main/eis.c +++ b/main/eis.c @@ -159,6 +159,10 @@ void eis_init(const EISConfig *cfg) ctx.sys_clk = 16000000.0f; resolve_config(); + /* reset to clear stale AFE state from prior measurement mode */ + AD5940_SoftRst(); + AD5940_Initialize(); + CLKCfg_Type clk; memset(&clk, 0, sizeof(clk)); clk.HFOSCEn = bTRUE;