send keepalives during blocking waits (clean, pH, chlorine settling)
This commit is contained in:
parent
292a1a2e87
commit
c1721dfd1f
38
main/echem.c
38
main/echem.c
|
|
@ -327,7 +327,14 @@ int echem_clean(float v_mv, float duration_s)
|
|||
AD5940_LPDAC0WriteS(code, VZERO_CODE);
|
||||
|
||||
printf("Clean: %.0f mV for %.0f s\n", v_mv, duration_s);
|
||||
vTaskDelay(pdMS_TO_TICKS((uint32_t)(duration_s * 1000.0f)));
|
||||
|
||||
uint32_t remain_ms = (uint32_t)(duration_s * 1000.0f);
|
||||
while (remain_ms > 0) {
|
||||
uint32_t chunk = remain_ms > 3000 ? 3000 : remain_ms;
|
||||
vTaskDelay(pdMS_TO_TICKS(chunk));
|
||||
remain_ms -= chunk;
|
||||
if (remain_ms > 0) send_keepalive();
|
||||
}
|
||||
|
||||
echem_shutdown_lp();
|
||||
AD5940_AFECtrlS(AFECTRL_ALL, bFALSE);
|
||||
|
|
@ -497,7 +504,15 @@ static uint32_t sample_phase(float v_mv, float t_dep_ms, float t_meas_ms,
|
|||
AD5940_LPDAC0WriteS(mv_to_vbias_code(v_mv), VZERO_CODE);
|
||||
|
||||
/* settling — no samples recorded */
|
||||
vTaskDelay(pdMS_TO_TICKS((uint32_t)t_dep_ms));
|
||||
{
|
||||
uint32_t remain_ms = (uint32_t)t_dep_ms;
|
||||
while (remain_ms > 0) {
|
||||
uint32_t chunk = remain_ms > 3000 ? 3000 : remain_ms;
|
||||
vTaskDelay(pdMS_TO_TICKS(chunk));
|
||||
remain_ms -= chunk;
|
||||
if (remain_ms > 0) send_keepalive();
|
||||
}
|
||||
}
|
||||
|
||||
/* measurement — sample at ~50ms intervals */
|
||||
uint32_t n_samples = (uint32_t)(t_meas_ms / 50.0f + 0.5f);
|
||||
|
|
@ -541,7 +556,15 @@ int echem_chlorine(const ClConfig *cfg, ClPoint *out, uint32_t max_points,
|
|||
|
||||
printf("Cl: conditioning at %.0f mV for %.0f ms\n", cfg->v_cond, cfg->t_cond_ms);
|
||||
AD5940_LPDAC0WriteS(mv_to_vbias_code(cfg->v_cond), VZERO_CODE);
|
||||
vTaskDelay(pdMS_TO_TICKS((uint32_t)cfg->t_cond_ms));
|
||||
{
|
||||
uint32_t remain_ms = (uint32_t)cfg->t_cond_ms;
|
||||
while (remain_ms > 0) {
|
||||
uint32_t chunk = remain_ms > 3000 ? 3000 : remain_ms;
|
||||
vTaskDelay(pdMS_TO_TICKS(chunk));
|
||||
remain_ms -= chunk;
|
||||
if (remain_ms > 0) send_keepalive();
|
||||
}
|
||||
}
|
||||
|
||||
printf("Cl: free chlorine at %.0f mV\n", cfg->v_free);
|
||||
idx = sample_phase(cfg->v_free, cfg->t_dep_ms, cfg->t_meas_ms,
|
||||
|
|
@ -579,7 +602,14 @@ int echem_ph_ocp(const PhConfig *cfg, PhResult *result)
|
|||
AD5940_ADCBaseCfgS(&adc);
|
||||
|
||||
printf("pH: stabilizing %0.f s\n", cfg->stabilize_s);
|
||||
vTaskDelay(pdMS_TO_TICKS((uint32_t)(cfg->stabilize_s * 1000.0f)));
|
||||
|
||||
uint32_t remain_ms = (uint32_t)(cfg->stabilize_s * 1000.0f);
|
||||
while (remain_ms > 0) {
|
||||
uint32_t chunk = remain_ms > 3000 ? 3000 : remain_ms;
|
||||
vTaskDelay(pdMS_TO_TICKS(chunk));
|
||||
remain_ms -= chunk;
|
||||
if (remain_ms > 0) send_keepalive();
|
||||
}
|
||||
|
||||
/* average N readings of V(SE0) and V(RE0) */
|
||||
#define PH_AVG_N 10
|
||||
|
|
|
|||
Loading…
Reference in New Issue