RTC "tick" Interrupt Timing Anomaly

In my nRF52810 based circuit board I'm trying to use the RTC along with the RTC tick interrupt to toggle an IO pin every 6msec.    In main.c   I use WFE to enter low power mode between the RTC tick event interrupts.  This seems to work fine with the output pin toggling every 6 msec as desired, but 25 seconds later, the output toggle period changes from 6 msec to about every 7 seconds.   This event is very repeatable.  If I comment out the WFE instruction, the problem goes away.  Can you point me in the right direction?  See the “code” below.

// Configure LFCLK 

void lfclk_config(void)
{
// Initialize the low frequency clock 
   nrf_drv_clock_init();

// Request the clock to not generate events
   nrf_drv_clock_lfclk_request(NULL);
}


// RTC1 interrupt handler 

void rtc1_handler(nrfx_rtc_int_type_t int_type)
{
    nrf_gpio_pin_toggle(output_pin); // toggle output
}


// Configure the RTC1

void rtc1_config(void)
{	
    nrfx_rtc_config_t rtc1_config = NRFX_RTC_DEFAULT_CONFIG;

    // Configure the RTC to tick every 6.25ms which results in an 80HZ output frequency
    rtc1_config.prescaler = 203; // tick =  32768 / (203 + 1) = 80Hz = 12.5msec (all approximate).

    // Initialize the rtc 
    nrfx_rtc_init(&rtc1, &rtc1_config, rtc1_handler);
 
    // Enable a tick interrupt on each tick
    nrfx_rtc_tick_enable(&rtc1, true);

    // start the rtc 
    nrfx_rtc_enable(&rtc1);
}


int main(void)
{
     gpio_init(); // Initialize the gpio
     lfclk_config(); //low frequency low power clock configuration
     nrfx_clock_lfclk_start();
     rtc1_config(); // rtc1 configuration 
      
      while (true) 
      {
           __WFE(); 
      }

}

Related