aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-nrf/src/pwm.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index 64b5e5478..d834b1303 100644
--- a/embassy-nrf/src/pwm.rs
+++ b/embassy-nrf/src/pwm.rs
@@ -167,24 +167,28 @@ impl<'d, T: Instance> Pwm<'d, T> {
167 if let Some(pin) = ch0.pin_mut() { 167 if let Some(pin) = ch0.pin_mut() {
168 pin.set_low(); 168 pin.set_low();
169 pin.conf().write(|w| w.dir().output()); 169 pin.conf().write(|w| w.dir().output());
170 r.psel.out[0].write(|w| unsafe { w.bits(ch0.psel_bits()) });
171 } 170 }
171
172 if let Some(pin) = ch1.pin_mut() { 172 if let Some(pin) = ch1.pin_mut() {
173 pin.set_low(); 173 pin.set_low();
174 pin.conf().write(|w| w.dir().output()); 174 pin.conf().write(|w| w.dir().output());
175 r.psel.out[1].write(|w| unsafe { w.bits(ch1.psel_bits()) });
176 } 175 }
177 if let Some(pin) = ch2.pin_mut() { 176 if let Some(pin) = ch2.pin_mut() {
178 pin.set_low(); 177 pin.set_low();
179 pin.conf().write(|w| w.dir().output()); 178 pin.conf().write(|w| w.dir().output());
180 r.psel.out[2].write(|w| unsafe { w.bits(ch2.psel_bits()) });
181 } 179 }
182 if let Some(pin) = ch3.pin_mut() { 180 if let Some(pin) = ch3.pin_mut() {
183 pin.set_low(); 181 pin.set_low();
184 pin.conf().write(|w| w.dir().output()); 182 pin.conf().write(|w| w.dir().output());
185 r.psel.out[3].write(|w| unsafe { w.bits(ch3.psel_bits()) });
186 } 183 }
187 184
185 // if NoPin provided writes disconnected (top bit 1) 0x80000000 else
186 // writes pin number ex 13 (0x0D) which is connected (top bit 0)
187 r.psel.out[0].write(|w| unsafe { w.bits(ch0.psel_bits()) });
188 r.psel.out[1].write(|w| unsafe { w.bits(ch1.psel_bits()) });
189 r.psel.out[2].write(|w| unsafe { w.bits(ch2.psel_bits()) });
190 r.psel.out[3].write(|w| unsafe { w.bits(ch3.psel_bits()) });
191
188 r.enable.write(|w| w.enable().enabled()); 192 r.enable.write(|w| w.enable().enabled());
189 193
190 r.mode 194 r.mode
@@ -323,6 +327,7 @@ impl<'d, T: Instance> Pwm<'d, T> {
323impl<'a, T: Instance> Drop for Pwm<'a, T> { 327impl<'a, T: Instance> Drop for Pwm<'a, T> {
324 fn drop(&mut self) { 328 fn drop(&mut self) {
325 let r = T::regs(); 329 let r = T::regs();
330
326 r.enable.write(|w| w.enable().disabled()); 331 r.enable.write(|w| w.enable().disabled());
327 332
328 info!("pwm drop: done"); 333 info!("pwm drop: done");