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

Restartig app_timer does not work with nRF52832 and SDK12.0.0

I am having an app_timer (nRF52832 / SDK12.0.0) that's interval must be changed during its lifetime. I am using following code to change the interval:

app_timer_stop(m_timer_id);
uint32_t interval = APP_TIMER_TICKS(interval_ms, APP_TIMER_PRESCALER);
app_timer_start(m_timer_id, interval, NULL);

So far so good, but what really happens is that I end up having a delay of a minute or so, before timer starts to fire interrupts again. This happens only when I change the interval. My target interval is from 10 to 100 ms.

Could there be a bug somewhere in the app_timer library code? With SDK8.0.0 and nRF51822 I did not have similar problem. My code is exactly the same.

Parents
  • Thanks! The problem arises when I change from 100 ms interval to 50 ms interval, and vice versa. The related code is shown above, in the original question. Could it be possible that the underlying hardware counter is not cleared and when the compare value is changed, first firing of the comparison is missed (because counter has already passed the value) and the timer starts to fire only after the counter rolls over back to zero?

Reply
  • Thanks! The problem arises when I change from 100 ms interval to 50 ms interval, and vice versa. The related code is shown above, in the original question. Could it be possible that the underlying hardware counter is not cleared and when the compare value is changed, first firing of the comparison is missed (because counter has already passed the value) and the timer starts to fire only after the counter rolls over back to zero?

Children
No Data
Related