aboutsummaryrefslogtreecommitdiff
path: root/rtic-monotonics/src/nrf
diff options
context:
space:
mode:
authorNils Fitinghoff <nils.fitinghoff@mobilaris.se>2023-09-14 16:47:52 +0200
committerEmil Fresk <emil.fresk@gmail.com>2023-09-19 13:31:09 +0000
commita2ec8f983c799dea0a6f57ba97431ded54fc6197 (patch)
tree6e7f5397f2065d7751f13ff6ad9e825e16fc51d2 /rtic-monotonics/src/nrf
parent54aec9b3989162a60534620b80cde78d2d5cc1ba (diff)
rtic-monotonics: Implement blocking DelayUs from embedded-hal 1
Diffstat (limited to 'rtic-monotonics/src/nrf')
-rw-r--r--rtic-monotonics/src/nrf/rtc.rs7
-rw-r--r--rtic-monotonics/src/nrf/timer.rs7
2 files changed, 14 insertions, 0 deletions
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);