Hello, I am using nrf52840 board and SDK 16.0.0.
I am trying to merge this calendar example (https://github.com/NordicPlayground/nrf5-calendar-example) into ble_app_template project. My main function looks like this.
int main(void)
{
bool erase_bonds;
/** Calendar example merging starts from here **/
uint8_t uart_byte;
uint32_t year, month, day, hour, minute, second;
NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
NRF_CLOCK->TASKS_HFCLKSTART = 1;
while(NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
nrf_cal_init();
nrf_cal_set_callback(calendar_updated, 4);
uart_init();
/** Ble example code starts from here **/
// Initialize.
log_init();
timers_init();
buttons_leds_init(&erase_bonds);
power_management_init();
ble_stack_init();
gap_params_init();
mac_add_find();
gatt_init();
advertising_init();
services_init();
conn_params_init();
peer_manager_init();
// Start execution.
NRF_LOG_INFO("Template example started.");
application_timers_start();
advertising_start(erase_bonds);
/** Calendar example **/
printf("\r\nCalendar demo\r\n\n");
printf("s - Set time\r\n");
printf("g - Get time\r\n");
printf("r - Run continuous time updates\r\n\n");
/*
while (true)
{
if(app_uart_get(&uart_byte) == NRF_SUCCESS)
{
switch(uart_byte)
{
case 's':
run_time_updates = false;
year = (uint32_t)uart_get_parameter("Enter year", 1970, 2100);
month = (uint32_t)uart_get_parameter("Enter month", 0, 11);
day = (uint32_t)uart_get_parameter("Enter day", 1, 31);
hour = (uint32_t)uart_get_parameter("Enter hour", 0, 23);
minute = (uint32_t)uart_get_parameter("Enter minute", 0, 59);
second = (uint32_t)uart_get_parameter("Enter second", 0, 59);
nrf_cal_set_time(year, month, day, hour, minute, second);
printf("Time set: ");
printf("%s", nrf_cal_get_time_string(false));
printf("\r\n\n");
break;
case 'g':
//print_current_time();
printf("%s", nrf_cal_get_time_string(false));
break;
}
}
}
*/
// Enter main loop.
for (;;)
{
idle_state_handle();
}
}
Here are the problems.
Problem #1
In the main function, it seems nrf_cal_init() and ble_stack_init() function are not compatible, it always resulted NRF_BREAKPOINT_COND.
static void ble_stack_init(void)
{
ret_code_t err_code;
err_code = nrf_sdh_enable_request();
APP_ERROR_CHECK(err_code); // << Where the error is happening
...
}
Problem #2
Also, uart_init() function from the calendar example seems to collide with log_init() function from the ble_app_template example. The error is generated when I debug this function inside the log_init(). I put the comment on the problem line.
void nrf_log_default_backends_init(void)
{
int32_t backend_id = -1;
(void)backend_id;
...
#if defined(NRF_LOG_BACKEND_UART_ENABLED) && NRF_LOG_BACKEND_UART_ENABLED
nrf_log_backend_uart_init(); // << Where the error is happening
backend_id = nrf_log_backend_add(&uart_log_backend, NRF_LOG_SEVERITY_DEBUG);
ASSERT(backend_id >= 0);
nrf_log_backend_enable(&uart_log_backend);
#endif
}
I guess the first problem might be the RTC0 issues by the SoftDevice, but the Problem 2, I don't know whats going on. I appreciate any suggestions and solutions! Thank you