From 3b39ab07e5b52acfe2ba7aa7f92cfa3c859d3dd7 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Thu, 24 Sep 2020 19:59:20 +0200 Subject: Add 64-bit rtc driver with alarm support. --- examples/src/bin/rtc_raw.rs | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/src/bin/rtc_raw.rs (limited to 'examples/src') diff --git a/examples/src/bin/rtc_raw.rs b/examples/src/bin/rtc_raw.rs new file mode 100644 index 000000000..041bbaf0d --- /dev/null +++ b/examples/src/bin/rtc_raw.rs @@ -0,0 +1,55 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +#[path = "../example_common.rs"] +mod example_common; +use example_common::*; + +use core::mem::MaybeUninit; +use cortex_m_rt::entry; +use embassy_nrf::rtc; +use nrf52840_hal::clocks; + +static mut RTC: MaybeUninit> = MaybeUninit::uninit(); + +#[entry] +fn main() -> ! { + info!("Hello World!"); + + let p = embassy_nrf::pac::Peripherals::take().dewrap(); + + clocks::Clocks::new(p.CLOCK) + .enable_ext_hfosc() + .set_lfclk_src_external(clocks::LfOscConfiguration::NoExternalNoBypass) + .start_lfclk(); + + let rtc: &'static _ = unsafe { + let ptr = RTC.as_mut_ptr(); + ptr.write(rtc::RTC::new(p.RTC1)); + &*ptr + }; + + rtc.start(); + rtc.set_alarm(53719); + + info!("initialized!"); + + let mut val = 0; + let mut printval = 0; + loop { + let val2 = rtc.now(); + if val2 < val { + info!( + "timer ran backwards! {:u32} -> {:u32}", + val as u32, val2 as u32 + ); + } + val = val2; + + if val > printval + 32768 { + info!("tick {:u32}", val as u32); + printval = val; + } + } +} -- cgit