diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-12-18 16:42:14 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-18 16:42:14 +0000 |
| commit | b494f2819c32c1b0e6884af8a259c314af2ec2de (patch) | |
| tree | cf91efd55a219960b6a266608030d3431653b81d | |
| parent | c3b5b1243f9ac80c85dc2fd1f88788a60baafd2f (diff) | |
| parent | 01d8543bc71d003b6f3aad50d17ff4fd0fa7461a (diff) | |
Merge pull request #5104 from embassy-rs/nrf54-now-init
fix: avoid hang if calling now() before syscounter is enabled
| -rw-r--r-- | embassy-nrf/CHANGELOG.md | 2 | ||||
| -rw-r--r-- | embassy-nrf/src/time_driver.rs | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/embassy-nrf/CHANGELOG.md b/embassy-nrf/CHANGELOG.md index 0d7bfb5f0..921835417 100644 --- a/embassy-nrf/CHANGELOG.md +++ b/embassy-nrf/CHANGELOG.md | |||
| @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |||
| 8 | <!-- next-header --> | 8 | <!-- next-header --> |
| 9 | ## Unreleased - ReleaseDate | 9 | ## Unreleased - ReleaseDate |
| 10 | 10 | ||
| 11 | - bugfix: avoid hang if calling now() before syscounter is enabled on nrf54 | ||
| 12 | |||
| 11 | ## 0.9.0 - 2025-12-15 | 13 | ## 0.9.0 - 2025-12-15 |
| 12 | 14 | ||
| 13 | - changed: apply trimming values from FICR.TRIMCNF on nrf53/54l | 15 | - changed: apply trimming values from FICR.TRIMCNF on nrf53/54l |
diff --git a/embassy-nrf/src/time_driver.rs b/embassy-nrf/src/time_driver.rs index 35f65bd64..21d94cc30 100644 --- a/embassy-nrf/src/time_driver.rs +++ b/embassy-nrf/src/time_driver.rs | |||
| @@ -79,6 +79,10 @@ fn calc_now(period: u32, counter: u32) -> u64 { | |||
| 79 | #[cfg(feature = "_grtc")] | 79 | #[cfg(feature = "_grtc")] |
| 80 | fn syscounter() -> u64 { | 80 | fn syscounter() -> u64 { |
| 81 | let r = rtc(); | 81 | let r = rtc(); |
| 82 | if !r.mode().read().syscounteren() { | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | |||
| 82 | r.syscounter(0).active().write(|w| w.set_active(true)); | 86 | r.syscounter(0).active().write(|w| w.set_active(true)); |
| 83 | loop { | 87 | loop { |
| 84 | let countl: u32 = r.syscounter(0).syscounterl().read(); | 88 | let countl: u32 = r.syscounter(0).syscounterl().read(); |
