From 52c58c46f7c9c7aced3a5eb174c88d444a6d8a57 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sat, 21 Mar 2020 21:03:42 -0600 Subject: fixed potential eeprom corruption after turning boost/opamp chip on/off (some boost chips can make power unstable for a few ms, so we have to wait before accessing eeprom) --- spaghetti-monster/fsm-eeprom.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'spaghetti-monster') diff --git a/spaghetti-monster/fsm-eeprom.c b/spaghetti-monster/fsm-eeprom.c index 277e2b2..77352cf 100644 --- a/spaghetti-monster/fsm-eeprom.c +++ b/spaghetti-monster/fsm-eeprom.c @@ -30,6 +30,10 @@ uint8_t eeprom[EEPROM_BYTES]; #endif uint8_t load_eeprom() { + #ifdef LED_ENABLE_PIN + delay_4ms(2); // wait for power to stabilize + #endif + cli(); // check if eeprom has been initialized; abort if it hasn't uint8_t marker = eeprom_read_byte((uint8_t *)EEP_START); @@ -44,6 +48,10 @@ uint8_t load_eeprom() { } void save_eeprom() { + #ifdef LED_ENABLE_PIN + delay_4ms(2); // wait for power to stabilize + #endif + cli(); // save the actual data @@ -62,6 +70,10 @@ uint8_t eeprom_wl[EEPROM_WL_BYTES]; EEP_OFFSET_T eep_wl_prev_offset; uint8_t load_eeprom_wl() { + #ifdef LED_ENABLE_PIN + delay_4ms(2); // wait for power to stabilize + #endif + cli(); // check if eeprom has been initialized; abort if it hasn't uint8_t found = 0; @@ -87,6 +99,10 @@ uint8_t load_eeprom_wl() { } void save_eeprom_wl() { + #ifdef LED_ENABLE_PIN + delay_4ms(2); // wait for power to stabilize + #endif + cli(); // erase old state EEP_OFFSET_T offset = eep_wl_prev_offset; -- cgit v1.2.3