diff options
| -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 | } |
