@@ -19,28 +19,49 @@ macro_rules! impl_mod_adc {
1919 pub mod adc {
2020 //! Analog-to-Digital Converter
2121 //!
22- //! # Example
23- //!
24- //! Complete example source code can be found in the repository:
22+ //! For full source code, please refer to the ATmega ADC example:
2523 //! [`atmega2560-adc.rs`](https://github.com/Rahix/avr-hal/blob/main/examples/atmega2560/src/bin/atmega2560-adc.rs)
2624 //!
25+ //! # Example: Read pins using `analog_read()`
26+ //!
27+ //! ```no_run
28+ #![ doc = concat!( "use atmega_hal::" , stringify!( $hal) , " as hal;" ) ]
29+ //!
30+ //! let dp = hal::Peripherals::take().unwrap();
31+ //! let pins = hal::pins!(dp);
32+ //!
33+ //! let mut adc = hal::Adc::<avr_hal_generic::clock::MHz1>::new(dp.ADC, Default::default());
34+ //!
35+ $(
36+ #![ doc = paste!{ concat!(
37+ "let " , stringify!( [ < input_ $pin_name: lower >] ) , " = pins." , stringify!( [ < $pin_name: lower >] ) , ".into_analog_input(&mut adc);\n " ,
38+ "let " , stringify!( [ < value_ $pin_name: lower >] ) , " = " , stringify!( [ < input_ $pin_name: lower >] ) , ".analog_read(&mut adc);\n \n "
39+ ) } ]
40+ ) *
2741 //! ```
28- //! let dp = atmega_hal::Peripherals::take().unwrap();
29- //! let pins = atmega_hal::pins!(dp);
3042 //!
31- //! let mut adc = Adc::new(dp.ADC, Default::default());
43+ //! # Example: Read channels (including pins) using `read_blocking()`
44+ //!
45+ //! ```no_run
46+ #![ doc = concat!( "use atmega_hal::" , stringify!( $hal) , " as hal;" ) ]
3247 //!
33- //! let channels: [atmega_hal::adc::Channel; 4] = [
34- //! pins.pf0.into_analog_input(&mut adc).into_channel(),
35- //! pins.pf1.into_analog_input(&mut adc).into_channel(),
36- //! pins.pf2.into_analog_input(&mut adc).into_channel(),
37- //! pins.pf3.into_analog_input(&mut adc).into_channel(),
38- //! ];
48+ //! let dp = hal::Peripherals::take().unwrap();
49+ //! let pins = hal::pins!(dp);
3950 //!
40- //! for (index, channel) in channels.iter().enumerate() {
41- //! let value = adc.read_blocking(channel);
42- //! ufmt::uwrite!(&mut serial, "CH{}: {} ", index, value).unwrap();
43- //! }
51+ //! let mut adc = hal::Adc::<avr_hal_generic::clock::MHz1>::new(dp.ADC, Default::default());
52+ //!
53+ //! //
54+ $(
55+ #![ doc = paste!{ concat!(
56+ "let " , stringify!( [ < channel_ $pin_name: lower >] ) , " = pins." , stringify!( [ < $pin_name: lower >] ) , ".into_analog_input(&mut adc).into_channel();\n " ,
57+ "let " , stringify!( [ < value_ $pin_name: lower >] ) , " = adc.read_blocking(&" , stringify!( [ < channel_ $pin_name: lower >] ) , ");\n \n "
58+ ) } ]
59+ ) *
60+ $(
61+ #![ doc = paste!{ concat!(
62+ "let " , stringify!( [ < value_ $channel_name: lower >] ) , " = adc.read_blocking(&hal::adc::channel::" , stringify!( [ < $channel_name >] ) , ");\n \n "
63+ ) } ]
64+ ) *
4465 //! ```
4566
4667 use avr_hal_generic:: paste:: paste;
@@ -53,14 +74,6 @@ macro_rules! impl_mod_adc {
5374 ///
5475 /// Some channels are not directly connected to pins. This module provides types which can be used
5576 /// to access them.
56- ///
57- /// # Example
58- /// ```
59- /// let dp = atmega_hal::Peripherals::take().unwrap();
60- /// let mut adc = atmega_hal::Adc::new(dp.ADC, Default::default());
61- ///
62- /// let value = adc.read_blocking(&channel::Vbg);
63- /// ```
6477 #[ allow( non_camel_case_types) ]
6578 pub mod channel {
6679 $(
0 commit comments