Skip to content

Commit 4e03d35

Browse files
committed
Fix digitalRead/write on analog pins (on Nano Every)
1 parent da7693d commit 4e03d35

File tree

1 file changed

+51
-119
lines changed

1 file changed

+51
-119
lines changed

variants/nona4809/pins_arduino.h

+51-119
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ static const uint8_t MOSI = PIN_SPI_MOSI;
5151
static const uint8_t MISO = PIN_SPI_MISO;
5252
static const uint8_t SCK = PIN_SPI_SCK;
5353

54-
#define PIN_WIRE_SDA (20)
55-
#define PIN_WIRE_SCL (21)
54+
#define PIN_WIRE_SDA (22)
55+
#define PIN_WIRE_SCL (23)
5656

5757
static const uint8_t SDA = PIN_WIRE_SDA;
5858
static const uint8_t SCL = PIN_WIRE_SCL;
@@ -89,14 +89,14 @@ static const uint8_t SCL = PIN_WIRE_SCL;
8989

9090
#define LED_BUILTIN (13)
9191

92-
#define PIN_A0 (0) // AIN3
93-
#define PIN_A1 (1) // AIN2
94-
#define PIN_A2 (2) // AIN1
95-
#define PIN_A3 (3) // AIN0
96-
#define PIN_A4 (4) // PF2 / AIN12
97-
#define PIN_A5 (5) // PF3 / AIN13
98-
#define PIN_A6 (6) // AIN5
99-
#define PIN_A7 (7) // AIN4
92+
#define PIN_A0 (14) // AIN3
93+
#define PIN_A1 (15) // AIN2
94+
#define PIN_A2 (16) // AIN1
95+
#define PIN_A3 (17) // AIN0
96+
#define PIN_A4 (18) // PF2 / AIN12
97+
#define PIN_A5 (19) // PF3 / AIN13
98+
#define PIN_A6 (20) // AIN5
99+
#define PIN_A7 (21) // AIN4
100100

101101
static const uint8_t A0 = PIN_A0;
102102
static const uint8_t A1 = PIN_A1;
@@ -157,33 +157,16 @@ const uint8_t PROGMEM digital_pin_to_port[] = {
157157
PE, // 11 PE0
158158
PE, // 12 PE1
159159
PE, // 13 PE2
160-
PD, // 14 PD0/AI0
161-
PD, // 15 PD1AI1
162-
PD, // 16 PD2/AI2
163-
PD, // 17 PD3/AI3
164-
PD, // 18 PD4/AI4
165-
PD, // 19 PD5/AI5
166-
PA, // 20 PA2/TWI_SDA
167-
PA, // 21 PA3/TWI_SCL
168-
PC, // 22 PC3
169-
PA, // 23 PA5/NINA TX
170-
PA, // 24 PA4/NINA RX
171-
PD, // 25 PD6/LED_BUILTIN
172-
PB, // 26 PB5/USART3_Rx
173-
PB, // 27 PB4/USART3_Tx
174-
PA, // 28 PA6/NINA GPIO0
175-
PA, // 29 PA7/NINA RST
176-
PB, // 30 PB3/IMU CS
177-
PC, // 31 PC7/IMU INT
178-
PC, // 32 PC0/MOSI
179-
PC, // 33 PC1/MISO
180-
PC, // 34 PC2/SCK
181-
PF, // 35 PF2/NINA CS
182-
PF, // 36 PF3/NINA ACK
183-
PF, // 37 PF0 TOSC 1
184-
PF, // 38 PF1 TOSC 2
185-
PD, // 39 PD7 VREF
186-
PF // 40 PF6 RESET
160+
PD, // 14 PD3/AI3
161+
PD, // 15 PD2/AI2
162+
PD, // 16 PD1/AI1
163+
PD, // 17 PD0/AI0
164+
PF, // 18 PF2/AI12
165+
PF, // 19 PF3/AI13
166+
PD, // 20 PD5/AI5
167+
PD, // 21 PD4/AI4
168+
PA, // 22 PA2/TWI_SDA
169+
PA, // 23 PA3/TWI_SCL
187170
};
188171

189172
/* Use this for accessing PINnCTRL register */
@@ -202,33 +185,16 @@ const uint8_t PROGMEM digital_pin_to_bit_position[] = {
202185
PIN0_bp, // 11 PE0
203186
PIN1_bp, // 12 PE1
204187
PIN2_bp, // 13 PE2
205-
PIN0_bp, // 14 PD0/AI0
206-
PIN1_bp, // 15 PD1AI1
207-
PIN2_bp, // 16 PD2/AI2
208-
PIN3_bp, // 17 PD3/AI3
209-
PIN4_bp, // 18 PD4/AI4
210-
PIN5_bp, // 19 PD5/AI5
211-
PIN2_bp, // 20 PA2/TWI_SDA
212-
PIN3_bp, // 21 PA3/TWI_SCL
213-
PIN3_bp, // 22 PC3
214-
PIN5_bp, // 23 PA5/NINA TX
215-
PIN4_bp, // 24 PA4/NINA RX
216-
PIN6_bp, // 25 PD6/LED_BUILTIN
217-
PIN5_bp, // 26 PB5/USART3_Rx
218-
PIN4_bp, // 27 PB4/USART3_Tx
219-
PIN6_bp, // 28 PA6/NINA GPIO0
220-
PIN7_bp, // 29 PA7/NINA RST
221-
PIN3_bp, // 30 PB3/IMU CS
222-
PIN7_bp, // 31 PC7/IMU INT
223-
PIN0_bp, // 32 PC0/MOSI
224-
PIN1_bp, // 33 PC1/MISO
225-
PIN2_bp, // 34 PC2/SCK
226-
PIN2_bp, // 35 PF2/NINA CS
227-
PIN3_bp, // 36 PF3/NINA ACK
228-
PIN0_bp, // 37 PF0 TOSC 1
229-
PIN1_bp, // 38 PF1 TOSC 2
230-
PIN7_bp, // 39 PD7 VREF
231-
PIN6_bp // 40 PF6 RESET
188+
PIN3_bp, // 14 PD3/AI3
189+
PIN2_bp, // 15 PD2/AI2
190+
PIN1_bp, // 16 PD1/AI1
191+
PIN0_bp, // 17 PD0/AI0
192+
PIN2_bp, // 18 PF2/AI12
193+
PIN3_bp, // 19 PF3/AI13
194+
PIN5_bp, // 20 PD5/AI5
195+
PIN4_bp, // 21 PD4/AI4
196+
PIN2_bp, // 22 PA2/TWI_SDA
197+
PIN3_bp, // 23 PA3/TWI_SCL
232198
};
233199

234200
/* Use this for accessing PINnCTRL register */
@@ -247,33 +213,16 @@ const uint8_t PROGMEM digital_pin_to_bit_mask[] = {
247213
PIN0_bm, // 11 PE0
248214
PIN1_bm, // 12 PE1
249215
PIN2_bm, // 13 PE2
250-
PIN0_bm, // 14 PD0/AI0
251-
PIN1_bm, // 15 PD1AI1
252-
PIN2_bm, // 16 PD2/AI2
253-
PIN3_bm, // 17 PD3/AI3
254-
PIN4_bm, // 18 PD4/AI4
255-
PIN5_bm, // 19 PD5/AI5
256-
PIN2_bm, // 20 PA2/TWI_SDA
257-
PIN3_bm, // 21 PA3/TWI_SCL
258-
PIN3_bm, // 22 PC3
259-
PIN5_bm, // 23 PA5/NINA TX
260-
PIN4_bm, // 24 PA4/NINA RX
261-
PIN6_bm, // 25 PD6/LED_BUILTIN
262-
PIN5_bm, // 26 PB5/USART3_Rx
263-
PIN4_bm, // 27 PB4/USART3_Tx
264-
PIN6_bm, // 28 PA6/NINA GPIO0
265-
PIN7_bm, // 29 PA7/NINA RST
266-
PIN3_bm, // 30 PB3/IMU CS
267-
PIN7_bm, // 31 PC7/IMU INT
268-
PIN0_bm, // 32 PC0/MOSI
269-
PIN1_bm, // 33 PC1/MISO
270-
PIN2_bm, // 34 PC2/SCK
271-
PIN2_bm, // 35 PF2/NINA CS
272-
PIN3_bm, // 36 PF3/NINA ACK
273-
PIN0_bm, // 37 PF0 TOSC 1
274-
PIN1_bm, // 38 PF1 TOSC 2
275-
PIN7_bm, // 39 PD7 VREF
276-
PIN6_bm // 40 PF6 RESET
216+
PIN3_bm, // 14 PD3/AI3
217+
PIN2_bm, // 15 PD2/AI2
218+
PIN1_bm, // 16 PD1/AI1
219+
PIN0_bm, // 17 PD0/AI0
220+
PIN2_bm, // 18 PF2/AI12
221+
PIN3_bm, // 19 PF3/AI13
222+
PIN5_bm, // 20 PD5/AI5
223+
PIN4_bm, // 21 PD4/AI4
224+
PIN2_bm, // 22 PA2/TWI_SDA
225+
PIN3_bm, // 23 PA3/TWI_SCL
277226
};
278227

279228
const uint8_t PROGMEM digital_pin_to_timer[] = {
@@ -291,33 +240,16 @@ const uint8_t PROGMEM digital_pin_to_timer[] = {
291240
NOT_ON_TIMER, // 11 PE0
292241
NOT_ON_TIMER, // 12 PE1
293242
NOT_ON_TIMER, // 13 PE2
294-
NOT_ON_TIMER, // 14 PD0/AI0
295-
NOT_ON_TIMER, // 15 PD1AI1
296-
NOT_ON_TIMER, // 16 PD2/AI2
297-
NOT_ON_TIMER, // 17 PD3/AI3
298-
NOT_ON_TIMER, // 18 PD4/AI4
299-
NOT_ON_TIMER, // 19 PD5/AI5
300-
NOT_ON_TIMER, // 20 PA2/TWI_SDA
301-
NOT_ON_TIMER, // 21 PA3/TWI_SCL
302-
NOT_ON_TIMER, // 22 PC3
303-
NOT_ON_TIMER, // 23 PA5/NINA TX
304-
NOT_ON_TIMER, // 24 PA4/NINA RX
305-
NOT_ON_TIMER, // 25 PD6/LED_BUILTIN
306-
NOT_ON_TIMER, // 26 PB5/USART3_Rx
307-
NOT_ON_TIMER, // 27 PB4/USART3_Tx
308-
NOT_ON_TIMER, // 28 PA6/NINA GPIO0
309-
NOT_ON_TIMER, // 29 PA7/NINA RST
310-
NOT_ON_TIMER, // 30 PB3/IMU CS
311-
NOT_ON_TIMER, // 31 PC7/IMU INT
312-
NOT_ON_TIMER, // 32 PC0/MOSI
313-
NOT_ON_TIMER, // 33 PC1/MISO
314-
NOT_ON_TIMER, // 34 PC2/SCK
315-
NOT_ON_TIMER, // 35 PF2/NINA CS
316-
NOT_ON_TIMER, // 36 PF3/NINA ACK
317-
NOT_ON_TIMER, // 37 PF0 TOSC 1
318-
NOT_ON_TIMER, // 38 PF1 TOSC 2
319-
NOT_ON_TIMER, // 39 PD7 VREF
320-
NOT_ON_TIMER // 40 PF6 RESET
243+
NOT_ON_TIMER, // 14 PD3/AI3
244+
NOT_ON_TIMER, // 15 PD2/AI2
245+
NOT_ON_TIMER, // 16 PD1/AI1
246+
NOT_ON_TIMER, // 17 PD0/AI0
247+
NOT_ON_TIMER, // 18 PF2/AI12
248+
NOT_ON_TIMER, // 19 PF3/AI13
249+
NOT_ON_TIMER, // 20 PD5/AI5
250+
NOT_ON_TIMER, // 21 PD4/AI4
251+
NOT_ON_TIMER, // 22 PA2/TWI_SDA
252+
NOT_ON_TIMER, // 23 PA3/TWI_SCL
321253
};
322254

323255
const uint8_t PROGMEM analog_pin_to_channel[] = {
@@ -334,7 +266,7 @@ const uint8_t PROGMEM analog_pin_to_channel[] = {
334266
#endif
335267

336268
extern const uint8_t analog_pin_to_channel[];
337-
#define digitalPinToAnalogInput(p) ((p < NUM_ANALOG_INPUTS) ? pgm_read_byte(analog_pin_to_channel + p) : NOT_A_PIN )
269+
#define digitalPinToAnalogInput(p) ((p < ANALOG_INPUT_OFFSET) ? pgm_read_byte(analog_pin_to_channel + p) : pgm_read_byte(analog_pin_to_channel + p - ANALOG_INPUT_OFFSET) )
338270

339271
// These serial port names are intended to allow libraries and architecture-neutral
340272
// sketches to automatically default to the correct port name for a particular type

0 commit comments

Comments
 (0)