summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nrf5/modules/machine/rtc.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/nrf5/modules/machine/rtc.c b/nrf5/modules/machine/rtc.c
index 4a9c4977b..d7559ae8c 100644
--- a/nrf5/modules/machine/rtc.c
+++ b/nrf5/modules/machine/rtc.c
@@ -52,24 +52,27 @@ STATIC machine_rtc_obj_t machine_rtc_obj[] = {
};
STATIC void hal_interrupt_handle(NRF_RTC_Type * p_instance) {
+ const machine_rtc_obj_t * self = NULL;
if (p_instance == RTC0) {
- const machine_rtc_obj_t *self = &machine_rtc_obj[0];
+ self = &machine_rtc_obj[0];
mp_call_function_0(self->callback);
-
- hal_rtc_stop(&self->rtc->config);
- if (self->mode == 1) {
- hal_rtc_start(&self->rtc->config, self->period);
- }
} else if (p_instance == RTC1) {
- const machine_rtc_obj_t *self = &machine_rtc_obj[1];
+ self = &machine_rtc_obj[1];
mp_call_function_0(self->callback);
}
#if NRF52
else if (p_instance == RTC2) {
- const machine_rtc_obj_t *self = &machine_rtc_obj[2];
+ self = &machine_rtc_obj[2];
mp_call_function_0(self->callback);
}
#endif
+
+ if (self != NULL) {
+ hal_rtc_stop(&self->rtc->config);
+ if (self->mode == 1) {
+ hal_rtc_start(&self->rtc->config, self->period);
+ }
+ }
}
void rtc_init0(void) {