@@ -51,116 +51,170 @@ enum {
5151};
5252
5353// Arduino analog pins
54- #ifndef NUM_ANALOG_INPUTS
55- #define NUM_ANALOG_INPUTS 0
56- #endif
57- #ifndef NUM_ANALOG_FIRST
58- #define NUM_ANALOG_FIRST NUM_DIGITAL_PINS
59- #endif
54+ // If NUM_ANALOG_INPUTS is not defined there is no analog pins defined.
55+ // Anyway ADC internal channels are always avaialable.
56+ #if defined(NUM_ANALOG_INPUTS ) && (NUM_ANALOG_INPUTS > 0 )
6057
58+ // If NUM_ANALOG_FIRST is defined, analog pins are defined contiguous
59+ // and defined hereafter
60+ #ifdef NUM_ANALOG_FIRST
6161// Analog pins must be contiguous to be able to loop on each value
6262#define MAX_ANALOG_INPUTS 24
6363_Static_assert (NUM_ANALOG_INPUTS <= MAX_ANALOG_INPUTS ,
6464 "Core NUM_ANALOG_INPUTS limited to MAX_ANALOG_INPUTS" );
6565_Static_assert (NUM_ANALOG_FIRST >= NUM_ANALOG_INPUTS ,
6666 "First analog pin value (A0) must be greater than or equal to NUM_ANALOG_INPUTS" );
67+ #endif /* NUM_ANALOG_FIRST */
6768
6869#if NUM_ANALOG_INPUTS > 0
70+ #ifndef PIN_A0
6971#define PIN_A0 NUM_ANALOG_FIRST
72+ #endif
7073static const uint8_t A0 = PIN_A0 ;
7174#endif
7275#if NUM_ANALOG_INPUTS > 1
76+ #ifndef PIN_A1
7377#define PIN_A1 (PIN_A0 + 1)
78+ #endif
7479static const uint8_t A1 = PIN_A1 ;
7580#endif
7681#if NUM_ANALOG_INPUTS > 2
82+ #ifndef PIN_A2
7783#define PIN_A2 (PIN_A1 + 1)
84+ #endif
7885static const uint8_t A2 = PIN_A2 ;
7986#endif
8087#if NUM_ANALOG_INPUTS > 3
88+ #ifndef PIN_A3
8189#define PIN_A3 (PIN_A2 + 1)
90+ #endif
8291static const uint8_t A3 = PIN_A3 ;
8392#endif
8493#if NUM_ANALOG_INPUTS > 4
94+ #ifndef PIN_A4
8595#define PIN_A4 (PIN_A3 + 1)
96+ #endif
8697static const uint8_t A4 = PIN_A4 ;
8798#endif
8899#if NUM_ANALOG_INPUTS > 5
100+ #ifndef PIN_A5
89101#define PIN_A5 (PIN_A4 + 1)
102+ #endif
90103static const uint8_t A5 = PIN_A5 ;
91104#endif
92105#if NUM_ANALOG_INPUTS > 6
106+ #ifndef PIN_A6
93107#define PIN_A6 (PIN_A5 + 1)
108+ #endif
94109static const uint8_t A6 = PIN_A6 ;
95110#endif
96111#if NUM_ANALOG_INPUTS > 7
112+ #ifndef PIN_A7
97113#define PIN_A7 (PIN_A6 + 1)
114+ #endif
98115static const uint8_t A7 = PIN_A7 ;
99116#endif
100117#if NUM_ANALOG_INPUTS > 8
118+ #ifndef PIN_A8
101119#define PIN_A8 (PIN_A7 + 1)
120+ #endif
102121static const uint8_t A8 = PIN_A8 ;
103122#endif
104123#if NUM_ANALOG_INPUTS > 9
124+ #ifndef PIN_A9
105125#define PIN_A9 (PIN_A8 + 1)
126+ #endif
106127static const uint8_t A9 = PIN_A9 ;
107128#endif
108129#if NUM_ANALOG_INPUTS > 10
130+ #ifndef PIN_A10
109131#define PIN_A10 (PIN_A9 + 1)
132+ #endif
110133static const uint8_t A10 = PIN_A10 ;
111134#endif
112135#if NUM_ANALOG_INPUTS > 11
136+ #ifndef PIN_A11
113137#define PIN_A11 (PIN_A10 + 1)
138+ #endif
114139static const uint8_t A11 = PIN_A11 ;
115140#endif
116141#if NUM_ANALOG_INPUTS > 12
142+ #ifndef PIN_A12
117143#define PIN_A12 (PIN_A11 + 1)
144+ #endif
118145static const uint8_t A12 = PIN_A12 ;
119146#endif
120147#if NUM_ANALOG_INPUTS > 13
148+ #ifndef PIN_A13
121149#define PIN_A13 (PIN_A12 + 1)
150+ #endif
122151static const uint8_t A13 = PIN_A13 ;
123152#endif
124153#if NUM_ANALOG_INPUTS > 14
154+ #ifndef PIN_A14
125155#define PIN_A14 (PIN_A13 + 1)
156+ #endif
126157static const uint8_t A14 = PIN_A14 ;
127158#endif
128159#if NUM_ANALOG_INPUTS > 15
160+ #ifndef PIN_A15
129161#define PIN_A15 (PIN_A14 + 1)
162+ #endif
130163static const uint8_t A15 = PIN_A15 ;
131164#endif
132165#if NUM_ANALOG_INPUTS > 16
166+ #ifndef PIN_A16
133167#define PIN_A16 (PIN_A15 + 1)
168+ #endif
134169static const uint8_t A16 = PIN_A16 ;
135170#endif
136171#if NUM_ANALOG_INPUTS > 17
172+ #ifndef PIN_A17
137173#define PIN_A17 (PIN_A16 + 1)
174+ #endif
138175static const uint8_t A17 = PIN_A17 ;
139176#endif
140177#if NUM_ANALOG_INPUTS > 18
178+ #ifndef PIN_A18
141179#define PIN_A18 (PIN_A17 + 1)
180+ #endif
142181static const uint8_t A18 = PIN_A18 ;
143182#endif
144183#if NUM_ANALOG_INPUTS > 19
184+ #ifndef PIN_A19
145185#define PIN_A19 (PIN_A18 + 1)
186+ #endif
146187static const uint8_t A19 = PIN_A19 ;
147188#endif
148189#if NUM_ANALOG_INPUTS > 20
190+ #ifndef PIN_A20
149191#define PIN_A20 (PIN_A19 + 1)
192+ #endif
150193static const uint8_t A20 = PIN_A20 ;
151194#endif
152195#if NUM_ANALOG_INPUTS > 21
196+ #ifndef PIN_A21
153197#define PIN_A21 (PIN_A20 + 1)
198+ #endif
154199static const uint8_t A21 = PIN_A21 ;
155200#endif
156201#if NUM_ANALOG_INPUTS > 22
202+ #ifndef PIN_A22
157203#define PIN_A22 (PIN_A21 + 1)
204+ #endif
158205static const uint8_t A22 = PIN_A22 ;
159206#endif
160207#if NUM_ANALOG_INPUTS > 23
208+ #ifndef PIN_A23
161209#define PIN_A23 (PIN_A22 + 1)
210+ #endif
162211static const uint8_t A23 = PIN_A23 ;
163212#endif
213+ #else
214+ #ifndef NUM_ANALOG_INPUTS
215+ #define NUM_ANALOG_INPUTS 0
216+ #endif
217+ #endif /* NUM_ANALOG_INPUTS */
164218
165219// Default for Arduino connector compatibility
166220// SPI Definitions
@@ -236,10 +290,15 @@ uint32_t pinNametoDigitalPin(PinName p);
236290// Convert an analog pin number to a digital pin number
237291#if defined(NUM_ANALOG_INPUTS ) && (NUM_ANALOG_INPUTS > 0 )
238292// Used by analogRead api to have A0 == 0
293+ #ifndef analogInputToDigitalPin
294+ // Default one for contiguous analog pins definition
239295#define analogInputToDigitalPin (p ) (((uint32_t)p < NUM_ANALOG_INPUTS) ? (p+A0) : p)
296+ #endif
240297#else
298+ // No analog pin defined
241299#define analogInputToDigitalPin (p ) (NUM_DIGITAL_PINS)
242300#endif
301+
243302// Convert an analog pin number Axx to a PinName PX_n
244303PinName analogInputToPinName (uint32_t pin );
245304
0 commit comments