From 5acba015ef391f66c8699b7fb187cc8db0c8bd0a Mon Sep 17 00:00:00 2001 From: Glenn Ruben Bakke Date: Mon, 6 Mar 2017 23:05:03 +0100 Subject: [PATCH] nrf5/modules/rtc: Adding support for stopping and restarting rtc (if periodic) for all the instances of RTC. --- nrf5/modules/machine/rtc.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/nrf5/modules/machine/rtc.c b/nrf5/modules/machine/rtc.c index 4a9c4977be..d7559ae8c2 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) {