aboutsummaryrefslogtreecommitdiff
path: root/examples/rp/src
diff options
context:
space:
mode:
authorpennae <[email protected]>2023-07-05 20:05:34 +0200
committerpennae <[email protected]>2023-07-07 17:46:35 +0200
commit972cdd4265b24efb101c6b9df373466fcbccac5d (patch)
treebce7704ef8990d5e9032e0db88235aa062e0f619 /examples/rp/src
parent46a46009520036cc4b4dd52e7e3bdc5191b67ea0 (diff)
rp/adc: rewrite the module
- don't require an irq binding for blocking-only adc - abstract adc pins into an AnyPin like interface, erasing the actual peripheral type at runtime. - add pull-up/pull-down functions for adc pins - add a test (mostly a copy of the example, to be honest) - configure adc pads according to datasheet - report conversion errors (although they seem exceedingly rare?) - drop embedded-hal interfaces. embedded-hal channels can do neither AnyPin nor pullup/pulldown without encoding both into the type
Diffstat (limited to 'examples/rp/src')
-rw-r--r--examples/rp/src/bin/adc.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/examples/rp/src/bin/adc.rs b/examples/rp/src/bin/adc.rs
index 7c2ca19f7..65069cde1 100644
--- a/examples/rp/src/bin/adc.rs
+++ b/examples/rp/src/bin/adc.rs
@@ -4,8 +4,9 @@
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_rp::adc::{Adc, Config, InterruptHandler}; 7use embassy_rp::adc::{Adc, Config, InterruptHandler, Pin};
8use embassy_rp::bind_interrupts; 8use embassy_rp::bind_interrupts;
9use embassy_rp::gpio::Pull;
9use embassy_time::{Duration, Timer}; 10use embassy_time::{Duration, Timer};
10use {defmt_rtt as _, panic_probe as _}; 11use {defmt_rtt as _, panic_probe as _};
11 12
@@ -18,18 +19,18 @@ async fn main(_spawner: Spawner) {
18 let p = embassy_rp::init(Default::default()); 19 let p = embassy_rp::init(Default::default());
19 let mut adc = Adc::new(p.ADC, Irqs, Config::default()); 20 let mut adc = Adc::new(p.ADC, Irqs, Config::default());
20 21
21 let mut p26 = p.PIN_26; 22 let mut p26 = Pin::new(p.PIN_26, Pull::None);
22 let mut p27 = p.PIN_27; 23 let mut p27 = Pin::new(p.PIN_27, Pull::None);
23 let mut p28 = p.PIN_28; 24 let mut p28 = Pin::new(p.PIN_28, Pull::None);
24 25
25 loop { 26 loop {
26 let level = adc.read(&mut p26).await; 27 let level = adc.read(&mut p26).await.unwrap();
27 info!("Pin 26 ADC: {}", level); 28 info!("Pin 26 ADC: {}", level);
28 let level = adc.read(&mut p27).await; 29 let level = adc.read(&mut p27).await.unwrap();
29 info!("Pin 27 ADC: {}", level); 30 info!("Pin 27 ADC: {}", level);
30 let level = adc.read(&mut p28).await; 31 let level = adc.read(&mut p28).await.unwrap();
31 info!("Pin 28 ADC: {}", level); 32 info!("Pin 28 ADC: {}", level);
32 let temp = adc.read_temperature().await; 33 let temp = adc.read_temperature().await.unwrap();
33 info!("Temp: {} degrees", convert_to_celsius(temp)); 34 info!("Temp: {} degrees", convert_to_celsius(temp));
34 Timer::after(Duration::from_secs(1)).await; 35 Timer::after(Duration::from_secs(1)).await;
35 } 36 }