aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp/src/adc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-rp/src/adc.rs')
-rw-r--r--embassy-rp/src/adc.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/embassy-rp/src/adc.rs b/embassy-rp/src/adc.rs
index 86a353670..f29c4dfe1 100644
--- a/embassy-rp/src/adc.rs
+++ b/embassy-rp/src/adc.rs
@@ -3,14 +3,14 @@ use core::marker::PhantomData;
3use core::sync::atomic::{compiler_fence, Ordering}; 3use core::sync::atomic::{compiler_fence, Ordering};
4use core::task::Poll; 4use core::task::Poll;
5 5
6use embassy_cortex_m::interrupt::{Binding, Interrupt};
7use embassy_sync::waitqueue::AtomicWaker; 6use embassy_sync::waitqueue::AtomicWaker;
8use embedded_hal_02::adc::{Channel, OneShot}; 7use embedded_hal_02::adc::{Channel, OneShot};
9 8
10use crate::gpio::Pin; 9use crate::gpio::Pin;
11use crate::interrupt::{self, ADC_IRQ_FIFO}; 10use crate::interrupt::typelevel::Binding;
11use crate::interrupt::InterruptExt;
12use crate::peripherals::ADC; 12use crate::peripherals::ADC;
13use crate::{pac, peripherals, Peripheral}; 13use crate::{interrupt, pac, peripherals, Peripheral};
14static WAKER: AtomicWaker = AtomicWaker::new(); 14static WAKER: AtomicWaker = AtomicWaker::new();
15 15
16#[derive(Debug, Clone, Copy, PartialEq, Eq)] 16#[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -47,7 +47,7 @@ impl<'d> Adc<'d> {
47 47
48 pub fn new( 48 pub fn new(
49 _inner: impl Peripheral<P = ADC> + 'd, 49 _inner: impl Peripheral<P = ADC> + 'd,
50 _irq: impl Binding<ADC_IRQ_FIFO, InterruptHandler>, 50 _irq: impl Binding<interrupt::typelevel::ADC_IRQ_FIFO, InterruptHandler>,
51 _config: Config, 51 _config: Config,
52 ) -> Self { 52 ) -> Self {
53 unsafe { 53 unsafe {
@@ -62,10 +62,8 @@ impl<'d> Adc<'d> {
62 } 62 }
63 63
64 // Setup IRQ 64 // Setup IRQ
65 unsafe { 65 interrupt::ADC_IRQ_FIFO.unpend();
66 ADC_IRQ_FIFO::unpend(); 66 unsafe { interrupt::ADC_IRQ_FIFO.enable() };
67 ADC_IRQ_FIFO::enable();
68 };
69 67
70 Self { phantom: PhantomData } 68 Self { phantom: PhantomData }
71 } 69 }
@@ -164,7 +162,7 @@ pub struct InterruptHandler {
164 _empty: (), 162 _empty: (),
165} 163}
166 164
167impl interrupt::Handler<ADC_IRQ_FIFO> for InterruptHandler { 165impl interrupt::typelevel::Handler<interrupt::typelevel::ADC_IRQ_FIFO> for InterruptHandler {
168 unsafe fn on_interrupt() { 166 unsafe fn on_interrupt() {
169 let r = Adc::regs(); 167 let r = Adc::regs();
170 r.inte().write(|w| w.set_fifo(false)); 168 r.inte().write(|w| w.set_fifo(false));