From f501a1ba2cea0d7e4fdcdc2f289bce65f87528e3 Mon Sep 17 00:00:00 2001 From: Linus Harberg Date: Fri, 26 May 2023 16:40:10 +0200 Subject: [PATCH 1/2] Disable ppi group first to avoid BufferedUarte not getting dropped properly --- embassy-nrf/src/buffered_uarte.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs index c41d8398..4d053c02 100644 --- a/embassy-nrf/src/buffered_uarte.rs +++ b/embassy-nrf/src/buffered_uarte.rs @@ -646,6 +646,8 @@ mod _embedded_io { impl<'a, U: UarteInstance, T: TimerInstance> Drop for BufferedUarte<'a, U, T> { fn drop(&mut self) { + self._ppi_group.disable_all(); + let r = U::regs(); self.timer.stop(); From f4736457f5f6d0d72d27d5d560bf048ca2df359f Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Fri, 26 May 2023 16:50:19 +0200 Subject: [PATCH 2/2] nrf/timer: use low power counter mode. The regular one permanently requests HFCLK, while the low power one only does so while counting, for 1 clock cycle. The regular mode is "deprecated" too. --- embassy-nrf/src/timer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embassy-nrf/src/timer.rs b/embassy-nrf/src/timer.rs index e9d2132c..2a0e16a5 100644 --- a/embassy-nrf/src/timer.rs +++ b/embassy-nrf/src/timer.rs @@ -124,7 +124,7 @@ impl<'d, T: Instance> Timer<'d, T> { this.stop(); if is_counter { - regs.mode.write(|w| w.mode().counter()); + regs.mode.write(|w| w.mode().low_power_counter()); } else { regs.mode.write(|w| w.mode().timer()); }