From e017cb8a9dcebfadb26ffcc7cac4e6fa5dbf2ca2 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 21 Sep 2023 17:21:01 +0200 Subject: [PATCH] compute sps/volume on load --- Core/Src/PSE_unit.c | 20 ++++++++++++++++++++ Core/Src/home_screen.c | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Core/Src/PSE_unit.c b/Core/Src/PSE_unit.c index b264a88..cf7ac4a 100644 --- a/Core/Src/PSE_unit.c +++ b/Core/Src/PSE_unit.c @@ -81,6 +81,26 @@ void load_units(pse_unit* units, pse_syringe* syringes, pse_stepper_conf* steppe } f_close(&saveFile); + + // compute prescalers/period for each units + for(int i = 0; i < unit_num; i++){ + pse_unit* c_pse_unit = &units[i]; + // update stepper pwm generation + pse_stepper_planer_compute_sps(c_pse_unit); + + // compute volume delivered per steps + pse_unit_compute_volume_per_step(c_pse_unit); + + // set limit if volume defined + if(c_pse_unit->set_volume != 0){ + if(c_pse_unit->nL_per_step == 0) break; // TODO: alert popup / better resolution + if(c_pse_unit->flow == 0) break; + c_pse_unit->stepper_status->stop_at_limit = 1; + c_pse_unit->stepper_status->stop_steps = (uint64_t)1000 * c_pse_unit->set_volume / c_pse_unit->nL_per_step; } + else + c_pse_unit->stepper_status->stop_at_limit = 0; + } + } void load_units_short(pse_unit* units, uint8_t unit_num, uint16_t ws_ind){ diff --git a/Core/Src/home_screen.c b/Core/Src/home_screen.c index 51caf24..e6a318c 100644 --- a/Core/Src/home_screen.c +++ b/Core/Src/home_screen.c @@ -119,7 +119,7 @@ static void update_readouts_widgets(){ for(int i = 0; i < units_num; i++){ pse_unit* pse_unit = &units[i]; lv_label_set_text_fmt(pse_unit->home_display->flow, "%u.%03u\nmL/mn", pse_unit->flow / 1000, pse_unit->flow % 1000); - // lv_label_set_text_fmt(pse_unit->home_display->volume, "%lu.%lu\nmL", pse_unit->volume / 1000, pse_unit->volume % 1000); + volume_readout_update(NULL); lv_obj_t* enabled = pse_unit->home_display->enabled; lv_obj_t* enabled_label = lv_obj_get_child(enabled, 0);