Hi Nordic Team,
On my project, I added nrf_calendar using the Softdevice using the SDK 14,
the calendar is working fine most of the time. but I have an issue when I tried updating the data time using nrf_cal_set_time for the 2nd time, it is not incrementing anymore and keep printing the same values
behaivor:
1) Init calendar on main calling calling nrf_cal_init()
2) set data time using nrf_cal_set_time, for example, today 07/11/18 06:15:07 (works fine... calendar working fine after, hours, days)
3) print data time using printf("Calibrated time:\t%s\r\n", nrf_cal_get_time_string(true)); (fine)
the issue starts here:
4) updating the data time using nrf_cal_set_time for 2nd time or more keeps printing the same value not increasing the time
for example, if use nrf_cal_set_time to update to 07/11/18 18:30:00 it keeps printing 07/11/18 18:30:00 over the time with not increasing
Can someone give an advice with it?
my initialization code makes it works with the softdevice for sdk15
void nrf_cal_init(void) { // RTC2 and the 32 kHz crystal CAL_RTC->PRESCALER = 0xFFF; CAL_RTC->EVTENSET = RTC_EVTENSET_COMPARE2_Msk; CAL_RTC->INTENSET = RTC_INTENSET_COMPARE2_Msk; CAL_RTC->CC[0] = m_rtc_increment * 8; CAL_RTC->TASKS_START = 1; NVIC_SetPriority(CAL_RTC_IRQn, CAL_RTC_IRQ_Priority); NVIC_EnableIRQ(CAL_RTC_IRQn); }
// on nrf_calendar.c void CAL_RTC_IRQHandler(void) { if(CAL_RTC->EVENTS_COMPARE[0]) { CAL_RTC->EVENTS_COMPARE[0] = 0; CAL_RTC->TASKS_CLEAR = 1; m_time += m_rtc_increment; if(cal_event_callback) cal_event_callback(); } } //interruption hanlder on nrf_calendar.c void CAL_RTC_IRQHandler(void) { if(CAL_RTC->EVENTS_COMPARE[0]) { CAL_RTC->EVENTS_COMPARE[0] = 0; CAL_RTC->TASKS_CLEAR = 1; m_time += m_rtc_increment; if(cal_event_callback) cal_event_callback(); } } // on nrf_calendar.h #define CAL_RTC NRF_RTC2 #define CAL_RTC_IRQn RTC2_IRQn #define CAL_RTC_IRQHandler RTC2_IRQHandler #define CAL_RTC_IRQ_Priority 3
Regards