aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMathis Deroo <[email protected]>2025-12-08 15:09:05 -0800
committerMathis Deroo <[email protected]>2025-12-09 10:52:11 -0800
commit759ab109806f447a1193954a453828b860104c3a (patch)
tree29b87b9a86a4c1186da6933863ee824c4d09e902 /examples
parente75e8dddb63f758419ef5d8d7c321c631f5b0a59 (diff)
Add Mode trait for Async and Blocking behavior
Signed-off-by: Mathis Deroo <[email protected]>
Diffstat (limited to 'examples')
-rw-r--r--examples/mcxa/src/bin/adc_interrupt.rs2
-rw-r--r--examples/mcxa/src/bin/adc_polling.rs20
2 files changed, 13 insertions, 9 deletions
diff --git a/examples/mcxa/src/bin/adc_interrupt.rs b/examples/mcxa/src/bin/adc_interrupt.rs
index a0e392634..67fcf6361 100644
--- a/examples/mcxa/src/bin/adc_interrupt.rs
+++ b/examples/mcxa/src/bin/adc_interrupt.rs
@@ -44,7 +44,7 @@ async fn main(_spawner: Spawner) {
44 source: AdcClockSel::FroLfDiv, 44 source: AdcClockSel::FroLfDiv,
45 div: Div4::no_div(), 45 div: Div4::no_div(),
46 }; 46 };
47 let mut adc = Adc::new(p.ADC1, p.P1_10, Irqs, adc_config); 47 let mut adc = Adc::new_async(p.ADC1, p.P1_10, Irqs, adc_config).unwrap();
48 48
49 adc.do_offset_calibration(); 49 adc.do_offset_calibration();
50 adc.do_auto_calibration(); 50 adc.do_auto_calibration();
diff --git a/examples/mcxa/src/bin/adc_polling.rs b/examples/mcxa/src/bin/adc_polling.rs
index 65b66c8dd..14d47329a 100644
--- a/examples/mcxa/src/bin/adc_polling.rs
+++ b/examples/mcxa/src/bin/adc_polling.rs
@@ -2,7 +2,7 @@
2#![no_main] 2#![no_main]
3 3
4use embassy_executor::Spawner; 4use embassy_executor::Spawner;
5use hal::adc::{Adc, ConvResult, LpadcConfig, TriggerPriorityPolicy}; 5use hal::adc::{Adc, LpadcConfig, TriggerPriorityPolicy};
6use hal::clocks::PoweredClock; 6use hal::clocks::PoweredClock;
7use hal::config::Config; 7use hal::config::Config;
8use hal::clocks::config::Div8; 8use hal::clocks::config::Div8;
@@ -39,7 +39,7 @@ async fn main(_spawner: Spawner) {
39 source: AdcClockSel::FroLfDiv, 39 source: AdcClockSel::FroLfDiv,
40 div: Div4::no_div(), 40 div: Div4::no_div(),
41 }; 41 };
42 let adc = Adc::new_polling(p.ADC1, p.P1_10, adc_config); 42 let adc = Adc::new_blocking(p.ADC1, p.P1_10, adc_config).unwrap();
43 43
44 adc.do_offset_calibration(); 44 adc.do_offset_calibration();
45 adc.do_auto_calibration(); 45 adc.do_auto_calibration();
@@ -58,11 +58,15 @@ async fn main(_spawner: Spawner) {
58 58
59 loop { 59 loop {
60 adc.do_software_trigger(1); 60 adc.do_software_trigger(1);
61 let mut result: Option<ConvResult> = None; 61 let result = loop {
62 while result.is_none() { 62 match adc.get_conv_result() {
63 result = adc.get_conv_result(); 63 Ok(res) => break res,
64 } 64 Err(_) => {
65 let value = result.unwrap().conv_value >> G_LPADC_RESULT_SHIFT; 65 // Conversion not ready, continue polling
66 defmt::info!("value: {=u16}", value); 66 }
67 }
68 };
69 let value = result.conv_value >> G_LPADC_RESULT_SHIFT;
70 defmt::info!("ADC value: {=u16}", value);
67 } 71 }
68} 72}