diff options
Diffstat (limited to 'tests/rp/src/bin/adc.rs')
| -rw-r--r-- | tests/rp/src/bin/adc.rs | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/tests/rp/src/bin/adc.rs b/tests/rp/src/bin/adc.rs index 87e9709cc..c2175bc03 100644 --- a/tests/rp/src/bin/adc.rs +++ b/tests/rp/src/bin/adc.rs | |||
| @@ -30,12 +30,12 @@ async fn main(_spawner: Spawner) { | |||
| 30 | 30 | ||
| 31 | { | 31 | { |
| 32 | { | 32 | { |
| 33 | let mut p = Channel::new_pin(&mut a, Pull::Down); | 33 | let mut p = Channel::new_pin(a.reborrow(), Pull::Down); |
| 34 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 34 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 35 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); | 35 | defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000); |
| 36 | } | 36 | } |
| 37 | { | 37 | { |
| 38 | let mut p = Channel::new_pin(&mut a, Pull::Up); | 38 | let mut p = Channel::new_pin(a.reborrow(), Pull::Up); |
| 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 39 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 40 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); | 40 | defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000); |
| 41 | } | 41 | } |
| @@ -43,21 +43,21 @@ async fn main(_spawner: Spawner) { | |||
| 43 | // not bothering with async reads from now on | 43 | // not bothering with async reads from now on |
| 44 | { | 44 | { |
| 45 | { | 45 | { |
| 46 | let mut p = Channel::new_pin(&mut b, Pull::Down); | 46 | let mut p = Channel::new_pin(b.reborrow(), Pull::Down); |
| 47 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 47 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 48 | } | 48 | } |
| 49 | { | 49 | { |
| 50 | let mut p = Channel::new_pin(&mut b, Pull::Up); | 50 | let mut p = Channel::new_pin(b.reborrow(), Pull::Up); |
| 51 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 51 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 52 | } | 52 | } |
| 53 | } | 53 | } |
| 54 | { | 54 | { |
| 55 | { | 55 | { |
| 56 | let mut p = Channel::new_pin(&mut c, Pull::Down); | 56 | let mut p = Channel::new_pin(c.reborrow(), Pull::Down); |
| 57 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); | 57 | defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000); |
| 58 | } | 58 | } |
| 59 | { | 59 | { |
| 60 | let mut p = Channel::new_pin(&mut c, Pull::Up); | 60 | let mut p = Channel::new_pin(c.reborrow(), Pull::Up); |
| 61 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); | 61 | defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000); |
| 62 | } | 62 | } |
| 63 | } | 63 | } |
| @@ -65,15 +65,15 @@ async fn main(_spawner: Spawner) { | |||
| 65 | // gp29 is connected to vsys through a 200k/100k divider, | 65 | // gp29 is connected to vsys through a 200k/100k divider, |
| 66 | // adding pulls should change the value | 66 | // adding pulls should change the value |
| 67 | let low = { | 67 | let low = { |
| 68 | let mut p = Channel::new_pin(&mut d, Pull::Down); | 68 | let mut p = Channel::new_pin(d.reborrow(), Pull::Down); |
| 69 | adc.blocking_read(&mut p).unwrap() | 69 | adc.blocking_read(&mut p).unwrap() |
| 70 | }; | 70 | }; |
| 71 | let none = { | 71 | let none = { |
| 72 | let mut p = Channel::new_pin(&mut d, Pull::None); | 72 | let mut p = Channel::new_pin(d.reborrow(), Pull::None); |
| 73 | adc.blocking_read(&mut p).unwrap() | 73 | adc.blocking_read(&mut p).unwrap() |
| 74 | }; | 74 | }; |
| 75 | let up = { | 75 | let up = { |
| 76 | let mut p = Channel::new_pin(&mut d, Pull::Up); | 76 | let mut p = Channel::new_pin(d.reborrow(), Pull::Up); |
| 77 | adc.blocking_read(&mut p).unwrap() | 77 | adc.blocking_read(&mut p).unwrap() |
| 78 | }; | 78 | }; |
| 79 | defmt::assert!(low < none); | 79 | defmt::assert!(low < none); |
| @@ -81,7 +81,7 @@ async fn main(_spawner: Spawner) { | |||
| 81 | } | 81 | } |
| 82 | { | 82 | { |
| 83 | let temp = convert_to_celsius( | 83 | let temp = convert_to_celsius( |
| 84 | adc.read(&mut Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR)) | 84 | adc.read(&mut Channel::new_temp_sensor(p.ADC_TEMP_SENSOR.reborrow())) |
| 85 | .await | 85 | .await |
| 86 | .unwrap(), | 86 | .unwrap(), |
| 87 | ); | 87 | ); |
| @@ -97,14 +97,29 @@ async fn main(_spawner: Spawner) { | |||
| 97 | let mut low = [0u16; 16]; | 97 | let mut low = [0u16; 16]; |
| 98 | let mut none = [0u8; 16]; | 98 | let mut none = [0u8; 16]; |
| 99 | let mut up = [Sample::default(); 16]; | 99 | let mut up = [Sample::default(); 16]; |
| 100 | adc.read_many(&mut Channel::new_pin(&mut d, Pull::Down), &mut low, 1, &mut p.DMA_CH0) | 100 | adc.read_many( |
| 101 | .await | 101 | &mut Channel::new_pin(d.reborrow(), Pull::Down), |
| 102 | .unwrap(); | 102 | &mut low, |
| 103 | adc.read_many(&mut Channel::new_pin(&mut d, Pull::None), &mut none, 1, &mut p.DMA_CH0) | 103 | 1, |
| 104 | .await | 104 | p.DMA_CH0.reborrow(), |
| 105 | .unwrap(); | 105 | ) |
| 106 | adc.read_many_raw(&mut Channel::new_pin(&mut d, Pull::Up), &mut up, 1, &mut p.DMA_CH0) | 106 | .await |
| 107 | .await; | 107 | .unwrap(); |
| 108 | adc.read_many( | ||
| 109 | &mut Channel::new_pin(d.reborrow(), Pull::None), | ||
| 110 | &mut none, | ||
| 111 | 1, | ||
| 112 | p.DMA_CH0.reborrow(), | ||
| 113 | ) | ||
| 114 | .await | ||
| 115 | .unwrap(); | ||
| 116 | adc.read_many_raw( | ||
| 117 | &mut Channel::new_pin(d.reborrow(), Pull::Up), | ||
| 118 | &mut up, | ||
| 119 | 1, | ||
| 120 | p.DMA_CH0.reborrow(), | ||
| 121 | ) | ||
| 122 | .await; | ||
| 108 | defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16)); | 123 | defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16)); |
| 109 | defmt::assert!(up.iter().all(|s| s.good())); | 124 | defmt::assert!(up.iter().all(|s| s.good())); |
| 110 | defmt::assert!(none.iter().zip(up.iter()).all(|(n, u)| (*n as u16) < u.value())); | 125 | defmt::assert!(none.iter().zip(up.iter()).all(|(n, u)| (*n as u16) < u.value())); |
| @@ -112,10 +127,10 @@ async fn main(_spawner: Spawner) { | |||
| 112 | { | 127 | { |
| 113 | let mut temp = [0u16; 16]; | 128 | let mut temp = [0u16; 16]; |
| 114 | adc.read_many( | 129 | adc.read_many( |
| 115 | &mut Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR), | 130 | &mut Channel::new_temp_sensor(p.ADC_TEMP_SENSOR.reborrow()), |
| 116 | &mut temp, | 131 | &mut temp, |
| 117 | 1, | 132 | 1, |
| 118 | &mut p.DMA_CH0, | 133 | p.DMA_CH0.reborrow(), |
| 119 | ) | 134 | ) |
| 120 | .await | 135 | .await |
| 121 | .unwrap(); | 136 | .unwrap(); |
| @@ -126,10 +141,10 @@ async fn main(_spawner: Spawner) { | |||
| 126 | { | 141 | { |
| 127 | let mut multi = [0u16; 2]; | 142 | let mut multi = [0u16; 2]; |
| 128 | let mut channels = [ | 143 | let mut channels = [ |
| 129 | Channel::new_pin(&mut a, Pull::Up), | 144 | Channel::new_pin(a.reborrow(), Pull::Up), |
| 130 | Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR), | 145 | Channel::new_temp_sensor(p.ADC_TEMP_SENSOR.reborrow()), |
| 131 | ]; | 146 | ]; |
| 132 | adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0) | 147 | adc.read_many_multichannel(&mut channels, &mut multi, 1, p.DMA_CH0.reborrow()) |
| 133 | .await | 148 | .await |
| 134 | .unwrap(); | 149 | .unwrap(); |
| 135 | defmt::assert!(multi[0] > 3_000); | 150 | defmt::assert!(multi[0] > 3_000); |
