i have recently upgraded to SDK 15.2, and since doing so I am struggling to get timestamps working in the logger.
I am initialising the logger here:
//Start microsecond timer:
ret_code_t err_code = NRF_LOG_INIT(time_us);
And here is my microsecond timer.
const nrf_drv_timer_t us_timer = NRF_DRV_TIMER_INSTANCE(1);
nrf_drv_timer_config_t timer_cfg =
.frequency = NRF_TIMER_FREQ_1MHz, //Sets prescaler to get a counter increment at 1MHz.
.mode = NRF_TIMER_MODE_TIMER, // in this mode counter increments by 1 on each clock cycle (clock x prescaler actually)
.bit_width = NRF_TIMER_BIT_WIDTH_32,
.interrupt_priority = TIMER_DEFAULT_CONFIG_IRQ_PRIORITY,
.p_context = NULL
// Timestamp function for logging
uint32_t time = nrf_drv_timer_capture(&us_timer,NRF_TIMER_CC_CHANNEL0);
When I log (using NRF_LOG_INFO("comment")) no timestamp appears. This code worked in SDK 14.2 . Any ideas what I'm misssing? Thank you.
You can use the example SDK15.2\examples\ble_peripheral\experimental\ble_app_cli as a template, and look at the core_init function there. Also,make sure you have enabled NRF_LOG_USES_TIMESTAMP in your config file, set NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY as 0 to use the app_timer frequency, or set the frequency yourself.
EDIT: I think I found an easier starting point, as the aforementioned project might be confusing. You can look at the SDK15.2\examples\ble_peripheral\ble_app_hrs example instead, here too make sure to enable NRF_LOG_USES_TIMESTAMP, and use app_timer as the frequency variable (at least I did). Then run NRF_LOG_INIT(app_timer_cnt_get), by default that function is NRF_LOG_INIT(NULL) so you have to change that.
Also I don't know if you are using UART or RTT as a backend, but I recommend RTT as UART might mix up the timestamp info depending on what terminal you are using.
Great, thank you. its always something small! I had to enable NRF_LOG_USES_TIMESTAMP in the config file (I thought I had already done that actually).
Thank you Simon.