From d26de3893a300599f7336984d34b98d4c222e70b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= Date: Sat, 18 Jul 2020 16:26:45 +0200 Subject: [PATCH] Initial work for interrupt driven alarms Use INT pin from DS3231 for raising an interrupt. --- src/main.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index b385b7d..f6dacbd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,7 @@ extern crate ds323x; use ds323x::{Ds323x, NaiveTime, Rtcc}; use tm4c123x_hal::gpio::GpioExt; -use tm4c123x_hal::gpio::{Floating, AF2, AF3}; +use tm4c123x_hal::gpio::{InterruptMode, Floating, AF2, AF3}; use tm4c123x_hal::i2c::I2c; use tm4c123x_hal::sysctl::{self, SysctlExt}; use tm4c123x_hal::time::U32Ext; @@ -110,6 +110,16 @@ fn main() -> ! { writeln!(stdout, "conf ds3231").unwrap(); let mut rtc = Ds323x::new_ds3231(i2c_dev); + // we'll use interrupt + rtc.clear_alarm1_matched_flag().unwrap(); + rtc.use_int_sqw_output_as_interrupt().unwrap(); + rtc.enable_alarm1_interrupts().unwrap(); + + // GPIO for interrupt + // SQW pin wired to PD6 + let mut pd6 = portd.pd6.into_pull_up_input(); + pd6.set_interrupt_mode(InterruptMode::EdgeFalling); + let time = NaiveTime::from_hms(23, 58, 45); rtc.set_time(&time).unwrap();