From 227562cf3cf641aaa18d312d0204a50330435ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20H=C3=BCttel?= Date: Sun, 16 Aug 2020 20:33:25 +0200 Subject: [PATCH] Load calibration when SD card is inserted. * Load calibration when SD card is inserted and controller is not yet calibrated * Fix #7: LED0 blinks when SD is inserted / removed. --- stm-firmware/main.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/stm-firmware/main.c b/stm-firmware/main.c index ad93dae..e804f77 100644 --- a/stm-firmware/main.c +++ b/stm-firmware/main.c @@ -44,6 +44,7 @@ #include #include #include +#include static void setup_nvic_priorities(void) { @@ -191,7 +192,12 @@ static void zero_ccm_ram(void) int main(void) { + bool cal_active; + float offset; + float sens; + int status; bool sd_card_mounted = false; + bool sd_old; shellmatta_handle_t shell_handle; int menu_wait_request; uint64_t quarter_sec_timestamp = 0ULL; @@ -204,7 +210,25 @@ int main(void) while (1) { if (systick_ticks_have_passed(quarter_sec_timestamp, 250)) { + sd_old = sd_card_mounted; sd_card_mounted = mount_sd_card_if_avail(sd_card_mounted); + + if (sd_old != sd_card_mounted) { + led_set(0, 1); + } else { + led_set(0, 0); + } + + if (sd_card_mounted && !sd_old) { + adc_pt1000_get_resistance_calibration(NULL, NULL, &cal_active); + if (!cal_active) { + status = settings_load_calibration(&sens, &offset); + if (!status) { + adc_pt1000_set_resistance_calibration(offset, sens, true); + } + } + } + quarter_sec_timestamp = systick_get_global_tick(); }