diff options
| -rw-r--r-- | embassy-nrf/src/pwm.rs | 13 |
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> { | |||
| 323 | impl<'a, T: Instance> Drop for Pwm<'a, T> { | 327 | impl<'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"); |
