Loading...
Searching...
No Matches
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
24
25#include "periph/adc.h"
26#include "arduino_iomap.h"
27
28#ifdef __cplusplus
29extern "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)
72static const adc_t arduino_analog_map[] = {
73#ifndef DOXYGEN
74#ifdef ARDUINO_A0
75 ARDUINO_A0,
76#elif ARDUINO_ANALOG_PIN_LAST > 0
78#endif
79#ifdef ARDUINO_A1
80 ARDUINO_A1,
81#elif ARDUINO_ANALOG_PIN_LAST > 1
83#endif
84#ifdef ARDUINO_A2
85 ARDUINO_A2,
86#elif ARDUINO_ANALOG_PIN_LAST > 2
88#endif
89#ifdef ARDUINO_A3
90 ARDUINO_A3,
91#elif ARDUINO_ANALOG_PIN_LAST > 3
93#endif
94#ifdef ARDUINO_A4
95 ARDUINO_A4,
96#elif ARDUINO_ANALOG_PIN_LAST > 4
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 ADC_UNDEF
Default ADC undefined value.
Definition adc.h:78
uint_fast8_t adc_t
Define default ADC type identifier.
Definition adc.h:71