summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Ruben Bakke <glennbakke@gmail.com>2017-03-06 23:05:03 +0100
committerGlenn Ruben Bakke <glennbakke@gmail.com>2017-03-06 23:05:03 +0100
commit5acba015ef391f66c8699b7fb187cc8db0c8bd0a (patch)
treee962594e6e63ef699c8758c990611e5dc7480bdb
parent7c50cd26a2225158a7229af1c23e21999fe0dd9c (diff)
nrf5/modules/rtc: Adding support for stopping and restarting rtc (if periodic) for all the instances of RTC.
-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) {