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