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
5648static const uint8_t SS = PIN_SPI_SS ;
5749static 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
117107static const uint8_t A0 = PIN_A0 ;
118108static const uint8_t A1 = PIN_A1 ;
119109static const uint8_t A2 = PIN_A2 ;
120110static const uint8_t A3 = PIN_A3 ;
121111static const uint8_t A4 = PIN_A4 ;
122112static 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
170158const 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 */
215203const 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
259247const 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