Skip to content

Commit 8b70b82

Browse files
committed
Definition and comments improvements for pins management
Signed-off-by: Frederic Pillon <[email protected]>
1 parent a5e4948 commit 8b70b82

File tree

5 files changed

+47
-30
lines changed

5 files changed

+47
-30
lines changed

Diff for: cores/arduino/pins_arduino.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ bool digitalpinIsAnalogInput(uint32_t pin)
7777
{
7878
bool ret = false;
7979
#if NUM_ANALOG_INPUTS > 0
80-
if ((pin & PANA) == PANA) {
80+
if ((pin & PNUM_ANALOG_BASE) == PNUM_ANALOG_BASE) {
8181
ret = true;
8282
} else {
8383
for (uint32_t i = 0; i < NUM_ANALOG_INPUTS; i++) {
@@ -100,9 +100,9 @@ uint32_t digitalPinToAnalogInput(uint32_t pin)
100100
{
101101
uint32_t ret = NUM_ANALOG_INPUTS;
102102
#if NUM_ANALOG_INPUTS > 0
103-
if ((pin & PANA) == PANA) {
103+
if ((pin & PNUM_ANALOG_BASE) == PNUM_ANALOG_BASE) {
104104
/* PYn = Ax */
105-
ret = (pin & PANA_IDX) | (pin & ALTX_MASK);
105+
ret = (pin & PNUM_ANALOG_INDEX) | (pin & ALTX_MASK);
106106
} else {
107107
for (uint32_t i = 0; i < NUM_ANALOG_INPUTS; i++) {
108108
if (analogInputPin[i] == (pin & PNUM_MASK)) {

Diff for: cores/arduino/pins_arduino.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
#include "pins_arduino_analog.h"
2626
#include "pins_arduino_digital.h"
2727

28-
/* Pin number */
28+
/*
29+
* Pin number mask
30+
* allows to retrieve the pin number without ALTx
31+
*/
2932
#define PNUM_MASK 0xFF
3033

3134
/* Avoid PortName issue */
@@ -90,9 +93,9 @@ extern const uint32_t analogInputPin[];
9093
/* Note: Analog pin is also a digital pin */
9194
#define digitalPinToPinName(p) ((((uint32_t)(p) & PNUM_MASK) < NUM_DIGITAL_PINS) ? \
9295
(PinName)(digitalPin[(uint32_t)(p) & PNUM_MASK] | ((p) & ALTX_MASK)) : \
93-
(((uint32_t)(p) & PANA) == PANA) && \
96+
(((uint32_t)(p) & PNUM_ANALOG_BASE) == PNUM_ANALOG_BASE) && \
9497
(((uint32_t)(p) & PNUM_MASK) < NUM_ANALOG_INTERNAL_FIRST) ? \
95-
(PinName)(digitalPin[analogInputPin[(p) & PANA_IDX]] | ((p) & ALTX_MASK)) : NC)
98+
(PinName)(digitalPin[analogInputPin[(p) & PNUM_ANALOG_INDEX]] | ((p) & ALTX_MASK)) : NC)
9699
#else
97100
#define digitalPinToPinName(p) ((((uint32_t)(p) & PNUM_MASK) < NUM_DIGITAL_PINS) ? \
98101
(PinName)(digitalPin[(uint32_t)(p) & PNUM_MASK] | ((p) & ALTX_MASK)) : NC)
@@ -106,9 +109,9 @@ uint32_t pinNametoDigitalPin(PinName p);
106109
/* Non contiguous analog pins definition in digitalPin array */
107110
#define analogInputToDigitalPin(p) ((((uint32_t)(p) & PNUM_MASK) < NUM_ANALOG_INPUTS) ? \
108111
analogInputPin[(uint32_t)(p) & PNUM_MASK] | ((uint32_t)(p) & ALTX_MASK) : \
109-
(((uint32_t)(p) & PANA) == PANA) && \
112+
(((uint32_t)(p) & PNUM_ANALOG_BASE) == PNUM_ANALOG_BASE) && \
110113
(((uint32_t)(p) & PNUM_MASK) < NUM_ANALOG_INTERNAL_FIRST) ? \
111-
analogInputPin[(p) & PANA_IDX] | ((uint32_t)(p) & ALTX_MASK) : (uint32_t)NC)
114+
analogInputPin[(p) & PNUM_ANALOG_INDEX] | ((uint32_t)(p) & ALTX_MASK) : (uint32_t)NC)
112115
#else/* No analog pin defined */
113116
#define analogInputToDigitalPin(p) (NUM_DIGITAL_PINS)
114117
#endif /* NUM_ANALOG_INPUTS > 0 */

Diff for: cores/arduino/pins_arduino_analog.h

+17-6
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,29 @@
1515
#include "variant.h"
1616
#include "PinNames.h"
1717

18-
/* Analog */
19-
#define PANA 0xC0
20-
/* Analog index */
21-
#define PANA_IDX 0x3F
18+
/*
19+
* Pin number Analog base
20+
* To check if a pin number is an analog pin:
21+
* ((p & PNUM_ANALOG_BASE) == PNUM_ANALOG_BASE)
22+
* if true then p is an analog pin number
23+
* else not
24+
*/
25+
#define PNUM_ANALOG_BASE 0xC0
26+
/*
27+
* Pin number Analog index
28+
* allows to retrieve the pin number index of an analog pin
29+
* in the analogInputPin[] array:
30+
* analogInputPin[p & PNUM_ANALOG_INDEX]
31+
*/
32+
#define PNUM_ANALOG_INDEX 0x3F
2233

2334
/* Arduino analog pins */
2435
#ifndef NUM_ANALOG_INPUTS
2536
#define NUM_ANALOG_INPUTS 0
2637
#endif
2738

2839
/* Analog internal pin numbers follow the analog pin number */
29-
#define NUM_ANALOG_INTERNAL_FIRST (PANA + NUM_ANALOG_INPUTS)
40+
#define NUM_ANALOG_INTERNAL_FIRST (PNUM_ANALOG_BASE + NUM_ANALOG_INPUTS)
3041

3142
/* ADC internal channels (not a pins) */
3243
/* Only used for analogRead() */
@@ -46,7 +57,7 @@
4657
/* If NUM_ANALOG_INPUTS is not defined there is no analog pins defined. */
4758
/* Anyway ADC internal channels are always available. */
4859
#if NUM_ANALOG_INPUTS > 0
49-
#define PIN_A0 PANA
60+
#define PIN_A0 PNUM_ANALOG_BASE
5061
#if NUM_ANALOG_INPUTS > 1
5162
#define PIN_A1 (PIN_A0 + 1)
5263
#endif

Diff for: cores/arduino/stm32/PinNames.h

+14-14
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@ extern "C" {
99
#endif
1010

1111
// Alternative possibilities which use other HW peripheral instances
12-
#define ALT0 0x000
13-
#define ALT1 0x100
14-
#define ALT2 0x200
15-
#define ALT3 0x300
16-
#define ALT4 0x400
17-
#define ALT5 0x500
18-
#define ALT6 0x600
19-
#define ALT7 0x700
12+
#define ALT0 0x000
13+
#define ALT1 0x100
14+
#define ALT2 0x200
15+
#define ALT3 0x300
16+
#define ALT4 0x400
17+
#define ALT5 0x500
18+
#define ALT6 0x600
19+
#define ALT7 0x700
2020
// ALTX mask
21-
#define ALTX_MASK 0x700
21+
#define ALTX_MASK 0x700
2222

2323
// Specific pinmap definition
2424
// Analog internal
25-
#define PANAINT 0x1000
25+
#define PNAME_ANALOG_INTERNAL_BASE 0x1000
2626
// Dual pad pin
2727
// Direct channels are connected to analog I/Os
2828
// (PY_C) to optimize ADC performance.
29-
#define PDUAL 0x2000
29+
#define PDUAL 0x2000
3030
// Remap pin
31-
#define PREMAP 0x3000
31+
#define PREMAP 0x3000
3232
// PinName mask
33-
#define PNAME_MASK 0xFF
33+
#define PNAME_MASK 0xFF
3434

3535
typedef enum {
3636
// Not connected
@@ -251,7 +251,7 @@ typedef enum {
251251
PZ_15 = (PortZ << 4) + 0x0F,
252252
#endif
253253
// Specific pin name
254-
PADC_BASE = PANAINT,
254+
PADC_BASE = PNAME_ANALOG_INTERNAL_BASE,
255255
#if defined(ADC_CHANNEL_TEMPSENSOR) || defined(ADC_CHANNEL_TEMPSENSOR_ADC1)
256256
PADC_TEMP,
257257
#endif

Diff for: keywords.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -735,8 +735,11 @@ ALT5 LITERAL1
735735
ALT6 LITERAL1
736736
ALT7 LITERAL1
737737
ATLX_MASK LITERAL1
738-
PANA LITERAL1
739-
PANAINT LITERAL1
738+
PNUM_MASK LITERAL1
739+
PNUM_ANALOG_BASE LITERAL1
740+
PNUM_ANALOG_INDEX LITERAL1
741+
PNAME_MASK LITERAL1
742+
PNAME_ANALOG_INTERNAL_BASE LITERAL1
740743
PDUAL LITERAL1
741744
PREMAP LITERAL1
742745

0 commit comments

Comments
 (0)