Hi!
I'm not good at C and microcontrollers programming. Could somebody clarify, if nrf_rtc_counter_get interrupt safe? It just reads value from rtc register->COUNTER (24bit), how many ticks it takes?
Thanks.
Hi!
I'm not good at C and microcontrollers programming. Could somebody clarify, if nrf_rtc_counter_get interrupt safe? It just reads value from rtc register->COUNTER (24bit), how many ticks it takes?
Thanks.
how many ticks it takes?
Should take much less than one RTC tick, as this register is latched in the PCLK16M clock domain.
From the NRF52840 PS (chapter 6.22.9): "Read takes the CPU 2 cycles in addition resulting in the COUNTER register read taking a fixed five PCLK16M clock cycles."
Note that this does not include setup instructions - you may need to put the register address into a core register first.
how many ticks it takes?
Should take much less than one RTC tick, as this register is latched in the PCLK16M clock domain.
From the NRF52840 PS (chapter 6.22.9): "Read takes the CPU 2 cycles in addition resulting in the COUNTER register read taking a fixed five PCLK16M clock cycles."
Note that this does not include setup instructions - you may need to put the register address into a core register first.
Thanks for answers. As I understood it's no guarantees that
counter = nrf_rtc_counter_get(&rct_inst);
is (upd)interrupt safe. Another questions, is it possible without "CRITICAL_REGION_..." to have inconsistent counter value? For example, coping value is two ticks, and between them another interrupt occur, and before second tick rtc overflow happend.