From a2a60eb31a9bd8990705d4799406697bc9b0888f Mon Sep 17 00:00:00 2001 From: Alex Maestas Date: Mon, 22 Jan 2024 00:37:25 +0000 Subject: [PATCH] annotate SLEEPCFG-register detail --- watch-library/hardware/hal/src/hal_sleep.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/watch-library/hardware/hal/src/hal_sleep.c b/watch-library/hardware/hal/src/hal_sleep.c index fd9c84c..2fac64d 100644 --- a/watch-library/hardware/hal/src/hal_sleep.c +++ b/watch-library/hardware/hal/src/hal_sleep.c @@ -57,7 +57,13 @@ int sleep(const uint8_t mode) if (ERR_NONE != _set_sleep_mode(mode)) return ERR_INVALID_ARG; - // wait for the mode set to actually take, per chip doc. + // wait for the mode set to actually take, per note in Microchip data + // sheet DS60001465, section 19.8.2: + // + // A small latency happens between the store instruction and actual + // writing of the SLEEPCFG register due to bridges. Software has to make + // sure the SLEEPCFG register reads the wanted value before issuing WFI + // instruction. while(_get_sleep_mode() != mode); _go_to_sleep();