diff --git a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/us_ticker.c b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/us_ticker.c index 73b2523..c389619 100644 --- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/us_ticker.c +++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/us_ticker.c @@ -141,14 +141,19 @@ void tmr1_stop(void) */ static inline uint64_t tmr1_getCounter64(void) { - int o = 0; - NRF_TIMER1->TASKS_CAPTURE[2] = 1; - if (NRF_TIMER1->EVENTS_COMPARE[3]) - o++; + NVIC_DisableIRQ(TIMER1_IRQn); - return (((uint64_t)(overflowCount+o)) << 16) | (NRF_TIMER1->CC[2] & MAX_TMR1_COUNTER_VAL); + if (NRF_TIMER1->EVENTS_COMPARE[3]) + { + NRF_TIMER1->EVENTS_COMPARE[3] = 0; + overflowCount++; + } + + NVIC_EnableIRQ(TIMER1_IRQn); + + return (((uint64_t)(overflowCount)) << 16) | (NRF_TIMER1->CC[2] & MAX_TMR1_COUNTER_VAL); } /**