11#![ no_std]
22#![ no_main]
3+ #[ cfg( feature = "rp2040" ) ]
34teleprobe_meta:: target!( b"rpi-pico" ) ;
5+ #[ cfg( feature = "rp235xb" ) ]
6+ teleprobe_meta:: target!( b"pimoroni-pico-plus-2" ) ;
47
58use defmt:: * ;
69use embassy_executor:: Spawner ;
@@ -20,52 +23,57 @@ async fn main(_spawner: Spawner) {
2023 let _wifi_off = Output :: new ( p. PIN_25 , Level :: High ) ;
2124 let mut adc = Adc :: new ( p. ADC , Irqs , Config :: default ( ) ) ;
2225
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+
2331 {
2432 {
25- let mut p = Channel :: new_pin ( & mut p . PIN_26 , Pull :: Down ) ;
33+ let mut p = Channel :: new_pin ( & mut a , Pull :: Down ) ;
2634 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) < 0b01_0000_0000 ) ;
2735 defmt:: assert!( adc. read( & mut p) . await . unwrap( ) < 0b01_0000_0000 ) ;
2836 }
2937 {
30- let mut p = Channel :: new_pin ( & mut p . PIN_26 , Pull :: Up ) ;
38+ let mut p = Channel :: new_pin ( & mut a , Pull :: Up ) ;
3139 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) > 0b11_0000_0000 ) ;
3240 defmt:: assert!( adc. read( & mut p) . await . unwrap( ) > 0b11_0000_0000 ) ;
3341 }
3442 }
3543 // not bothering with async reads from now on
3644 {
3745 {
38- let mut p = Channel :: new_pin ( & mut p . PIN_27 , Pull :: Down ) ;
46+ let mut p = Channel :: new_pin ( & mut b , Pull :: Down ) ;
3947 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) < 0b01_0000_0000 ) ;
4048 }
4149 {
42- let mut p = Channel :: new_pin ( & mut p . PIN_27 , Pull :: Up ) ;
50+ let mut p = Channel :: new_pin ( & mut b , Pull :: Up ) ;
4351 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) > 0b11_0000_0000 ) ;
4452 }
4553 }
4654 {
4755 {
48- let mut p = Channel :: new_pin ( & mut p . PIN_28 , Pull :: Down ) ;
56+ let mut p = Channel :: new_pin ( & mut c , Pull :: Down ) ;
4957 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) < 0b01_0000_0000 ) ;
5058 }
5159 {
52- let mut p = Channel :: new_pin ( & mut p . PIN_28 , Pull :: Up ) ;
60+ let mut p = Channel :: new_pin ( & mut c , Pull :: Up ) ;
5361 defmt:: assert!( adc. blocking_read( & mut p) . unwrap( ) > 0b11_0000_0000 ) ;
5462 }
5563 }
5664 {
5765 // gp29 is connected to vsys through a 200k/100k divider,
5866 // adding pulls should change the value
5967 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 ) ;
6169 adc. blocking_read ( & mut p) . unwrap ( )
6270 } ;
6371 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 ) ;
6573 adc. blocking_read ( & mut p) . unwrap ( )
6674 } ;
6775 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 ) ;
6977 adc. blocking_read ( & mut p) . unwrap ( )
7078 } ;
7179 defmt:: assert!( low < none) ;
@@ -89,29 +97,14 @@ async fn main(_spawner: Spawner) {
8997 let mut low = [ 0u16 ; 16 ] ;
9098 let mut none = [ 0u8 ; 16 ] ;
9199 let mut up = [ Sample :: default ( ) ; 16 ] ;
92- adc. read_many (
93- & mut Channel :: new_pin ( & mut p. PIN_29 , Pull :: Down ) ,
94- & mut low,
95- 1 ,
96- & mut p. DMA_CH0 ,
97- )
98- . await
99- . unwrap ( ) ;
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 ;
100+ adc. read_many ( & mut Channel :: new_pin ( & mut d, Pull :: Down ) , & mut low, 1 , & mut p. DMA_CH0 )
101+ . await
102+ . unwrap ( ) ;
103+ adc. read_many ( & mut Channel :: new_pin ( & mut d, Pull :: None ) , & mut none, 1 , & mut p. DMA_CH0 )
104+ . await
105+ . unwrap ( ) ;
106+ adc. read_many_raw ( & mut Channel :: new_pin ( & mut d, Pull :: Up ) , & mut up, 1 , & mut p. DMA_CH0 )
107+ . await ;
115108 defmt:: assert!( low. iter( ) . zip( none. iter( ) ) . all( |( l, n) | * l >> 4 < * n as u16 ) ) ;
116109 defmt:: assert!( up. iter( ) . all( |s| s. good( ) ) ) ;
117110 defmt:: assert!( none. iter( ) . zip( up. iter( ) ) . all( |( n, u) | ( * n as u16 ) < u. value( ) ) ) ;
@@ -133,7 +126,7 @@ async fn main(_spawner: Spawner) {
133126 {
134127 let mut multi = [ 0u16 ; 2 ] ;
135128 let mut channels = [
136- Channel :: new_pin ( & mut p . PIN_26 , Pull :: Up ) ,
129+ Channel :: new_pin ( & mut a , Pull :: Up ) ,
137130 Channel :: new_temp_sensor ( & mut p. ADC_TEMP_SENSOR ) ,
138131 ] ;
139132 adc. read_many_multichannel ( & mut channels, & mut multi, 1 , & mut p. DMA_CH0 )
0 commit comments