Skip to content

Commit 75ba6b7

Browse files
committed
Polished tickers implementation - moved interrupt clearing code.
1 parent bf70d5a commit 75ba6b7

File tree

2 files changed

+6
-21
lines changed

2 files changed

+6
-21
lines changed

hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/lp_ticker.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ void lp_ticker_disable_interrupt(void)
4242

4343
void lp_ticker_clear_interrupt(void)
4444
{
45-
// No implementation needed. The event that triggers the interrupt is
46-
// cleared in 'common_rtc_irq_handler'.
45+
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, LP_TICKER_EVENT);
4746
}
4847

4948
#endif // DEVICE_LOWPOWERTIMER

hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/us_ticker.c

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,32 +34,19 @@ void common_rtc_irq_handler(void)
3434
void COMMON_RTC_IRQ_HANDLER(void)
3535
#endif
3636
{
37-
nrf_rtc_event_t event;
38-
uint32_t int_mask;
39-
40-
event = US_TICKER_EVENT;
41-
int_mask = US_TICKER_INT_MASK;
42-
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, event)) {
43-
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, event);
44-
nrf_rtc_event_disable(COMMON_RTC_INSTANCE, int_mask);
45-
37+
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, US_TICKER_EVENT)) {
4638
us_ticker_irq_handler();
4739
}
4840

4941
#if DEVICE_LOWPOWERTIMER
50-
event = LP_TICKER_EVENT;
51-
int_mask = LP_TICKER_INT_MASK;
52-
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, event)) {
53-
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, event);
54-
nrf_rtc_event_disable(COMMON_RTC_INSTANCE, int_mask);
42+
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, LP_TICKER_EVENT)) {
5543

5644
lp_ticker_irq_handler();
5745
}
5846
#endif
5947

60-
event = NRF_RTC_EVENT_OVERFLOW;
61-
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, event)) {
62-
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, event);
48+
if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, NRF_RTC_EVENT_OVERFLOW)) {
49+
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, NRF_RTC_EVENT_OVERFLOW);
6350
// Don't disable this event. It shall occur periodically.
6451

6552
++m_common_rtc_overflows;
@@ -204,6 +191,5 @@ void us_ticker_disable_interrupt(void)
204191

205192
void us_ticker_clear_interrupt(void)
206193
{
207-
// No implementation needed. The event that triggers the interrupt is
208-
// cleared in 'common_rtc_irq_handler'.
194+
nrf_rtc_event_clear(COMMON_RTC_INSTANCE, US_TICKER_EVENT);
209195
}

0 commit comments

Comments
 (0)