diff options
| -rw-r--r-- | embassy-nrf/src/pwm.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs index ad88029b0..7f1f568f4 100644 --- a/embassy-nrf/src/pwm.rs +++ b/embassy-nrf/src/pwm.rs | |||
| @@ -132,6 +132,7 @@ impl<'d, T: Instance> SequencePwm<'d, T> { | |||
| 132 | pin.set_low(); | 132 | pin.set_low(); |
| 133 | pin.conf().write(|w| { | 133 | pin.conf().write(|w| { |
| 134 | w.set_dir(gpiovals::Dir::OUTPUT); | 134 | w.set_dir(gpiovals::Dir::OUTPUT); |
| 135 | w.set_input(gpiovals::Input::DISCONNECT); | ||
| 135 | w.set_drive(convert_drive(config.ch0_drive)); | 136 | w.set_drive(convert_drive(config.ch0_drive)); |
| 136 | }); | 137 | }); |
| 137 | } | 138 | } |
| @@ -139,6 +140,7 @@ impl<'d, T: Instance> SequencePwm<'d, T> { | |||
| 139 | pin.set_low(); | 140 | pin.set_low(); |
| 140 | pin.conf().write(|w| { | 141 | pin.conf().write(|w| { |
| 141 | w.set_dir(gpiovals::Dir::OUTPUT); | 142 | w.set_dir(gpiovals::Dir::OUTPUT); |
| 143 | w.set_input(gpiovals::Input::DISCONNECT); | ||
| 142 | w.set_drive(convert_drive(config.ch1_drive)); | 144 | w.set_drive(convert_drive(config.ch1_drive)); |
| 143 | }); | 145 | }); |
| 144 | } | 146 | } |
| @@ -146,6 +148,7 @@ impl<'d, T: Instance> SequencePwm<'d, T> { | |||
| 146 | pin.set_low(); | 148 | pin.set_low(); |
| 147 | pin.conf().write(|w| { | 149 | pin.conf().write(|w| { |
| 148 | w.set_dir(gpiovals::Dir::OUTPUT); | 150 | w.set_dir(gpiovals::Dir::OUTPUT); |
| 151 | w.set_input(gpiovals::Input::DISCONNECT); | ||
| 149 | w.set_drive(convert_drive(config.ch2_drive)); | 152 | w.set_drive(convert_drive(config.ch2_drive)); |
| 150 | }); | 153 | }); |
| 151 | } | 154 | } |
| @@ -153,6 +156,7 @@ impl<'d, T: Instance> SequencePwm<'d, T> { | |||
| 153 | pin.set_low(); | 156 | pin.set_low(); |
| 154 | pin.conf().write(|w| { | 157 | pin.conf().write(|w| { |
| 155 | w.set_dir(gpiovals::Dir::OUTPUT); | 158 | w.set_dir(gpiovals::Dir::OUTPUT); |
| 159 | w.set_input(gpiovals::Input::DISCONNECT); | ||
| 156 | w.set_drive(convert_drive(config.ch3_drive)); | 160 | w.set_drive(convert_drive(config.ch3_drive)); |
| 157 | }); | 161 | }); |
| 158 | } | 162 | } |
| @@ -679,7 +683,12 @@ impl<'d, T: Instance> SimplePwm<'d, T> { | |||
| 679 | for (i, ch) in [&ch0, &ch1, &ch2, &ch3].into_iter().enumerate() { | 683 | for (i, ch) in [&ch0, &ch1, &ch2, &ch3].into_iter().enumerate() { |
| 680 | if let Some(pin) = ch { | 684 | if let Some(pin) = ch { |
| 681 | pin.set_low(); | 685 | pin.set_low(); |
| 682 | pin.conf().write(|w| w.set_dir(gpiovals::Dir::OUTPUT)); | 686 | |
| 687 | pin.conf().write(|w| { | ||
| 688 | w.set_dir(gpiovals::Dir::OUTPUT); | ||
| 689 | w.set_input(gpiovals::Input::DISCONNECT); | ||
| 690 | w.set_drive(gpiovals::Drive::S0S1); | ||
| 691 | }); | ||
| 683 | } | 692 | } |
| 684 | r.psel().out(i).write_value(ch.psel_bits()); | 693 | r.psel().out(i).write_value(ch.psel_bits()); |
| 685 | } | 694 | } |
