From cfedb2eaf4a0d62969ff05307ac40d4f1cdab2d9 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sun, 17 Jun 2018 18:18:38 -0600 Subject: Implemented halfsleep mode. Will probably change it quite a bit though, so I'm checking in changes first. Needs to be "tick during standby" instead of "half sleep". --- spaghetti-monster/fsm-events.h | 6 ++++++ spaghetti-monster/fsm-standby.c | 38 +++++++++++++++++++++++++++++++------- spaghetti-monster/fsm-standby.h | 7 +++++-- spaghetti-monster/fsm-wdt.c | 17 +++++++++++++++++ spaghetti-monster/fsm-wdt.h | 4 ++++ 5 files changed, 63 insertions(+), 9 deletions(-) diff --git a/spaghetti-monster/fsm-events.h b/spaghetti-monster/fsm-events.h index 2721303..84e9ea2 100644 --- a/spaghetti-monster/fsm-events.h +++ b/spaghetti-monster/fsm-events.h @@ -64,6 +64,7 @@ static volatile uint16_t ticks_since_last_event = 0; #define A_OVERHEATING 9 #define A_UNDERHEATING 10 #define A_VOLTAGE_LOW 11 +#define A_HALFSLEEP_TICK 12 //#define A_VOLTAGE_CRITICAL 12 #define A_DEBUG 255 // test event for debugging @@ -83,6 +84,11 @@ Event EV_reenter_state[] = { Event EV_tick[] = { A_TICK, 0 } ; +#ifdef USE_HALFSLEEP_MODE +Event EV_halfsleep_tick[] = { + A_HALFSLEEP_TICK, + 0 } ; +#endif #ifdef USE_LVP Event EV_voltage_low[] = { A_VOLTAGE_LOW, diff --git a/spaghetti-monster/fsm-standby.c b/spaghetti-monster/fsm-standby.c index b90ccea..8e51dda 100644 --- a/spaghetti-monster/fsm-standby.c +++ b/spaghetti-monster/fsm-standby.c @@ -31,7 +31,17 @@ #define standby_mode sleep_until_eswitch_pressed void sleep_until_eswitch_pressed() { + #ifdef USE_HALFSLEEP_MODE + //uint16_t sleep_counter = 0; + if (halfsleep_mode) { + // set WDT to slow mode + wdt_reset(); + WDTCR |= (1<