aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/adc_polling.rs
diff options
context:
space:
mode:
authorJames Munns <[email protected]>2025-12-04 18:37:01 +0100
committerJames Munns <[email protected]>2025-12-04 18:43:11 +0100
commitdc6bf5d44675f6f2013ddfab6b14df25a996a965 (patch)
treeab593af8f4b2be502a809833f80e4f3b741b8fad /examples/src/bin/adc_polling.rs
parent22bae2d80153003af4637c4b0cc26d52858f5228 (diff)
Move to subfolder
Diffstat (limited to 'examples/src/bin/adc_polling.rs')
-rw-r--r--examples/src/bin/adc_polling.rs68
1 files changed, 0 insertions, 68 deletions
diff --git a/examples/src/bin/adc_polling.rs b/examples/src/bin/adc_polling.rs
deleted file mode 100644
index ddf3f586b..000000000
--- a/examples/src/bin/adc_polling.rs
+++ /dev/null
@@ -1,68 +0,0 @@
1#![no_std]
2#![no_main]
3
4use embassy_executor::Spawner;
5use embassy_mcxa_examples::init_adc_pins;
6use hal::adc::{ConvResult, LpadcConfig, TriggerPriorityPolicy};
7use hal::clocks::periph_helpers::{AdcClockSel, Div4};
8use hal::clocks::PoweredClock;
9use hal::pac::adc1::cfg::{Pwrsel, Refsel};
10use hal::pac::adc1::cmdl1::{Adch, Mode};
11use hal::pac::adc1::ctrl::CalAvgs;
12use hal::pac::adc1::tctrl::Tcmd;
13use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
14
15const G_LPADC_RESULT_SHIFT: u32 = 0;
16
17#[embassy_executor::main]
18async fn main(_spawner: Spawner) {
19 let p = hal::init(hal::config::Config::default());
20
21 unsafe {
22 init_adc_pins();
23 }
24
25 defmt::info!("=== ADC polling Example ===");
26
27 let adc_config = LpadcConfig {
28 enable_in_doze_mode: true,
29 conversion_average_mode: CalAvgs::Average128,
30 enable_analog_preliminary: true,
31 power_up_delay: 0x80,
32 reference_voltage_source: Refsel::Option3,
33 power_level_mode: Pwrsel::Lowest,
34 trigger_priority_policy: TriggerPriorityPolicy::ConvPreemptImmediatelyNotAutoResumed,
35 enable_conv_pause: false,
36 conv_pause_delay: 0,
37 fifo_watermark: 0,
38 power: PoweredClock::NormalEnabledDeepSleepDisabled,
39 source: AdcClockSel::FroLfDiv,
40 div: Div4::no_div(),
41 };
42 let adc = hal::adc::Adc::<hal::adc::Adc1>::new(p.ADC1, adc_config);
43
44 adc.do_offset_calibration();
45 adc.do_auto_calibration();
46
47 let mut conv_command_config = adc.get_default_conv_command_config();
48 conv_command_config.channel_number = Adch::SelectCorrespondingChannel8;
49 conv_command_config.conversion_resolution_mode = Mode::Data16Bits;
50 adc.set_conv_command_config(1, &conv_command_config);
51
52 let mut conv_trigger_config = adc.get_default_conv_trigger_config();
53 conv_trigger_config.target_command_id = Tcmd::ExecuteCmd1;
54 conv_trigger_config.enable_hardware_trigger = false;
55 adc.set_conv_trigger_config(0, &conv_trigger_config);
56
57 defmt::info!("=== ADC configuration done... ===");
58
59 loop {
60 adc.do_software_trigger(1);
61 let mut result: Option<ConvResult> = None;
62 while result.is_none() {
63 result = hal::adc::get_conv_result();
64 }
65 let value = result.unwrap().conv_value >> G_LPADC_RESULT_SHIFT;
66 defmt::info!("value: {=u16}", value);
67 }
68}