From 8a142f474ea51a3a97e2a42131bc2b74fcfa1452 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Tue, 28 Sep 2021 18:14:56 -0300 Subject: [PATCH] xtensa/esp32-s2/rttimer: Disable alarm before setting a new value and enabling it --- arch/xtensa/src/esp32s2/esp32s2_rt_timer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c b/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c index 5c7664c38f8..20539badd1e 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)); } }