aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/rtc
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-08-21 18:33:10 -0500
committerxoviat <[email protected]>2023-08-21 18:33:10 -0500
commit8878ce046c2665eb641f33bc484ca68083d7d353 (patch)
tree03a45cae24a5c52293e1567cd33e1218a54e9d8a /embassy-stm32/src/rtc
parent5bfddfc9b6c5b64cecba377cc6c42e1e270e98cc (diff)
rtc: fix rtcinstant delay computation
Diffstat (limited to 'embassy-stm32/src/rtc')
-rw-r--r--embassy-stm32/src/rtc/v2.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/embassy-stm32/src/rtc/v2.rs b/embassy-stm32/src/rtc/v2.rs
index 7acf1b6ac..e9b83123c 100644
--- a/embassy-stm32/src/rtc/v2.rs
+++ b/embassy-stm32/src/rtc/v2.rs
@@ -54,8 +54,8 @@ impl core::ops::Sub for RtcInstant {
54 54
55 trace!("self st: {}", st); 55 trace!("self st: {}", st);
56 56
57 let self_ticks = st as u32 * 256 + self.ssr as u32; 57 let self_ticks = st as u32 * 256 + (255 - self.ssr as u32);
58 let other_ticks = rhs.st as u32 * 256 + rhs.ssr as u32; 58 let other_ticks = rhs.st as u32 * 256 + (255 - rhs.ssr as u32);
59 let rtc_ticks = self_ticks - other_ticks; 59 let rtc_ticks = self_ticks - other_ticks;
60 60
61 trace!("self ticks: {}", self_ticks); 61 trace!("self ticks: {}", self_ticks);
@@ -65,7 +65,8 @@ impl core::ops::Sub for RtcInstant {
65 // TODO: read prescaler 65 // TODO: read prescaler
66 66
67 Duration::from_ticks( 67 Duration::from_ticks(
68 ((((st as u32 * 256 + self.ssr as u32) - (rhs.st as u32 * 256 + rhs.ssr as u32)) * TICK_HZ as u32) as u32 68 ((((st as u32 * 256 + (255u32 - self.ssr as u32)) - (rhs.st as u32 * 256 + (255u32 - rhs.ssr as u32)))
69 * TICK_HZ as u32) as u32
69 / 256u32) as u64, 70 / 256u32) as u64,
70 ) 71 )
71 } 72 }