From a2ec8f983c799dea0a6f57ba97431ded54fc6197 Mon Sep 17 00:00:00 2001 From: Nils Fitinghoff Date: Thu, 14 Sep 2023 16:47:52 +0200 Subject: rtic-monotonics: Implement blocking DelayUs from embedded-hal 1 --- rtic-monotonics/src/nrf/rtc.rs | 7 +++++++ rtic-monotonics/src/nrf/timer.rs | 7 +++++++ 2 files changed, 14 insertions(+) (limited to 'rtic-monotonics/src/nrf') diff --git a/rtic-monotonics/src/nrf/rtc.rs b/rtic-monotonics/src/nrf/rtc.rs index c74c986..9491307 100644 --- a/rtic-monotonics/src/nrf/rtc.rs +++ b/rtic-monotonics/src/nrf/rtc.rs @@ -180,6 +180,13 @@ macro_rules! make_rtc { } } + impl embedded_hal::delay::DelayUs for $mono_name { + fn delay_us(&mut self, us: u32) { + let done = Self::now() + u64::from(us).micros(); + while Self::now() < done {} + } + } + impl Monotonic for $mono_name { const ZERO: Self::Instant = Self::Instant::from_ticks(0); diff --git a/rtic-monotonics/src/nrf/timer.rs b/rtic-monotonics/src/nrf/timer.rs index 1b90f16..bd544d0 100644 --- a/rtic-monotonics/src/nrf/timer.rs +++ b/rtic-monotonics/src/nrf/timer.rs @@ -216,6 +216,13 @@ macro_rules! make_timer { } } + impl embedded_hal::delay::DelayUs for $mono_name { + fn delay_us(&mut self, us: u32) { + let done = Self::now() + (us as u64).micros(); + while Self::now() < done {} + } + } + impl Monotonic for $mono_name { const ZERO: Self::Instant = Self::Instant::from_ticks(0); -- cgit v1.2.3