aboutsummaryrefslogtreecommitdiff
path: root/examples/mcxa
diff options
context:
space:
mode:
authorJames Munns <[email protected]>2025-12-11 15:34:38 +0100
committerJames Munns <[email protected]>2025-12-11 15:34:38 +0100
commitefdfb3c0892f45223e8d8527e5f032fef475944e (patch)
tree1dbcae8f17a065bb307d4a95a330c6413571c0ac /examples/mcxa
parente932dc131e94f30db32b3fc9fbce8cd929555820 (diff)
Refactor the API
Diffstat (limited to 'examples/mcxa')
-rw-r--r--examples/mcxa/src/bin/adc_interrupt.rs20
-rw-r--r--examples/mcxa/src/bin/adc_polling.rs26
2 files changed, 22 insertions, 24 deletions
diff --git a/examples/mcxa/src/bin/adc_interrupt.rs b/examples/mcxa/src/bin/adc_interrupt.rs
index 5876923a1..d2cda631c 100644
--- a/examples/mcxa/src/bin/adc_interrupt.rs
+++ b/examples/mcxa/src/bin/adc_interrupt.rs
@@ -2,6 +2,7 @@
2#![no_main] 2#![no_main]
3 3
4use embassy_executor::Spawner; 4use embassy_executor::Spawner;
5use embassy_time::{Duration, Ticker};
5use hal::adc::{Adc, InterruptHandler, LpadcConfig, TriggerPriorityPolicy}; 6use hal::adc::{Adc, InterruptHandler, LpadcConfig, TriggerPriorityPolicy};
6use hal::bind_interrupts; 7use hal::bind_interrupts;
7use hal::clocks::PoweredClock; 8use hal::clocks::PoweredClock;
@@ -9,9 +10,8 @@ use hal::clocks::config::Div8;
9use hal::clocks::periph_helpers::{AdcClockSel, Div4}; 10use hal::clocks::periph_helpers::{AdcClockSel, Div4};
10use hal::config::Config; 11use hal::config::Config;
11use hal::pac::adc1::cfg::{Pwrsel, Refsel}; 12use hal::pac::adc1::cfg::{Pwrsel, Refsel};
12use hal::pac::adc1::cmdl1::{Adch, Mode}; 13use hal::pac::adc1::cmdl1::Mode;
13use hal::pac::adc1::ctrl::CalAvgs; 14use hal::pac::adc1::ctrl::CalAvgs;
14use hal::pac::adc1::tctrl::Tcmd;
15use hal::peripherals::ADC1; 15use hal::peripherals::ADC1;
16use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 16use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
17 17
@@ -38,7 +38,6 @@ async fn main(_spawner: Spawner) {
38 trigger_priority_policy: TriggerPriorityPolicy::ConvPreemptImmediatelyNotAutoResumed, 38 trigger_priority_policy: TriggerPriorityPolicy::ConvPreemptImmediatelyNotAutoResumed,
39 enable_conv_pause: false, 39 enable_conv_pause: false,
40 conv_pause_delay: 0, 40 conv_pause_delay: 0,
41 fifo_watermark: 0,
42 power: PoweredClock::NormalEnabledDeepSleepDisabled, 41 power: PoweredClock::NormalEnabledDeepSleepDisabled,
43 source: AdcClockSel::FroLfDiv, 42 source: AdcClockSel::FroLfDiv,
44 div: Div4::no_div(), 43 div: Div4::no_div(),
@@ -47,23 +46,16 @@ async fn main(_spawner: Spawner) {
47 46
48 adc.do_offset_calibration(); 47 adc.do_offset_calibration();
49 adc.do_auto_calibration(); 48 adc.do_auto_calibration();
50 49 adc.set_resolution(Mode::Data16Bits);
51 let mut conv_command_config = adc.get_default_conv_command_config();
52 conv_command_config.channel_number = Adch::SelectCorrespondingChannel8;
53 conv_command_config.conversion_resolution_mode = Mode::Data16Bits;
54 adc.set_conv_command_config(1, &conv_command_config).unwrap();
55
56 let mut conv_trigger_config = adc.get_default_conv_trigger_config();
57 conv_trigger_config.target_command_id = Tcmd::ExecuteCmd1;
58 conv_trigger_config.enable_hardware_trigger = false;
59 adc.set_conv_trigger_config(0, &conv_trigger_config);
60 50
61 defmt::info!("ADC configuration done..."); 51 defmt::info!("ADC configuration done...");
52 let mut ticker = Ticker::every(Duration::from_millis(100));
62 53
63 loop { 54 loop {
55 ticker.next().await;
64 match adc.read().await { 56 match adc.read().await {
65 Ok(value) => { 57 Ok(value) => {
66 defmt::info!("*** ADC interrupt TRIGGERED! *** -- value: {}", value); 58 defmt::info!("ADC value: {}", value);
67 } 59 }
68 Err(e) => { 60 Err(e) => {
69 defmt::error!("ADC read error: {:?}", e); 61 defmt::error!("ADC read error: {:?}", e);
diff --git a/examples/mcxa/src/bin/adc_polling.rs b/examples/mcxa/src/bin/adc_polling.rs
index d048bb56f..5c4d5524c 100644
--- a/examples/mcxa/src/bin/adc_polling.rs
+++ b/examples/mcxa/src/bin/adc_polling.rs
@@ -2,13 +2,15 @@
2#![no_main] 2#![no_main]
3 3
4use embassy_executor::Spawner; 4use embassy_executor::Spawner;
5use embassy_mcxa::adc::{ConvCommandConfig, ConvTriggerConfig};
6use embassy_time::{Duration, Ticker};
5use hal::adc::{Adc, LpadcConfig, TriggerPriorityPolicy}; 7use hal::adc::{Adc, LpadcConfig, TriggerPriorityPolicy};
6use hal::clocks::PoweredClock; 8use hal::clocks::PoweredClock;
7use hal::clocks::config::Div8; 9use hal::clocks::config::Div8;
8use hal::clocks::periph_helpers::{AdcClockSel, Div4}; 10use hal::clocks::periph_helpers::{AdcClockSel, Div4};
9use hal::config::Config; 11use hal::config::Config;
10use hal::pac::adc1::cfg::{Pwrsel, Refsel}; 12use hal::pac::adc1::cfg::{Pwrsel, Refsel};
11use hal::pac::adc1::cmdl1::{Adch, Mode}; 13use hal::pac::adc1::cmdl1::Mode;
12use hal::pac::adc1::ctrl::CalAvgs; 14use hal::pac::adc1::ctrl::CalAvgs;
13use hal::pac::adc1::tctrl::Tcmd; 15use hal::pac::adc1::tctrl::Tcmd;
14use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 16use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
@@ -34,7 +36,6 @@ async fn main(_spawner: Spawner) {
34 trigger_priority_policy: TriggerPriorityPolicy::ConvPreemptImmediatelyNotAutoResumed, 36 trigger_priority_policy: TriggerPriorityPolicy::ConvPreemptImmediatelyNotAutoResumed,
35 enable_conv_pause: false, 37 enable_conv_pause: false,
36 conv_pause_delay: 0, 38 conv_pause_delay: 0,
37 fifo_watermark: 0,
38 power: PoweredClock::NormalEnabledDeepSleepDisabled, 39 power: PoweredClock::NormalEnabledDeepSleepDisabled,
39 source: AdcClockSel::FroLfDiv, 40 source: AdcClockSel::FroLfDiv,
40 div: Div4::no_div(), 41 div: Div4::no_div(),
@@ -44,20 +45,25 @@ async fn main(_spawner: Spawner) {
44 adc.do_offset_calibration(); 45 adc.do_offset_calibration();
45 adc.do_auto_calibration(); 46 adc.do_auto_calibration();
46 47
47 let mut conv_command_config = adc.get_default_conv_command_config(); 48 let conv_command_config = ConvCommandConfig {
48 conv_command_config.channel_number = Adch::SelectCorrespondingChannel8; 49 conversion_resolution_mode: Mode::Data16Bits,
49 conv_command_config.conversion_resolution_mode = Mode::Data16Bits; 50 ..ConvCommandConfig::default()
51 };
50 adc.set_conv_command_config(1, &conv_command_config).unwrap(); 52 adc.set_conv_command_config(1, &conv_command_config).unwrap();
51 53
52 let mut conv_trigger_config = adc.get_default_conv_trigger_config(); 54 let conv_trigger_config = ConvTriggerConfig {
53 conv_trigger_config.target_command_id = Tcmd::ExecuteCmd1; 55 target_command_id: Tcmd::ExecuteCmd1,
54 conv_trigger_config.enable_hardware_trigger = false; 56 enable_hardware_trigger: false,
55 adc.set_conv_trigger_config(0, &conv_trigger_config); 57 ..Default::default()
58 };
59 adc.set_conv_trigger_config(0, &conv_trigger_config).unwrap();
56 60
57 defmt::info!("=== ADC configuration done... ==="); 61 defmt::info!("=== ADC configuration done... ===");
62 let mut tick = Ticker::every(Duration::from_millis(100));
58 63
59 loop { 64 loop {
60 adc.do_software_trigger(1); 65 tick.next().await;
66 adc.do_software_trigger(1).unwrap();
61 let result = loop { 67 let result = loop {
62 match adc.get_conv_result() { 68 match adc.get_conv_result() {
63 Ok(res) => break res, 69 Ok(res) => break res,