diff options
| author | pennae <[email protected]> | 2023-07-21 21:31:44 +0200 |
|---|---|---|
| committer | pennae <[email protected]> | 2023-08-01 18:31:28 +0200 |
| commit | b166ed6b78db0737005a65c1e444ce7563de7da3 (patch) | |
| tree | b06b0742ceb839e5739e92ea4c001617eb2f5d8c /tests | |
| parent | 54d31c98fe44533c955c494ea58dd16810367c4f (diff) | |
rp: generalize adc inputs from pins to channels
this lets us treat pins and the temperature sensor uniformly using the
same interface. uniformity in turn lets us add more adc features without
combinatorial explosion of methods and types needed to handle them all.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/rp/src/bin/adc.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/tests/rp/src/bin/adc.rs b/tests/rp/src/bin/adc.rs index e659844ae..9006ce8cc 100644 --- a/tests/rp/src/bin/adc.rs +++ b/tests/rp/src/bin/adc.rs | |||
| @@ -6,7 +6,7 @@ mod common; | |||
| 6 | 6 | ||
| 7 | use defmt::*; | 7 | use defmt::*; |
| 8 | use embassy_executor::Spawner; | 8 | use embassy_executor::Spawner; |
| 9 | use embassy_rp::adc::{Adc, Config, InterruptHandler, Pin}; | 9 | use embassy_rp::adc::{Adc, Channel, Config, InterruptHandler}; |
| 10 | use embassy_rp::bind_interrupts; | 10 | use embassy_rp::bind_interrupts; |
| 11 | use embassy_rp::gpio::Pull; | 11 | use embassy_rp::gpio::Pull; |
| 12 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -22,12 +22,12 @@ async fn main(_spawner: Spawner) { | |||
| 22 | 22 | ||
| 23 | { | 23 | { |
| 24 | { | 24 | { |
| 25 | let mut p = Pin::new(&mut p.PIN_26, Pull::Down); | 25 | let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Down); |
| 26 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 26 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 27 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); | 27 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); |
| 28 | } | 28 | } |
| 29 | { | 29 | { |
| 30 | let mut p = Pin::new(&mut p.PIN_26, Pull::Up); | 30 | let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Up); |
| 31 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 31 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 32 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); | 32 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); |
| 33 | } | 33 | } |
| @@ -35,21 +35,21 @@ async fn main(_spawner: Spawner) { | |||
| 35 | // not bothering with async reads from now on | 35 | // not bothering with async reads from now on |
| 36 | { | 36 | { |
| 37 | { | 37 | { |
| 38 | let mut p = Pin::new(&mut p.PIN_27, Pull::Down); | 38 | let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Down); |
| 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 40 | } | 40 | } |
| 41 | { | 41 | { |
| 42 | let mut p = Pin::new(&mut p.PIN_27, Pull::Up); | 42 | let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Up); |
| 43 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 43 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 44 | } | 44 | } |
| 45 | } | 45 | } |
| 46 | { | 46 | { |
| 47 | { | 47 | { |
| 48 | let mut p = Pin::new(&mut p.PIN_28, Pull::Down); | 48 | let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Down); |
| 49 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 49 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 50 | } | 50 | } |
| 51 | { | 51 | { |
| 52 | let mut p = Pin::new(&mut p.PIN_28, Pull::Up); | 52 | let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Up); |
| 53 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 53 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 54 | } | 54 | } |
| 55 | } | 55 | } |
| @@ -57,22 +57,22 @@ async fn main(_spawner: Spawner) { | |||
| 57 | // gp29 is connected to vsys through a 200k/100k divider, | 57 | // gp29 is connected to vsys through a 200k/100k divider, |
| 58 | // adding pulls should change the value | 58 | // adding pulls should change the value |
| 59 | let low = { | 59 | let low = { |
| 60 | let mut p = Pin::new(&mut p.PIN_29, Pull::Down); | 60 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Down); |
| 61 | adc.blocking_read(&mut p).unwrap() | 61 | adc.blocking_read(&mut p).unwrap() |
| 62 | }; | 62 | }; |
| 63 | let none = { | 63 | let none = { |
| 64 | let mut p = Pin::new(&mut p.PIN_29, Pull::None); | 64 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::None); |
| 65 | adc.blocking_read(&mut p).unwrap() | 65 | adc.blocking_read(&mut p).unwrap() |
| 66 | }; | 66 | }; |
| 67 | let up = { | 67 | let up = { |
| 68 | let mut p = Pin::new(&mut p.PIN_29, Pull::Up); | 68 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Up); |
| 69 | adc.blocking_read(&mut p).unwrap() | 69 | adc.blocking_read(&mut p).unwrap() |
| 70 | }; | 70 | }; |
| 71 | defmt::assert!(low < none); | 71 | defmt::assert!(low < none); |
| 72 | defmt::assert!(none < up); | 72 | defmt::assert!(none < up); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | let temp = convert_to_celsius(adc.read_temperature().await.unwrap()); | 75 | let temp = convert_to_celsius(adc.read(&mut Channel::new_sensor(p.ADC_TEMP_SENSOR)).await.unwrap()); |
| 76 | defmt::assert!(temp > 0.0); | 76 | defmt::assert!(temp > 0.0); |
| 77 | defmt::assert!(temp < 60.0); | 77 | defmt::assert!(temp < 60.0); |
| 78 | 78 | ||
