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

Issue with timer extended compare mode

Hello, I want timer to interrupt if timer is not restarted in 200ms and wrote below code.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void timerConfig (void){
uint32_t time_ticks;
uint16_t time_ms;
//Configure timer
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
timer_cfg.bit_width =NRF_TIMER_BIT_WIDTH_32;
timer_cfg.frequency =NRF_TIMER_FREQ_16MHz;
uint32_t err_code = nrf_drv_timer_init(&controllerTimer, &timer_cfg, oneWireCommunicationTimerTimeouthandler);
APP_ERROR_CHECK(err_code);
time_ms = 200; //200 ms timeout timer
time_ticks = nrf_drv_timer_ms_to_ticks(&controllerTimer, time_ms);
nrf_drv_timer_extended_compare(
&controllerTimer, NRF_TIMER_CC_CHANNEL0, time_ticks, NRF_TIMER_SHORT_COMPARE1_CLEAR_MASK, true);
nrf_drv_timer_disable(&controllerTimer);
nrf_drv_timer_clear(&controllerTimer);
nrf_drv_timer_enable(&controllerTimer);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

I am restarted timer in few milliseconds using below but still I m getting interrupt. Please suggest.

//re-start the timer
nrf_drv_timer_disable(&controllerTimer);
nrf_drv_timer_clear(&controllerTimer);
nrf_drv_timer_enable(&controllerTimer);

Thanks