diff options
| author | xoviat <[email protected]> | 2023-08-21 18:33:10 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-08-21 18:33:10 -0500 |
| commit | 8878ce046c2665eb641f33bc484ca68083d7d353 (patch) | |
| tree | 03a45cae24a5c52293e1567cd33e1218a54e9d8a /embassy-stm32/src/rtc | |
| parent | 5bfddfc9b6c5b64cecba377cc6c42e1e270e98cc (diff) | |
rtc: fix rtcinstant delay computation
Diffstat (limited to 'embassy-stm32/src/rtc')
| -rw-r--r-- | embassy-stm32/src/rtc/v2.rs | 7 |
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 | } |
