33
33
#define NUM_TOTAL_FREE_PINS (NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS + NUM_TESTPOINT_PINS)
34
34
#define NUM_TOTAL_PINS (NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS + NUM_TESTPOINT_PINS + NUM_OCCUPIED_PINS)
35
35
#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 )
37
37
38
38
#define EXTERNAL_NUM_INTERRUPTS 48
39
39
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)
41
41
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
49
42
#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 )
53
46
#define PIN_SPI_SS (10)
54
- #endif
55
47
56
48
static const uint8_t SS = PIN_SPI_SS ;
57
49
static const uint8_t MOSI = PIN_SPI_MOSI ;
@@ -105,25 +97,21 @@ static const uint8_t SCL = PIN_WIRE_SCL;
105
97
106
98
#define LED_BUILTIN 25
107
99
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)
116
106
117
107
static const uint8_t A0 = PIN_A0 ;
118
108
static const uint8_t A1 = PIN_A1 ;
119
109
static const uint8_t A2 = PIN_A2 ;
120
110
static const uint8_t A3 = PIN_A3 ;
121
111
static const uint8_t A4 = PIN_A4 ;
122
112
static const uint8_t A5 = PIN_A5 ;
123
- static const uint8_t A6 = PIN_A6 ;
124
- static const uint8_t A7 = PIN_A7 ;
125
113
126
- #define PINS_COUNT (38u )
114
+ #define PINS_COUNT (40u )
127
115
128
116
//NINA
129
117
#define NINA_GPIO0 (28u)
@@ -168,43 +156,43 @@ static const uint8_t A7 = PIN_A7;
168
156
//
169
157
170
158
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
208
196
PF , // 37 PF0 TOSC 1
209
197
PF , // 38 PF1 TOSC 2
210
198
PD , // 39 PD7 VREF
@@ -213,87 +201,87 @@ const uint8_t PROGMEM digital_pin_to_port[] = {
213
201
214
202
/* Use this for accessing PINnCTRL register */
215
203
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
253
241
PIN0_bp , // 37 PF0 TOSC 1
254
242
PIN1_bp , // 38 PF1 TOSC 2
255
243
PIN7_bp , // 39 PD7 VREF
256
244
PIN6_bp // 40 PF6 RESET
257
245
};
258
246
259
247
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
297
285
NOT_ON_TIMER , // 37 PF0 TOSC 1
298
286
NOT_ON_TIMER , // 38 PF1 TOSC 2
299
287
NOT_ON_TIMER , // 39 PD7 VREF
0 commit comments