@@ -17,28 +17,51 @@ macro_rules! impl_mod_adc {
17
17
pub mod adc {
18
18
//! Analog-to-Digital Converter
19
19
//!
20
- //! # Example
21
- //!
22
20
//! For full source code, please refer to the ATmega ADC example:
23
21
//! [`atmega2560-adc.rs`](https://github.com/Rahix/avr-hal/blob/main/examples/atmega2560/src/bin/atmega2560-adc.rs)
24
22
//!
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
+ ) *
25
40
//! ```
26
- //! let dp = attiny_hal::Peripherals::take().unwrap();
27
- //! let pins = attiny_hal::pins!(dp);
28
41
//!
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;" ) ]
30
46
//!
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);
37
49
//!
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
+ ) *
42
65
//! ```
43
66
44
67
use avr_hal_generic:: paste:: paste;
@@ -61,14 +84,6 @@ macro_rules! impl_mod_adc {
61
84
///
62
85
/// Some channels are not directly connected to pins. This module provides types which can be used
63
86
/// 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
- /// ```
72
87
#[ allow( non_camel_case_types) ]
73
88
pub mod channel {
74
89
$(
0 commit comments