diff options
| author | Frank Plowman <[email protected]> | 2024-02-16 17:24:58 +0000 |
|---|---|---|
| committer | Frank Plowman <[email protected]> | 2024-02-16 17:24:58 +0000 |
| commit | bcb0be21c180d4107e636083f5a1543a1f51447b (patch) | |
| tree | 20d869076985d342475e234cd0f2afc41d95939b /embassy-nrf | |
| parent | 26fc17e8a7db0957896db28cb2299ab9cf89aea5 (diff) | |
embassy-nrf: Fix PDM gain register value derivation
Co-authored-by: Sol Harter <[email protected]>
Diffstat (limited to 'embassy-nrf')
| -rw-r--r-- | embassy-nrf/src/pdm.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/embassy-nrf/src/pdm.rs b/embassy-nrf/src/pdm.rs index 24fa29a4a..64d414d8f 100644 --- a/embassy-nrf/src/pdm.rs +++ b/embassy-nrf/src/pdm.rs | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | use core::future::poll_fn; | 5 | use core::future::poll_fn; |
| 6 | use core::marker::PhantomData; | 6 | use core::marker::PhantomData; |
| 7 | use core::mem; | ||
| 7 | use core::sync::atomic::{compiler_fence, Ordering}; | 8 | use core::sync::atomic::{compiler_fence, Ordering}; |
| 8 | use core::task::Poll; | 9 | use core::task::Poll; |
| 9 | 10 | ||
| @@ -145,15 +146,14 @@ impl<'d, T: Instance> Pdm<'d, T> { | |||
| 145 | } | 146 | } |
| 146 | 147 | ||
| 147 | fn _set_gain(r: &crate::pac::pdm::RegisterBlock, gain_left: I7F1, gain_right: I7F1) { | 148 | fn _set_gain(r: &crate::pac::pdm::RegisterBlock, gain_left: I7F1, gain_right: I7F1) { |
| 148 | let gain_left = gain_left | 149 | let gain_to_bits = |gain: I7F1| -> u8 { |
| 149 | .saturating_add(I7F1::from_bits(40)) | 150 | let gain = gain.saturating_add(I7F1::from_bits(0x28)) |
| 150 | .saturating_to_num::<u8>() | 151 | .to_bits() |
| 151 | .clamp(0, 0x50); | 152 | .clamp(0, 0x50); |
| 152 | let gain_right = gain_right | 153 | unsafe { mem::transmute(gain) } |
| 153 | .saturating_add(I7F1::from_bits(40)) | 154 | }; |
| 154 | .saturating_to_num::<u8>() | 155 | let gain_left = gain_to_bits(gain_left); |
| 155 | .clamp(0, 0x50); | 156 | let gain_right = gain_to_bits(gain_right); |
| 156 | |||
| 157 | r.gainl.write(|w| unsafe { w.gainl().bits(gain_left) }); | 157 | r.gainl.write(|w| unsafe { w.gainl().bits(gain_left) }); |
| 158 | r.gainr.write(|w| unsafe { w.gainr().bits(gain_right) }); | 158 | r.gainr.write(|w| unsafe { w.gainr().bits(gain_right) }); |
| 159 | } | 159 | } |
