aboutsummaryrefslogtreecommitdiff
path: root/tests/rp/src/bin/adc.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-02-19 14:48:01 +0100
committerGitHub <[email protected]>2025-02-19 14:48:01 +0100
commitfcee67a0d2e561a60a9b97df6d06fca02323efee (patch)
tree7210f06e7451d814b10dd327b9a987031351f300 /tests/rp/src/bin/adc.rs
parentf3b98a8748ad5ef7761dccb2e935cecea9e1e707 (diff)
parent28e2789aeb4576fefae7acbd20c82dcffb92cf01 (diff)
Merge pull request #3901 from CBJamo/rp23_testing
Inital rp23 ci tests
Diffstat (limited to 'tests/rp/src/bin/adc.rs')
-rw-r--r--tests/rp/src/bin/adc.rs59
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")]
3teleprobe_meta::target!(b"rpi-pico"); 4teleprobe_meta::target!(b"rpi-pico");
5#[cfg(feature = "rp235xb")]
6teleprobe_meta::target!(b"pimoroni-pico-plus-2");
4 7
5use defmt::*; 8use defmt::*;
6use embassy_executor::Spawner; 9use 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)