arduino_board_analog.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Otto-von-Guericke-Universität Magdeburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
25 #include "periph/adc.h"
26 #include "arduino_iomap.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #ifdef DOXYGEN
38 #define ARDUINO_ANALOG_PIN_LAST /* board specific number */
39 #endif /* DOXYGEN */
40 
41 /* A board may not have any analog pins. But if it has any, it MUST define
42  * ARDUINO_ANALOG_PIN_LAST. */
43 #if !defined(ARDUINO_ANALOG_PIN_LAST) && (defined(ARDUINO_A0) || defined(ARDUINO_A1))
44 # error "ARDUINO_PIN_LAST undefined despite analog pins available"
45 #endif
46 
47 /* A board not having A0 and A1, but having e.g. A3 would also trigger this.
48  * Extend as needed when porting new boards. */
49 #if defined(ARDUINO_ANALOG_PIN_LAST) && !defined(ARDUINO_A0) && !defined(ARDUINO_A1)
50 # error "ARDUINO_PIN_LAST defined but no analog pins available"
51 #endif
52 
53 #if defined(ARDUINO_ANALOG_PIN_LAST) || defined(DOXYGEN)
72 static const adc_t arduino_analog_map[] = {
73 #ifndef DOXYGEN
74 #ifdef ARDUINO_A0
75  ARDUINO_A0,
76 #elif ARDUINO_ANALOG_PIN_LAST > 0
77  ADC_UNDEF,
78 #endif
79 #ifdef ARDUINO_A1
80  ARDUINO_A1,
81 #elif ARDUINO_ANALOG_PIN_LAST > 1
82  ADC_UNDEF,
83 #endif
84 #ifdef ARDUINO_A2
85  ARDUINO_A2,
86 #elif ARDUINO_ANALOG_PIN_LAST > 2
87  ADC_UNDEF,
88 #endif
89 #ifdef ARDUINO_A3
90  ARDUINO_A3,
91 #elif ARDUINO_ANALOG_PIN_LAST > 3
92  ADC_UNDEF,
93 #endif
94 #ifdef ARDUINO_A4
95  ARDUINO_A4,
96 #elif ARDUINO_ANALOG_PIN_LAST > 4
97  ADC_UNDEF,
98 #endif
99 #ifdef ARDUINO_A5
100  ARDUINO_A5,
101 #elif ARDUINO_ANALOG_PIN_LAST > 5
102  ADC_UNDEF,
103 #endif
104 #ifdef ARDUINO_A6
105  ARDUINO_A6,
106 #elif ARDUINO_ANALOG_PIN_LAST > 6
107  ADC_UNDEF,
108 #endif
109 #ifdef ARDUINO_A7
110  ARDUINO_A7,
111 #elif ARDUINO_ANALOG_PIN_LAST > 7
112  ADC_UNDEF,
113 #endif
114 #ifdef ARDUINO_A8
115  ARDUINO_A8,
116 #elif ARDUINO_ANALOG_PIN_LAST > 8
117  ADC_UNDEF,
118 #endif
119 #ifdef ARDUINO_A9
120  ARDUINO_A9,
121 #elif ARDUINO_ANALOG_PIN_LAST > 9
122  ADC_UNDEF,
123 #endif
124 #ifdef ARDUINO_A10
125  ARDUINO_A10,
126 #elif ARDUINO_ANALOG_PIN_LAST > 10
127  ADC_UNDEF,
128 #endif
129 #ifdef ARDUINO_A11
130  ARDUINO_A11,
131 #elif ARDUINO_ANALOG_PIN_LAST > 11
132  ADC_UNDEF,
133 #endif
134 #ifdef ARDUINO_A12
135  ARDUINO_A12,
136 #elif ARDUINO_ANALOG_PIN_LAST > 12
137  ADC_UNDEF,
138 #endif
139 #ifdef ARDUINO_A13
140  ARDUINO_A13,
141 #elif ARDUINO_ANALOG_PIN_LAST > 13
142  ADC_UNDEF,
143 #endif
144 #ifdef ARDUINO_A14
145  ARDUINO_A14,
146 #elif ARDUINO_ANALOG_PIN_LAST > 14
147  ADC_UNDEF,
148 #endif
149 #ifdef ARDUINO_A15
150  ARDUINO_A15,
151 #elif ARDUINO_ANALOG_PIN_LAST > 15
152  ADC_UNDEF,
153 #endif
154 #endif /* DOXYGEN */
155 };
156 #endif /* defined(ARDUINO_ANALOG_PIN_LAST) */
157 
158 #ifdef __cplusplus
159 }
160 #endif
161 
Low-level ADC peripheral driver interface definitions.
static const adc_t arduino_analog_map[]
Look-up table for the Arduino's analog pins.
#define ARDUINO_A7
ADC 7.
Definition: arduino_iomap.h:96
#define ADC_UNDEF
Default ADC undefined value.
Definition: adc.h:78
uint_fast8_t adc_t
Define default ADC type identifier.
Definition: adc.h:71