rp: add OutputOpenDrain input test.

This commit is contained in:
Dario Nieuwenhuis 2022-12-06 21:09:27 +01:00
parent 7cbc3aefe6
commit 54c153673d

View File

@ -78,6 +78,7 @@ async fn main(_spawner: Spawner) {
a.set_as_input();
// When an OutputOpenDrain is high, it doesn't drive the pin.
b.set_high();
a.set_pull(Pull::Up);
delay();
assert!(a.is_high());
@ -85,9 +86,8 @@ async fn main(_spawner: Spawner) {
delay();
assert!(a.is_low());
b.set_low();
// When an OutputOpenDrain is low, it drives the pin low.
b.set_low();
a.set_pull(Pull::Up);
delay();
assert!(a.is_low());
@ -95,14 +95,36 @@ async fn main(_spawner: Spawner) {
delay();
assert!(a.is_low());
// Check high again
b.set_high();
a.set_pull(Pull::Up);
delay();
assert!(a.is_high());
a.set_pull(Pull::Down);
delay();
assert!(a.is_low());
// When an OutputOpenDrain is high, it reads the input value in the pin.
b.set_high();
a.set_as_input();
a.set_pull(Pull::Up);
delay();
assert!(b.is_high());
a.set_as_output();
a.set_low();
delay();
assert!(b.is_low());
// When an OutputOpenDrain is low, it always reads low.
b.set_low();
a.set_as_input();
a.set_pull(Pull::Up);
delay();
assert!(b.is_low());
a.set_as_output();
a.set_low();
delay();
assert!(b.is_low());
}
// FLEX