aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-10-11 01:22:01 +0200
committerDario Nieuwenhuis <[email protected]>2021-10-11 01:36:31 +0200
commit14c3260d88b95a7354dd1d0686d113602e25becb (patch)
tree101f0eb13eb69ad1b77eeda221e4de71058d9c03
parentcf13dd7df860afeb9bccee2ca64004f0ac3643d2 (diff)
nrf/saadc: move chip-specific mappings to chips/
-rw-r--r--embassy-nrf/src/chips/nrf52805.rs3
-rw-r--r--embassy-nrf/src/chips/nrf52810.rs9
-rw-r--r--embassy-nrf/src/chips/nrf52811.rs9
-rw-r--r--embassy-nrf/src/chips/nrf52832.rs9
-rw-r--r--embassy-nrf/src/chips/nrf52833.rs9
-rw-r--r--embassy-nrf/src/chips/nrf52840.rs9
-rw-r--r--embassy-nrf/src/saadc.rs47
7 files changed, 56 insertions, 39 deletions
diff --git a/embassy-nrf/src/chips/nrf52805.rs b/embassy-nrf/src/chips/nrf52805.rs
index 3bf87e3d9..db1fac2ff 100644
--- a/embassy-nrf/src/chips/nrf52805.rs
+++ b/embassy-nrf/src/chips/nrf52805.rs
@@ -182,6 +182,9 @@ impl_ppi_channel!(PPI_CH29, 29);
182impl_ppi_channel!(PPI_CH30, 30); 182impl_ppi_channel!(PPI_CH30, 30);
183impl_ppi_channel!(PPI_CH31, 31); 183impl_ppi_channel!(PPI_CH31, 31);
184 184
185impl_saadc_input!(P0_04, ANALOGINPUT2);
186impl_saadc_input!(P0_05, ANALOGINPUT3);
187
185pub mod irqs { 188pub mod irqs {
186 use crate::pac::Interrupt as InterruptEnum; 189 use crate::pac::Interrupt as InterruptEnum;
187 use embassy_macros::interrupt_declare as declare; 190 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/chips/nrf52810.rs b/embassy-nrf/src/chips/nrf52810.rs
index d3241364b..06b9bfb38 100644
--- a/embassy-nrf/src/chips/nrf52810.rs
+++ b/embassy-nrf/src/chips/nrf52810.rs
@@ -197,6 +197,15 @@ impl_ppi_channel!(PPI_CH29, 29);
197impl_ppi_channel!(PPI_CH30, 30); 197impl_ppi_channel!(PPI_CH30, 30);
198impl_ppi_channel!(PPI_CH31, 31); 198impl_ppi_channel!(PPI_CH31, 31);
199 199
200impl_saadc_input!(P0_02, ANALOGINPUT0);
201impl_saadc_input!(P0_03, ANALOGINPUT1);
202impl_saadc_input!(P0_04, ANALOGINPUT2);
203impl_saadc_input!(P0_05, ANALOGINPUT3);
204impl_saadc_input!(P0_28, ANALOGINPUT4);
205impl_saadc_input!(P0_29, ANALOGINPUT5);
206impl_saadc_input!(P0_30, ANALOGINPUT6);
207impl_saadc_input!(P0_31, ANALOGINPUT7);
208
200pub mod irqs { 209pub mod irqs {
201 use crate::pac::Interrupt as InterruptEnum; 210 use crate::pac::Interrupt as InterruptEnum;
202 use embassy_macros::interrupt_declare as declare; 211 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/chips/nrf52811.rs b/embassy-nrf/src/chips/nrf52811.rs
index 1231ae62b..2f8d98b31 100644
--- a/embassy-nrf/src/chips/nrf52811.rs
+++ b/embassy-nrf/src/chips/nrf52811.rs
@@ -198,6 +198,15 @@ impl_ppi_channel!(PPI_CH29, 29);
198impl_ppi_channel!(PPI_CH30, 30); 198impl_ppi_channel!(PPI_CH30, 30);
199impl_ppi_channel!(PPI_CH31, 31); 199impl_ppi_channel!(PPI_CH31, 31);
200 200
201impl_saadc_input!(P0_02, ANALOGINPUT0);
202impl_saadc_input!(P0_03, ANALOGINPUT1);
203impl_saadc_input!(P0_04, ANALOGINPUT2);
204impl_saadc_input!(P0_05, ANALOGINPUT3);
205impl_saadc_input!(P0_28, ANALOGINPUT4);
206impl_saadc_input!(P0_29, ANALOGINPUT5);
207impl_saadc_input!(P0_30, ANALOGINPUT6);
208impl_saadc_input!(P0_31, ANALOGINPUT7);
209
201pub mod irqs { 210pub mod irqs {
202 use crate::pac::Interrupt as InterruptEnum; 211 use crate::pac::Interrupt as InterruptEnum;
203 use embassy_macros::interrupt_declare as declare; 212 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/chips/nrf52832.rs b/embassy-nrf/src/chips/nrf52832.rs
index 9bbef5438..47cf27de4 100644
--- a/embassy-nrf/src/chips/nrf52832.rs
+++ b/embassy-nrf/src/chips/nrf52832.rs
@@ -211,6 +211,15 @@ impl_ppi_channel!(PPI_CH29, 29);
211impl_ppi_channel!(PPI_CH30, 30); 211impl_ppi_channel!(PPI_CH30, 30);
212impl_ppi_channel!(PPI_CH31, 31); 212impl_ppi_channel!(PPI_CH31, 31);
213 213
214impl_saadc_input!(P0_02, ANALOGINPUT0);
215impl_saadc_input!(P0_03, ANALOGINPUT1);
216impl_saadc_input!(P0_04, ANALOGINPUT2);
217impl_saadc_input!(P0_05, ANALOGINPUT3);
218impl_saadc_input!(P0_28, ANALOGINPUT4);
219impl_saadc_input!(P0_29, ANALOGINPUT5);
220impl_saadc_input!(P0_30, ANALOGINPUT6);
221impl_saadc_input!(P0_31, ANALOGINPUT7);
222
214pub mod irqs { 223pub mod irqs {
215 use crate::pac::Interrupt as InterruptEnum; 224 use crate::pac::Interrupt as InterruptEnum;
216 use embassy_macros::interrupt_declare as declare; 225 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/chips/nrf52833.rs b/embassy-nrf/src/chips/nrf52833.rs
index d9495dd94..b3d813e24 100644
--- a/embassy-nrf/src/chips/nrf52833.rs
+++ b/embassy-nrf/src/chips/nrf52833.rs
@@ -251,6 +251,15 @@ impl_ppi_channel!(PPI_CH29, 29);
251impl_ppi_channel!(PPI_CH30, 30); 251impl_ppi_channel!(PPI_CH30, 30);
252impl_ppi_channel!(PPI_CH31, 31); 252impl_ppi_channel!(PPI_CH31, 31);
253 253
254impl_saadc_input!(P0_02, ANALOGINPUT0);
255impl_saadc_input!(P0_03, ANALOGINPUT1);
256impl_saadc_input!(P0_04, ANALOGINPUT2);
257impl_saadc_input!(P0_05, ANALOGINPUT3);
258impl_saadc_input!(P0_28, ANALOGINPUT4);
259impl_saadc_input!(P0_29, ANALOGINPUT5);
260impl_saadc_input!(P0_30, ANALOGINPUT6);
261impl_saadc_input!(P0_31, ANALOGINPUT7);
262
254pub mod irqs { 263pub mod irqs {
255 use crate::pac::Interrupt as InterruptEnum; 264 use crate::pac::Interrupt as InterruptEnum;
256 use embassy_macros::interrupt_declare as declare; 265 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/chips/nrf52840.rs b/embassy-nrf/src/chips/nrf52840.rs
index ad89afbca..473036f61 100644
--- a/embassy-nrf/src/chips/nrf52840.rs
+++ b/embassy-nrf/src/chips/nrf52840.rs
@@ -256,6 +256,15 @@ impl_ppi_channel!(PPI_CH29, 29);
256impl_ppi_channel!(PPI_CH30, 30); 256impl_ppi_channel!(PPI_CH30, 30);
257impl_ppi_channel!(PPI_CH31, 31); 257impl_ppi_channel!(PPI_CH31, 31);
258 258
259impl_saadc_input!(P0_02, ANALOGINPUT0);
260impl_saadc_input!(P0_03, ANALOGINPUT1);
261impl_saadc_input!(P0_04, ANALOGINPUT2);
262impl_saadc_input!(P0_05, ANALOGINPUT3);
263impl_saadc_input!(P0_28, ANALOGINPUT4);
264impl_saadc_input!(P0_29, ANALOGINPUT5);
265impl_saadc_input!(P0_30, ANALOGINPUT6);
266impl_saadc_input!(P0_31, ANALOGINPUT7);
267
259pub mod irqs { 268pub mod irqs {
260 use crate::pac::Interrupt as InterruptEnum; 269 use crate::pac::Interrupt as InterruptEnum;
261 use embassy_macros::interrupt_declare as declare; 270 use embassy_macros::interrupt_declare as declare;
diff --git a/embassy-nrf/src/saadc.rs b/embassy-nrf/src/saadc.rs
index 2f2baefae..2ce7ef16d 100644
--- a/embassy-nrf/src/saadc.rs
+++ b/embassy-nrf/src/saadc.rs
@@ -1,3 +1,5 @@
1#![macro_use]
2
1use core::marker::PhantomData; 3use core::marker::PhantomData;
2use core::sync::atomic::{compiler_fence, Ordering}; 4use core::sync::atomic::{compiler_fence, Ordering};
3use core::task::Poll; 5use core::task::Poll;
@@ -231,45 +233,12 @@ pub trait Input {
231 fn channel(&self) -> InputChannel; 233 fn channel(&self) -> InputChannel;
232} 234}
233 235
234macro_rules! input_mappings { 236macro_rules! impl_saadc_input {
235 ( $($ch:ident => $input:ident,)*) => { 237 ($pin:ident, $ch:ident) => {
236 $( 238 impl crate::saadc::Input for crate::peripherals::$pin {
237 impl Input for crate::peripherals::$input { 239 fn channel(&self) -> crate::saadc::InputChannel {
238 fn channel(&self) -> InputChannel { 240 crate::saadc::InputChannel::$ch
239 InputChannel::$ch
240 }
241 } 241 }
242 )* 242 }
243 }; 243 };
244} 244}
245
246// TODO the variant names are unchecked
247// the inputs are copied from nrf hal
248#[cfg(feature = "nrf9160")]
249input_mappings! {
250 ANALOGINPUT0 => P0_13,
251 ANALOGINPUT1 => P0_14,
252 ANALOGINPUT2 => P0_15,
253 ANALOGINPUT3 => P0_16,
254 ANALOGINPUT4 => P0_17,
255 ANALOGINPUT5 => P0_18,
256 ANALOGINPUT6 => P0_19,
257 ANALOGINPUT7 => P0_20,
258}
259#[cfg(feature = "nrf52805")]
260input_mappings! {
261 ANALOGINPUT2 => P0_04,
262 ANALOGINPUT3 => P0_05,
263}
264
265#[cfg(not(any(feature = "nrf52805", feature = "nrf9160")))]
266input_mappings! {
267 ANALOGINPUT0 => P0_02,
268 ANALOGINPUT1 => P0_03,
269 ANALOGINPUT2 => P0_04,
270 ANALOGINPUT3 => P0_05,
271 ANALOGINPUT4 => P0_28,
272 ANALOGINPUT5 => P0_29,
273 ANALOGINPUT6 => P0_30,
274 ANALOGINPUT7 => P0_31,
275}