From a7f51b7d902ccac0b59cc320e49ed95ddadd8c81 Mon Sep 17 00:00:00 2001 From: Jonas Pettersson Date: Tue, 8 Aug 2023 23:21:13 +0200 Subject: [PATCH] Add function to enable multiple PWM slices at the same time This is needed to be able to have e.g. 3 PWM slices that are in phase, but may use different duty cycles. Example usage: `pwm_slices.enable_simultaneous(0b0000_0111);` --- rp2040-hal/src/pwm/mod.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/rp2040-hal/src/pwm/mod.rs b/rp2040-hal/src/pwm/mod.rs index 5c2dafee6..6b21b3f69 100644 --- a/rp2040-hal/src/pwm/mod.rs +++ b/rp2040-hal/src/pwm/mod.rs @@ -501,17 +501,16 @@ impl Slices { self._pwm } - // /// Enable multiple slices at the same time to make their counters sync up. - // /// - // /// You still need to call `slice` to get an actual slice - // pub fn enable_simultaneous(&mut self, bits: u8) { - // // Enable all slices at the same time - // unsafe { - // &(*pac::PWM::ptr()) - // .en - // .modify(|r, w| w.bits(((r.bits() as u8) | bits) as u32)); - // } - // } + /// Enable multiple slices at the same time to make their counters sync up. + /// + /// You still need to call `slice` to get an actual slice + pub fn enable_simultaneous(&mut self, bits: u8) { + // Enable multiple slices at the same time + unsafe { + let reg = self._pwm.en.as_ptr(); + write_bitmask_set(reg, bits as u32); + } + } // /// Get pwm slice based on gpio pin // pub fn borrow_mut_from_pin<