Hello,
I am trying to get the RTC2 working in order to maintain time for my application. I intend to use the BLE DFU feature in my application and so I am using the softdevice (uses RTC0). I am aware that the application timer which uses (RTC1). That is the reason I chose to use RTC2 after going through various forum posts advising this.
Now the problem that I am facing is I am successfully able to merge my RTC code with my BLE application code. But the RTC2 doesn't seem to be working. If I comment out the BLE code and change my RTC to RTC0 it works fine.
To make sure that RTC2 works I modified the basic RTC example that Nordic provides. The original example used RTC0, so I modified it to make it work for RTC2. And that too doesn't work. I tried to get the RTC1 and that didn't work either.
For the RTC example I made following changes to get it to work.
In sdk_config.h =>
#define RTC2_ENABLED 1
In main.c
const nrf_drv_rtc_t rtc = NRF_DRV_RTC_INSTANCE(2); /**< Declaring an instance of nrf_drv_rtc for RTC0. */
/** @brief: Function for handling the RTC0 interrupts.
* Triggered on TICK and COMPARE0 match.
*/
static void rtc_handler(nrf_drv_rtc_int_type_t int_type)
{
if (int_type == NRF_DRV_RTC_INT_COMPARE2)
{
nrf_gpio_pin_toggle(COMPARE_EVENT_OUTPUT);
nrf_drv_rtc_counter_clear(&rtc);
nrf_drv_rtc_int_enable(&rtc, NRF_RTC_INT_COMPARE2_MASK);
}
else if (int_type == NRF_DRV_RTC_INT_TICK)
{
nrf_gpio_pin_toggle(TICK_EVENT_OUTPUT);
}
}