diff --git a/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c b/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c index 5c7664c38f..20539badd1 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c +++ b/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c @@ -176,6 +176,7 @@ static void start_rt_timer(struct rt_timer_s *timer, { /* Reset the hardware timer alarm */ + ESP32S2_TIM_SETALRM(priv->timer, false); ESP32S2_TIM_SETALRVL(priv->timer, USEC_TO_CYCLES(timer->alarm)); ESP32S2_TIM_SETALRM(priv->timer, true); } @@ -254,6 +255,7 @@ static void stop_rt_timer(struct rt_timer_s *timer) list); alarm = next_timer->alarm; + ESP32S2_TIM_SETALRM(priv->timer, false); ESP32S2_TIM_SETALRVL(priv->timer, USEC_TO_CYCLES(alarm)); ESP32S2_TIM_SETALRM(priv->timer, true); } @@ -473,6 +475,8 @@ static int rt_timer_isr(int irq, void *context, void *arg) timer = container_of(priv->runlist.next, struct rt_timer_s, list); alarm = timer->alarm; + + ESP32S2_TIM_SETALRM(priv->timer, false); ESP32S2_TIM_SETALRVL(priv->timer, USEC_TO_CYCLES(alarm)); } }