diff --git a/epicardium/main.c b/epicardium/main.c index f472e6b3f6c9e0be8d0ddc1d2daafb06e5586142..c1adc53667d1f28a4ee585fcac72c946c5b5bbea 100644 --- a/epicardium/main.c +++ b/epicardium/main.c @@ -57,6 +57,9 @@ int main(void) card10_init(); card10_diag(); + /* TODO: Move this to its own function */ + SCB->SCR |= SCB_SCR_SEVONPEND_Msk; + pmic_set_button_callback(pmic_button); cdcacm_init(); diff --git a/epicardium/support.c b/epicardium/support.c index 19bab453d15898beb0b1c9d09a0965003f25f7fc..5a2d55c647b97265960f83a6d9bc2985e45c6926 100644 --- a/epicardium/support.c +++ b/epicardium/support.c @@ -24,14 +24,10 @@ void pre_idle_sleep(TickType_t xExpectedIdleTime) * TODO: Ensure this is actually correct and does not have any * race conditions. */ - __asm volatile( "cpsie i" ::: "memory" ); __asm volatile( "dsb" ::: "memory" ); - __asm volatile( "isb" ); + __asm volatile( "sev" ); + __asm volatile( "wfe" ); __asm volatile( "wfe" ); - __asm volatile( "dsb" ::: "memory" ); - __asm volatile( "isb" ); - __asm volatile( "cpsid i" ::: "memory" ); - __asm volatile( "dsb" ); __asm volatile( "isb" ); } }