diff options
Diffstat (limited to 'examples/mcxa/src/bin/adc_polling.rs')
| -rw-r--r-- | examples/mcxa/src/bin/adc_polling.rs | 26 |
1 files changed, 16 insertions, 10 deletions
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 | ||
| 4 | use embassy_executor::Spawner; | 4 | use embassy_executor::Spawner; |
| 5 | use embassy_mcxa::adc::{ConvCommandConfig, ConvTriggerConfig}; | ||
| 6 | use embassy_time::{Duration, Ticker}; | ||
| 5 | use hal::adc::{Adc, LpadcConfig, TriggerPriorityPolicy}; | 7 | use hal::adc::{Adc, LpadcConfig, TriggerPriorityPolicy}; |
| 6 | use hal::clocks::PoweredClock; | 8 | use hal::clocks::PoweredClock; |
| 7 | use hal::clocks::config::Div8; | 9 | use hal::clocks::config::Div8; |
| 8 | use hal::clocks::periph_helpers::{AdcClockSel, Div4}; | 10 | use hal::clocks::periph_helpers::{AdcClockSel, Div4}; |
| 9 | use hal::config::Config; | 11 | use hal::config::Config; |
| 10 | use hal::pac::adc1::cfg::{Pwrsel, Refsel}; | 12 | use hal::pac::adc1::cfg::{Pwrsel, Refsel}; |
| 11 | use hal::pac::adc1::cmdl1::{Adch, Mode}; | 13 | use hal::pac::adc1::cmdl1::Mode; |
| 12 | use hal::pac::adc1::ctrl::CalAvgs; | 14 | use hal::pac::adc1::ctrl::CalAvgs; |
| 13 | use hal::pac::adc1::tctrl::Tcmd; | 15 | use hal::pac::adc1::tctrl::Tcmd; |
| 14 | use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; | 16 | use {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, |
