This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf_gfx_init causes RTC1 interrupts to stop from being called?

I'm using SDK 15.0.0 on nRF52832_xxaa.

I'm currently using RTC1 as a low frequency timer to keep track of time elapsed while my device is sleeping. This works well and I get a pretty accurate interrupt seven times a second to increment time elapsed. I've used this same code on a few projects (sdk 12.3.0 with nRF51 and sdk 15 nRF52) without issue.

However I am now using the nrf gfx library with an LCD screen that has an ST7735S controller. On calling nrf_gfx_init, the RTC1 interrupt handler stops from being called. After this, I can call nrf_gfx_uninit and the RTC1 handler is called and works as intended. I first initialize the RTC1 timer and then some time later initialize gfx driver.

I can't seem to find any information about this online and if this is expected behavior. Not sure what further information I can provide than this, so I'm really looking for some information on how the two may be interfering with each other so I have some idea of what to investigate.

FWIW here is my RTC init function:

static STATUS_t _timer_rtc_init (void)
{
  ret_code_t err_code = nrf_drv_clock_init();
  APP_ERROR_CHECK(err_code);
  nrf_drv_clock_lfclk_request(NULL);

  // Initialize RTC instance
  nrf_drv_rtc_config_t config = NRF_DRV_RTC_DEFAULT_CONFIG;
  config.prescaler = TIMER_RTC_PRESCALER;
  err_code = nrf_drv_rtc_init(&rtc, &config, _timer_rtc_handler);
  APP_ERROR_CHECK(err_code);

  // Enable tick event & interrupt
  nrf_drv_rtc_tick_enable(&rtc, true);

  // Power on RTC instance
  nrf_drv_rtc_enable(&rtc);

  return (STATUS_OK);
}

Related