diff options
Diffstat (limited to 'tests/rp/src/bin/adc.rs')
| -rw-r--r-- | tests/rp/src/bin/adc.rs | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/tests/rp/src/bin/adc.rs b/tests/rp/src/bin/adc.rs index 65c246472..87e9709cc 100644 --- a/tests/rp/src/bin/adc.rs +++ b/tests/rp/src/bin/adc.rs | |||
| @@ -1,6 +1,9 @@ | |||
| 1 | #![no_std] | 1 | #![no_std] |
| 2 | #![no_main] | 2 | #![no_main] |
| 3 | #[cfg(feature = "rp2040")] | ||
| 3 | teleprobe_meta::target!(b"rpi-pico"); | 4 | teleprobe_meta::target!(b"rpi-pico"); |
| 5 | #[cfg(feature = "rp235xb")] | ||
| 6 | teleprobe_meta::target!(b"pimoroni-pico-plus-2"); | ||
| 4 | 7 | ||
| 5 | use defmt::*; | 8 | use defmt::*; |
| 6 | use embassy_executor::Spawner; | 9 | use embassy_executor::Spawner; |
| @@ -20,14 +23,19 @@ async fn main(_spawner: Spawner) { | |||
| 20 | let _wifi_off = Output::new(p.PIN_25, Level::High); | 23 | let _wifi_off = Output::new(p.PIN_25, Level::High); |
| 21 | let mut adc = Adc::new(p.ADC, Irqs, Config::default()); | 24 | let mut adc = Adc::new(p.ADC, Irqs, Config::default()); |
| 22 | 25 | ||
| 26 | #[cfg(any(feature = "rp2040", feature = "rp235xa"))] | ||
| 27 | let (mut a, mut b, mut c, mut d) = (p.PIN_26, p.PIN_27, p.PIN_28, p.PIN_29); | ||
| 28 | #[cfg(feature = "rp235xb")] | ||
| 29 | let (mut a, mut b, mut c, mut d) = (p.PIN_44, p.PIN_45, p.PIN_46, p.PIN_47); | ||
| 30 | |||
| 23 | { | 31 | { |
| 24 | { | 32 | { |
| 25 | let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Down); | 33 | let mut p = Channel::new_pin(&mut a, Pull::Down); |
| 26 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 34 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 27 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); | 35 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); |
| 28 | } | 36 | } |
| 29 | { | 37 | { |
| 30 | let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Up); | 38 | let mut p = Channel::new_pin(&mut a, Pull::Up); |
| 31 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 32 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); | 40 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); |
| 33 | } | 41 | } |
| @@ -35,21 +43,21 @@ async fn main(_spawner: Spawner) { | |||
| 35 | // not bothering with async reads from now on | 43 | // not bothering with async reads from now on |
| 36 | { | 44 | { |
| 37 | { | 45 | { |
| 38 | let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Down); | 46 | let mut p = Channel::new_pin(&mut b, Pull::Down); |
| 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 47 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 40 | } | 48 | } |
| 41 | { | 49 | { |
| 42 | let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Up); | 50 | let mut p = Channel::new_pin(&mut b, Pull::Up); |
| 43 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 51 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 44 | } | 52 | } |
| 45 | } | 53 | } |
| 46 | { | 54 | { |
| 47 | { | 55 | { |
| 48 | let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Down); | 56 | let mut p = Channel::new_pin(&mut c, Pull::Down); |
| 49 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 57 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 50 | } | 58 | } |
| 51 | { | 59 | { |
| 52 | let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Up); | 60 | let mut p = Channel::new_pin(&mut c, Pull::Up); |
| 53 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 61 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 54 | } | 62 | } |
| 55 | } | 63 | } |
| @@ -57,15 +65,15 @@ async fn main(_spawner: Spawner) { | |||
| 57 | // gp29 is connected to vsys through a 200k/100k divider, | 65 | // gp29 is connected to vsys through a 200k/100k divider, |
| 58 | // adding pulls should change the value | 66 | // adding pulls should change the value |
| 59 | let low = { | 67 | let low = { |
| 60 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Down); | 68 | let mut p = Channel::new_pin(&mut d, Pull::Down); |
| 61 | adc.blocking_read(&mut p).unwrap() | 69 | adc.blocking_read(&mut p).unwrap() |
| 62 | }; | 70 | }; |
| 63 | let none = { | 71 | let none = { |
| 64 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::None); | 72 | let mut p = Channel::new_pin(&mut d, Pull::None); |
| 65 | adc.blocking_read(&mut p).unwrap() | 73 | adc.blocking_read(&mut p).unwrap() |
| 66 | }; | 74 | }; |
| 67 | let up = { | 75 | let up = { |
| 68 | let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Up); | 76 | let mut p = Channel::new_pin(&mut d, Pull::Up); |
| 69 | adc.blocking_read(&mut p).unwrap() | 77 | adc.blocking_read(&mut p).unwrap() |
| 70 | }; | 78 | }; |
| 71 | defmt::assert!(low < none); | 79 | defmt::assert!(low < none); |
| @@ -89,29 +97,14 @@ async fn main(_spawner: Spawner) { | |||
| 89 | let mut low = [0u16; 16]; | 97 | let mut low = [0u16; 16]; |
| 90 | let mut none = [0u8; 16]; | 98 | let mut none = [0u8; 16]; |
| 91 | let mut up = [Sample::default(); 16]; | 99 | let mut up = [Sample::default(); 16]; |
| 92 | adc.read_many( | 100 | adc.read_many(&mut Channel::new_pin(&mut d, Pull::Down), &mut low, 1, &mut p.DMA_CH0) |
| 93 | &mut Channel::new_pin(&mut p.PIN_29, Pull::Down), | 101 | .await |
| 94 | &mut low, | 102 | .unwrap(); |
| 95 | 1, | 103 | adc.read_many(&mut Channel::new_pin(&mut d, Pull::None), &mut none, 1, &mut p.DMA_CH0) |
| 96 | &mut p.DMA_CH0, | 104 | .await |
| 97 | ) | 105 | .unwrap(); |
| 98 | .await | 106 | adc.read_many_raw(&mut Channel::new_pin(&mut d, Pull::Up), &mut up, 1, &mut p.DMA_CH0) |
| 99 | .unwrap(); | 107 | .await; |
| 100 | adc.read_many( | ||
| 101 | &mut Channel::new_pin(&mut p.PIN_29, Pull::None), | ||
| 102 | &mut none, | ||
| 103 | 1, | ||
| 104 | &mut p.DMA_CH0, | ||
| 105 | ) | ||
| 106 | .await | ||
| 107 | .unwrap(); | ||
| 108 | adc.read_many_raw( | ||
| 109 | &mut Channel::new_pin(&mut p.PIN_29, Pull::Up), | ||
| 110 | &mut up, | ||
| 111 | 1, | ||
| 112 | &mut p.DMA_CH0, | ||
| 113 | ) | ||
| 114 | .await; | ||
| 115 | defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16)); | 108 | defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16)); |
| 116 | defmt::assert!(up.iter().all(|s| s.good())); | 109 | defmt::assert!(up.iter().all(|s| s.good())); |
| 117 | defmt::assert!(none.iter().zip(up.iter()).all(|(n, u)| (*n as u16) < u.value())); | 110 | defmt::assert!(none.iter().zip(up.iter()).all(|(n, u)| (*n as u16) < u.value())); |
| @@ -133,7 +126,7 @@ async fn main(_spawner: Spawner) { | |||
| 133 | { | 126 | { |
| 134 | let mut multi = [0u16; 2]; | 127 | let mut multi = [0u16; 2]; |
| 135 | let mut channels = [ | 128 | let mut channels = [ |
| 136 | Channel::new_pin(&mut p.PIN_26, Pull::Up), | 129 | Channel::new_pin(&mut a, Pull::Up), |
| 137 | Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR), | 130 | Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR), |
| 138 | ]; | 131 | ]; |
| 139 | adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0) | 132 | adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0) |
