Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 37b3077

Browse files
committed
Fixed pin assignment for analog pins and comments
1 parent c172373 commit 37b3077

File tree

2 files changed

+124
-135
lines changed

2 files changed

+124
-135
lines changed

cores/arduino/wiring_analog.c

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ void analogReference(uint8_t mode)
6868

6969
int analogRead(uint8_t pin)
7070
{
71+
pin = digitalPinToAnalogInput(pin);
7172
if(pin > NUM_ANALOG_INPUTS) return NOT_A_PIN;
7273

7374
/* Check if TWI is operating on double bonded pin (Master Enable is high

variants/uno2018/pins_arduino.h

+123-135
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,17 @@
3333
#define NUM_TOTAL_FREE_PINS (NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS + NUM_TESTPOINT_PINS)
3434
#define NUM_TOTAL_PINS (NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS + NUM_TESTPOINT_PINS + NUM_OCCUPIED_PINS)
3535
#define ANALOG_INPUT_OFFSET 14
36-
#define analogInputToDigitalPin(p) ((p < NUM_ANALOG_INPUTS) ? (p) + ANALOG_INPUT_OFFSET : NOT_A_PIN)
36+
#define digitalPinToAnalogInput(p) ((p < NUM_ANALOG_INPUTS) ? (p) : (p) - ANALOG_INPUT_OFFSET)
3737

3838
#define EXTERNAL_NUM_INTERRUPTS 48
3939

40-
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11)
40+
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10)
4141

42-
#ifdef REV_A_ENGINEERING_SAMPLE
43-
#define SPI_MUX (PORTMUX_SPI0_DEFAULT_gc)
44-
#define PIN_SPI_MISO (23)
45-
#define PIN_SPI_SCK (28)
46-
#define PIN_SPI_MOSI (24)
47-
#define PIN_SPI_SS (29)
48-
#else
4942
#define SPI_MUX (PORTMUX_SPI0_ALT1_gc)
50-
#define PIN_SPI_MISO (12)
51-
#define PIN_SPI_SCK (13)
52-
#define PIN_SPI_MOSI (11)
43+
#define PIN_SPI_MISO (33)
44+
#define PIN_SPI_SCK (34)
45+
#define PIN_SPI_MOSI (32)
5346
#define PIN_SPI_SS (10)
54-
#endif
5547

5648
static const uint8_t SS = PIN_SPI_SS;
5749
static const uint8_t MOSI = PIN_SPI_MOSI;
@@ -105,25 +97,21 @@ static const uint8_t SCL = PIN_WIRE_SCL;
10597

10698
#define LED_BUILTIN 25
10799

108-
#define PIN_A0 (0)
109-
#define PIN_A1 (1)
110-
#define PIN_A2 (2)
111-
#define PIN_A3 (3)
112-
#define PIN_A4 (4)
113-
#define PIN_A5 (5)
114-
#define PIN_A6 (6)
115-
#define PIN_A7 (7)
100+
#define PIN_A0 (14)
101+
#define PIN_A1 (15)
102+
#define PIN_A2 (16)
103+
#define PIN_A3 (17)
104+
#define PIN_A4 (18)
105+
#define PIN_A5 (19)
116106

117107
static const uint8_t A0 = PIN_A0;
118108
static const uint8_t A1 = PIN_A1;
119109
static const uint8_t A2 = PIN_A2;
120110
static const uint8_t A3 = PIN_A3;
121111
static const uint8_t A4 = PIN_A4;
122112
static const uint8_t A5 = PIN_A5;
123-
static const uint8_t A6 = PIN_A6;
124-
static const uint8_t A7 = PIN_A7;
125113

126-
#define PINS_COUNT (38u)
114+
#define PINS_COUNT (40u)
127115

128116
//NINA
129117
#define NINA_GPIO0 (28u)
@@ -168,43 +156,43 @@ static const uint8_t A7 = PIN_A7;
168156
//
169157

170158
const uint8_t PROGMEM digital_pin_to_port[] = {
171-
PC, //0 USART1_Rx PC5
172-
PC, //1 USART1_Tx PC4
173-
PA, //2 PA0
174-
PF, //3 PF5
175-
PC, //4 PC6
176-
PB, //5 PB2
177-
PF, //6 PF4
178-
PA, //7 PA1
179-
PE, //8 PE3
180-
PB, //9 PB0
181-
PB, //10 PB1
182-
PE, //11 PE0
183-
PE, //12 PE1
184-
PE, //13 PE2
185-
PD, //14 AI0 PD0
186-
PD, //15 AI1 PD1
187-
PD, //16 AI2 PD2
188-
PD, //17 AI3 PD3
189-
PD, //18 AI4 PD4
190-
PD, //19 AI5 PD5
191-
PA, //20 TWI_SDA PA2
192-
PA, //21 TWI_SCL PA3
193-
PC, //22 SPI SS PC3
194-
PA, //23 USART0_Rx PA5
195-
PA, //24 USART0_Tx PA4
196-
PD, //25 LED_BUILTIN PD6
197-
PB, //26 USART3_Rx PB5
198-
PB, //27 USART3_Tx PB4
199-
PA, // 28 PA6
200-
PA, // 29 PA7
201-
PB, // 30 PB3
202-
PC, // 31 PC7
203-
PC, // 32 PC0
204-
PC, // 33 PC1
205-
PC, // 34 PC2
206-
PF, // 35 PF2
207-
PF, // 36 PF3
159+
PC, // 0 PC5/USART1_Rx
160+
PC, // 1 PC4/USART1_Tx
161+
PA, // 2 PA0
162+
PF, // 3 PF5
163+
PC, // 4 PC6
164+
PB, // 5 PB2
165+
PF, // 6 PF4
166+
PA, // 7 PA1
167+
PE, // 8 PE3
168+
PB, // 9 PB0
169+
PB, // 10 PB1
170+
PE, // 11 PE0
171+
PE, // 12 PE1
172+
PE, // 13 PE2
173+
PD, // 14 PD0/AI0
174+
PD, // 15 PD1AI1
175+
PD, // 16 PD2/AI2
176+
PD, // 17 PD3/AI3
177+
PD, // 18 PD4/AI4
178+
PD, // 19 PD5/AI5
179+
PA, // 20 PA2/TWI_SDA
180+
PA, // 21 PA3/TWI_SCL
181+
PC, // 22 PC3
182+
PA, // 23 PA5/NINA TX
183+
PA, // 24 PA4/NINA RX
184+
PD, // 25 PD6/LED_BUILTIN
185+
PB, // 26 PB5/USART3_Rx
186+
PB, // 27 PB4/USART3_Tx
187+
PA, // 28 PA6/NINA GPIO0
188+
PA, // 29 PA7/NINA RST
189+
PB, // 30 PB3/IMU CS
190+
PC, // 31 PC7/IMU INT
191+
PC, // 32 PC0/MOSI
192+
PC, // 33 PC1/MISO
193+
PC, // 34 PC2/SCK
194+
PF, // 35 PF2/NINA CS
195+
PF, // 36 PF3/NINA ACK
208196
PF, // 37 PF0 TOSC 1
209197
PF, // 38 PF1 TOSC 2
210198
PD, // 39 PD7 VREF
@@ -213,87 +201,87 @@ const uint8_t PROGMEM digital_pin_to_port[] = {
213201

214202
/* Use this for accessing PINnCTRL register */
215203
const uint8_t PROGMEM digital_pin_to_bit_position[] = {
216-
PIN5_bp, //0 USART1_Rx PC5
217-
PIN4_bp, //1 USART1_Tx PC4
218-
PIN0_bp, //2 PA0
219-
PIN5_bp, //3 PF5
220-
PIN6_bp, //4 PC6
221-
PIN2_bp, //5 PB2
222-
PIN4_bp, //6 PF4
223-
PIN1_bp, //7 PA1
224-
PIN3_bp, //8 PE3
225-
PIN0_bp, //9 PB0
226-
PIN1_bp, //10 PB1
227-
PIN0_bp, //11 PE0
228-
PIN1_bp, //12 PE1
229-
PIN2_bp, //13 PE2
230-
PIN0_bp, //14 AI0 PD0
231-
PIN1_bp, //15 AI1 PD1
232-
PIN2_bp, //16 AI2 PD2
233-
PIN3_bp, //17 AI3 PD3
234-
PIN4_bp, //18 AI4 PD4
235-
PIN5_bp, //19 AI5 PD5
236-
PIN2_bp, //20 TWI_SDA PA2
237-
PIN3_bp, //21 TWI_SCL PA3
238-
PIN3_bp, //22 SPI SS PC3
239-
PIN5_bp, //23 USART0_Rx PA5
240-
PIN4_bp, //24 USART0_Tx PA4
241-
PIN6_bp, //25 LED_BUILTIN PD6
242-
PIN5_bp, //26 USART3_Rx PB5
243-
PIN4_bp, //27 USART3_Tx PB4
244-
PIN6_bp, // 28 PA6
245-
PIN7_bp, // 29 PA7
246-
PIN3_bp, // 30 PB3
247-
PIN7_bp, // 31 PC7
248-
PIN0_bp, // 32 PC0
249-
PIN1_bp, // 33 PC1
250-
PIN2_bp, // 34 PC2
251-
PIN2_bp, // 35 PF2
252-
PIN3_bp, // 36 PF3
204+
PIN5_bp, // 0 PC5/USART1_Rx
205+
PIN4_bp, // 1 PC4/USART1_Tx
206+
PIN0_bp, // 2 PA0
207+
PIN5_bp, // 3 PF5
208+
PIN6_bp, // 4 PC6
209+
PIN2_bp, // 5 PB2
210+
PIN4_bp, // 6 PF4
211+
PIN1_bp, // 7 PA1
212+
PIN3_bp, // 8 PE3
213+
PIN0_bp, // 9 PB0
214+
PIN1_bp, // 10 PB1
215+
PIN0_bp, // 11 PE0
216+
PIN1_bp, // 12 PE1
217+
PIN2_bp, // 13 PE2
218+
PIN0_bp, // 14 PD0/AI0
219+
PIN1_bp, // 15 PD1AI1
220+
PIN2_bp, // 16 PD2/AI2
221+
PIN3_bp, // 17 PD3/AI3
222+
PIN4_bp, // 18 PD4/AI4
223+
PIN5_bp, // 19 PD5/AI5
224+
PIN2_bp, // 20 PA2/TWI_SDA
225+
PIN3_bp, // 21 PA3/TWI_SCL
226+
PIN3_bp, // 22 PC3
227+
PIN5_bp, // 23 PA5/NINA TX
228+
PIN4_bp, // 24 PA4/NINA RX
229+
PIN6_bp, // 25 PD6/LED_BUILTIN
230+
PIN5_bp, // 26 PB5/USART3_Rx
231+
PIN4_bp, // 27 PB4/USART3_Tx
232+
PIN6_bp, // 28 PA6/NINA GPIO0
233+
PIN7_bp, // 29 PA7/NINA RST
234+
PIN3_bp, // 30 PB3/IMU CS
235+
PIN7_bp, // 31 PC7/IMU INT
236+
PIN0_bp, // 32 PC0/MOSI
237+
PIN1_bp, // 33 PC1/MISO
238+
PIN2_bp, // 34 PC2/SCK
239+
PIN2_bp, // 35 PF2/NINA CS
240+
PIN3_bp, // 36 PF3/NINA ACK
253241
PIN0_bp, // 37 PF0 TOSC 1
254242
PIN1_bp, // 38 PF1 TOSC 2
255243
PIN7_bp, // 39 PD7 VREF
256244
PIN6_bp // 40 PF6 RESET
257245
};
258246

259247
const uint8_t PROGMEM digital_pin_to_timer[] = {
260-
NOT_ON_TIMER, //0 USART1_Tx PC5
261-
NOT_ON_TIMER, //1 USART1_Tx PC4
262-
NOT_ON_TIMER, //2 PA0
263-
TIMERB1, //3 PF5 // TCB1 WO
264-
NOT_ON_TIMER, //4 PC6
265-
TIMERA0, //5 PB2 // TCA0 WO2
266-
TIMERB0, //6 PF4 // TCB0 WO
267-
NOT_ON_TIMER, //7 PA1
268-
NOT_ON_TIMER, //8 PE3
269-
TIMERA0, //9 PB0 // TCA0 WO0
270-
TIMERA0, //10 PB1 // TCA0 WO1
271-
TIMERB2, //11 PC0 // TCB2 WO2
272-
NOT_ON_TIMER, //12 PC1
273-
NOT_ON_TIMER, //13 PC2
274-
NOT_ON_TIMER, //14 AI0 PD0
275-
NOT_ON_TIMER, //15 AI1 PD1
276-
NOT_ON_TIMER, //16 AI2 PD2
277-
NOT_ON_TIMER, //17 AI3 PD3
278-
NOT_ON_TIMER, //18 AI4 PD4
279-
NOT_ON_TIMER, //19 AI5 PD5
280-
NOT_ON_TIMER, //20 TWI_SDA PA2
281-
NOT_ON_TIMER, //21 TWI_SCL PA3
282-
NOT_ON_TIMER, //22 SPI SS PC3
283-
NOT_ON_TIMER, //23 USART0_Rx PA5
284-
NOT_ON_TIMER, //24 USART0_Tx PA4
285-
NOT_ON_TIMER, //25 LED_BUILTIN PD6
286-
NOT_ON_TIMER, //26 USART3_Rx PB5
287-
NOT_ON_TIMER, //27 USART3_Tx PB4
288-
NOT_ON_TIMER, // 28 PA6
289-
NOT_ON_TIMER, // 29 PA7
290-
NOT_ON_TIMER, // 30 PB3
291-
NOT_ON_TIMER, // 31 PC7
292-
NOT_ON_TIMER, // 32 PE0
293-
NOT_ON_TIMER, // 33 PE1
294-
NOT_ON_TIMER, // 34 PE2
295-
NOT_ON_TIMER, // 35 PF2
296-
NOT_ON_TIMER, // 36 PF3
248+
NOT_ON_TIMER, // 0 PC5/USART1_Rx
249+
NOT_ON_TIMER, // 1 PC4/USART1_Tx
250+
NOT_ON_TIMER, // 2 PA0
251+
TIMERB1, // 3 PF5
252+
NOT_ON_TIMER, // 4 PC6
253+
TIMERA0, // 5 PB2
254+
TIMERB0, // 6 PF4
255+
NOT_ON_TIMER, // 7 PA1
256+
NOT_ON_TIMER, // 8 PE3
257+
TIMERA0, // 9 PB0
258+
TIMERA0, // 10 PB1
259+
TIMERB2, // 11 PE0
260+
NOT_ON_TIMER, // 12 PE1
261+
NOT_ON_TIMER, // 13 PE2
262+
NOT_ON_TIMER, // 14 PD0/AI0
263+
NOT_ON_TIMER, // 15 PD1AI1
264+
NOT_ON_TIMER, // 16 PD2/AI2
265+
NOT_ON_TIMER, // 17 PD3/AI3
266+
NOT_ON_TIMER, // 18 PD4/AI4
267+
NOT_ON_TIMER, // 19 PD5/AI5
268+
NOT_ON_TIMER, // 20 PA2/TWI_SDA
269+
NOT_ON_TIMER, // 21 PA3/TWI_SCL
270+
NOT_ON_TIMER, // 22 PC3
271+
NOT_ON_TIMER, // 23 PA5/NINA TX
272+
NOT_ON_TIMER, // 24 PA4/NINA RX
273+
NOT_ON_TIMER, // 25 PD6/LED_BUILTIN
274+
NOT_ON_TIMER, // 26 PB5/USART3_Rx
275+
NOT_ON_TIMER, // 27 PB4/USART3_Tx
276+
NOT_ON_TIMER, // 28 PA6/NINA GPIO0
277+
NOT_ON_TIMER, // 29 PA7/NINA RST
278+
NOT_ON_TIMER, // 30 PB3/IMU CS
279+
NOT_ON_TIMER, // 31 PC7/IMU INT
280+
NOT_ON_TIMER, // 32 PC0/MOSI
281+
NOT_ON_TIMER, // 33 PC1/MISO
282+
NOT_ON_TIMER, // 34 PC2/SCK
283+
NOT_ON_TIMER, // 35 PF2/NINA CS
284+
NOT_ON_TIMER, // 36 PF3/NINA ACK
297285
NOT_ON_TIMER, // 37 PF0 TOSC 1
298286
NOT_ON_TIMER, // 38 PF1 TOSC 2
299287
NOT_ON_TIMER, // 39 PD7 VREF

0 commit comments

Comments
 (0)