@@ -17,28 +17,51 @@ macro_rules! impl_mod_adc {
1717 pub mod adc {
1818 //! Analog-to-Digital Converter
1919 //!
20- //! # Example
21- //!
2220 //! For full source code, please refer to the ATmega ADC example:
2321 //! [`atmega2560-adc.rs`](https://github.com/Rahix/avr-hal/blob/main/examples/atmega2560/src/bin/atmega2560-adc.rs)
2422 //!
23+ //! # Example: Read pins using `analog_read()`
24+ //!
25+ //! ```no_run
26+ #![ doc = concat!( "use attiny_hal::" , stringify!( $hal) , " as hal;" ) ]
27+ //!
28+ //! let dp = hal::Peripherals::take().unwrap();
29+ //! let pins = hal::pins!(dp);
30+ //!
31+ //! type Clock = avr_hal_generic::clock::MHz16;
32+ //! let mut adc = hal::Adc::<Clock>::new(dp.ADC, Default::default());
33+ //!
34+ $(
35+ #![ doc = paste!{ concat!(
36+ "let " , stringify!( [ < input_ $pin_name: lower >] ) , " = pins." , stringify!( [ < $pin_name: lower >] ) , ".into_analog_input(&mut adc);\n " ,
37+ "let " , stringify!( [ < value_ $pin_name: lower >] ) , " = " , stringify!( [ < input_ $pin_name: lower >] ) , ".analog_read(&mut adc);\n \n "
38+ ) } ]
39+ ) *
2540 //! ```
26- //! let dp = attiny_hal::Peripherals::take().unwrap();
27- //! let pins = attiny_hal::pins!(dp);
2841 //!
29- //! let mut adc = Adc::new(dp.ADC, Default::default());
42+ //! # Example: Read channels (including pins) using `read_blocking()`
43+ //!
44+ //! ```no_run
45+ #![ doc = concat!( "use attiny_hal::" , stringify!( $hal) , " as hal;" ) ]
3046 //!
31- //! let channels: [attiny_hal::adc::Channel; 4] = [
32- //! pins.pa0.into_analog_input(&mut adc).into_channel(),
33- //! pins.pa1.into_analog_input(&mut adc).into_channel(),
34- //! pins.pa2.into_analog_input(&mut adc).into_channel(),
35- //! pins.pa3.into_analog_input(&mut adc).into_channel(),
36- //! ];
47+ //! let dp = hal::Peripherals::take().unwrap();
48+ //! let pins = hal::pins!(dp);
3749 //!
38- //! for (index, channel) in channels.iter().enumerate() {
39- //! let value = adc.read_blocking(channel);
40- //! ufmt::uwrite!(&mut serial, "CH{}: {} ", index, value).unwrap();
41- //! }
50+ //! type Clock = avr_hal_generic::clock::MHz16;
51+ //! let mut adc = hal::Adc::<Clock>::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+ ) *
4265 //! ```
4366
4467 use avr_hal_generic:: paste:: paste;
@@ -61,14 +84,6 @@ macro_rules! impl_mod_adc {
6184 ///
6285 /// Some channels are not directly connected to pins. This module provides types which can be used
6386 /// to access them.
64- ///
65- /// # Example
66- /// ```
67- /// let dp = attiny_hal::Peripherals::take().unwrap();
68- /// let mut adc = attiny_hal::Adc::new(dp.ADC, Default::default());
69- ///
70- /// let value = adc.read_blocking(&channel::Vbg);
71- /// ```
7287 #[ allow( non_camel_case_types) ]
7388 pub mod channel {
7489 $(
0 commit comments