aboutsummaryrefslogtreecommitdiff
path: root/rtic-monotonics/src/rp2040.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rtic-monotonics/src/rp2040.rs')
-rw-r--r--rtic-monotonics/src/rp2040.rs22
1 files changed, 5 insertions, 17 deletions
diff --git a/rtic-monotonics/src/rp2040.rs b/rtic-monotonics/src/rp2040.rs
index 130c7d3..998b532 100644
--- a/rtic-monotonics/src/rp2040.rs
+++ b/rtic-monotonics/src/rp2040.rs
@@ -28,7 +28,7 @@ use super::Monotonic;
pub use super::{TimeoutError, TimerQueue};
use core::future::Future;
-pub use fugit::{self, ExtU64};
+pub use fugit::{self, ExtU64, ExtU64Ceil};
use rp2040_pac::{timer, Interrupt, NVIC, RESETS, TIMER};
/// Timer implementing [`Monotonic`] which runs at 1 MHz.
@@ -104,6 +104,7 @@ impl Monotonic for Timer {
type Duration = fugit::TimerDurationU64<1_000_000>;
const ZERO: Self::Instant = Self::Instant::from_ticks(0);
+ const TICK_PERIOD: Self::Duration = Self::Duration::from_ticks(1);
fn now() -> Self::Instant {
let timer = Self::timer();
@@ -151,23 +152,10 @@ impl Monotonic for Timer {
fn disable_timer() {}
}
-#[cfg(feature = "embedded-hal-async")]
-impl embedded_hal_async::delay::DelayUs for Timer {
- async fn delay_us(&mut self, us: u32) {
- Self::delay((us as u64).micros()).await;
- }
-
- async fn delay_ms(&mut self, ms: u32) {
- Self::delay((ms as u64).millis()).await;
- }
-}
+rtic_time::embedded_hal_delay_impl_fugit64!(Timer);
-impl embedded_hal::delay::DelayUs for Timer {
- fn delay_us(&mut self, us: u32) {
- let done = Self::now() + u64::from(us).micros();
- while Self::now() < done {}
- }
-}
+#[cfg(feature = "embedded-hal-async")]
+rtic_time::embedded_hal_async_delay_impl_fugit64!(Timer);
/// Register the Timer interrupt for the monotonic.
#[macro_export]