aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-11-04 17:47:42 +0000
committerGitHub <[email protected]>2024-11-04 17:47:42 +0000
commitf55ebef380b49d109216e2cd6821fa1c35202748 (patch)
treef9f5cd378d6aa7326d75fe50fdc6198f693e2d10
parent6fe798d6805ce562243409b19eaadb0f4ce32af7 (diff)
parentf51ee98aef323b6d88e04ec4b3521a04d97485f9 (diff)
Merge pull request #3502 from embassy-rs/fix-pwm
nrf/pwm: fix bad pin assignment, disconnect input.
-rw-r--r--embassy-nrf/src/pwm.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index c8f1e0b09..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,9 +683,14 @@ 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(ch0.psel_bits()); 693 r.psel().out(i).write_value(ch.psel_bits());
685 } 694 }
686 695
687 let pwm = Self { 696 let pwm = Self {