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

NRF52832, RTC2 and 1 second interrupt

Hello everyone,

I am stuck at a problem that I cannot resolve myself but I see that other people in the forum don't experience such a behaviour of their nrf52832s.

I want to have a 1 second timebase with RTC2 using the Nordic's SDK version: nRF5_SDK_17.0.2_d674dde.

I can get an interrupt at each RTC tick, but I cannot get interrupt on COMPARE0 event. Here is my code:

const nrf_drv_rtc_t rtc = NRF_DRV_RTC_INSTANCE(2);

void rtc_handler(nrf_drv_rtc_int_type_t int_type){
    if (int_type == NRF_DRV_RTC_INT_COMPARE0)
    {
    	nrf_gpio_pin_toggle(22); //This never gets called
    }
    else if (int_type == NRF_DRV_RTC_INT_TICK){
    	nrf_gpio_pin_toggle(23); //This gets called once every 122 ms
    }
}

void lfclk_config(void){
    ret_code_t err_code = nrf_drv_clock_init();
    APP_ERROR_CHECK(err_code);

    nrf_drv_clock_lfclk_request(NULL);
}

void user_rtc_init(void){
    uint32_t err_code;

    lfclk_config();

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

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

    //Set compare channel to trigger interrupt after COMPARE_COUNTERTIME seconds
    err_code = nrf_drv_rtc_cc_set(&rtc, 0, 1 * 8, true);
    APP_ERROR_CHECK(err_code);

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

Any help is appreciated! Thanks in advance!

L. B.

Parents Reply Children
No Data
Related