-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconfiguration.h
392 lines (329 loc) · 11 KB
/
configuration.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
/**
* @file configuration.h
* @author askn (K.Sato) multix.jp
* @brief
* @version 0.1
* @date 2022-12-12
*
* @copyright Copyright (c) 2022
*
*/
#pragma once
#include "src/mcu_model.h"
/**************************************
* PLEASE SELECT TARGET BOARAD PINOUT *
**************************************/
#if defined(ARDUINO_AVR_UNO_WIFI_REV2) /* ATmega4809 */
#define BOARD_ARUDUINO_UNO_WIFI_R2
#elif defined(ARDUINO_AVR_NANO_EVERY) /* ATmega4809 */
#define BOARD_ARUDUINO_NANO_EVERY
#elif defined(__AVR_TINY_2X__) /* ATtiny824 etc */
#define BOARD_ZTINYAVR_2X
#else /* OTHER */ /* AVR32DA32 etc */
#define BOARD_AVRDX
#endif
/***********************
* Using Signal Option *
* *********************/
/* MAKE signal input PF6/RESET or other PIN */
#define ENABLE_MAKE_SIGNAL_OVER_RESET
/**************************
* DEBUG mode using USART *
**************************/
#ifndef DEBUG
// #define DEBUG
#endif
/*************************
* DEBUG mode sub-module *
*************************/
#ifdef DEBUG
/* enable dump memory sub-module debug */
// #define DEBUG_DUMP_MEMORY
/* enable dump descriptor sub-module debug */
// #define DEBUG_DUMP_DESCRIPTOR
/* enable UPDI tx/rx sub-module debug */
// #define DEBUG_UPDI_LOOPBACK
#define DEBUG_USART_BAUDRATE (230400L / 4)
#endif
/*****************
* SELECT TIMING *
*****************/
/* UPDI default speed: 225000L */
/* supported rabge : 235000L ~ 45000L */
#define UPDI_USART_BAUDRATE (225000L / 1)
#define UPDI_ABORT_MS 1200
#define JTAG_ABORT_MS 12000
#define HVP_ENABLE_DELAY_US 800
#define HVP_STARTUP_DELAY_MS 0
#define MAKE_SIGNAL_DELAY_MS 600
/*********************
* HARDWARE SETTINGS *
*********************/
/*-------------------------------------*
* *
* ATtiny824/1624/3224 etc (tinyAVR-2) *
* *
*-------------------------------------*/
#if defined(BOARD_ZTINYAVR_2X)
/***
* Using Zinnia Tinya bords pinout
*
* ATtiny824/1624/3224 etc (tinyAVR-2)
*
* Using PORTA PORTB
*
* JTTX : PA1 --> Onboard CH340N RX / target MCU RX
* JTRX : PA2 <-- Onboard CH340N TX / target MCU TX
* HVP1 : PA4 --> Charge pump drive 1 (optional)
* HVP2 : PA5 --> Charge pump drive 2 (optional)
* HVEN : PA6 --> HV output enabler : LOW:Disable, HIGH:Enable
* PGEN : PA7 --> Programing state : LOW:Disable, HIGH:Enable
* TDIR : PB0 --> UPDI direction state : LOW:Pull, HIGH:Push
* TDAT : PB2 <-> UPDI to target MCU : one-wire transfer/receiver
* TRST : PB3 --> Target /RESET control (optional)
* MAKE : PA3 <-- Reset client signal : LOW:Active, HIGH:Deactive
*/
/* Disable DEBUG mode */
#undef DEBUG
#define PGEN_USE_PORTA
#define PGEN_PIN 7
// #define PGEN_PIN_INVERT
#define HVEN_USE_PORTA
#define HVEN_PIN 6
// #define HVPN_PIN_INVERT
/* HV pin group using TCA0 split timer */
#define HVP_USE_OUTPUT
#define HVP_USE_PORTA
#define HVP1_PIN 4
#define HVP2_PIN 5
#define MAKE_USE_PORTA
#define MAKE_PIN 3
#define UPDI_USART_MODULE USART0
#define UPDI_USART_PORT PORTB
#define UPDI_TDAT_PIN 2
#define UPDI_TDAT_PIN_PULLUP
#define UPDI_TDIR_PIN 0
#define UPDI_TDIR_PIN_INVERT
#define UPDI_TRST_PIN 3
#define JTAG_USART_MODULE USART1
#define JTAG_USART_PORT PORTA
#define JTAG_JTTX_PIN 1
#define JTAG_JTRX_PIN 2
#define ABORT_USE_TIMERB1
#define MILLIS_USE_TIMERB0
#endif /* defined(BOARD_ZTINYAVR_2X) */
/*-----------------------------*
* *
* ATmega4808, AVR128DB32, etc *
* *
*-----------------------------*/
#if defined(BOARD_AVRDX)
/***
* Using Zinnia Duino (AVRDX) bords pinout
*
* ATmega4808, AVR128DB32, etc
*
* Using PORTA PORTC PORTD PORTF
*
* JTRX : D0:PA1 <-- Onboard CH340N TX / target MCU TX
* JTTX : D1:PA0 --> Onboard CH340N RX / target MCU RX
* DBGTX : D3:PF4 --> Outher UART RX : use USART2 supported
* TDIR : D4:PC3 --> UPDI direction state : LOW:Pull, HIGH:Push
* TRST : D6:PC1 --> Target /RESET control (optional)
* TDAT : D7:PC0 <-> UPDI to target MCU : one-wire transfer/receiver
* PGEN : D10:PA7 --> Programing state : LOW:Deactive, HIGH:Active
* MAKE : RST:PF6 <-- Reset client signal (default) : LOW:Active, HIGH:Deactive (sense RTS)
* or : A0:PD1 <-- Reset client signal (altanate): LOW:Active, HIGH:Deactive (user switch)
* HVEN : A1:PD2 --> HV output state : LOW:Disable, HIGH:Enable
* HVP1 : A2:PD3 --> Charge pump drive 1 (optional)
* HVP2 : A3:PD4 --> Charge pump drive 2 (optional)
*/
#define PGEN_USE_PORTA
#define PGEN_PIN 7
// #define PGEN_PIN_INVERT
#define HVEN_USE_PORTD
#define HVEN_PIN 2
// #define HVPN_PIN_INVERT
/* HV pin group using TCA0 split timer */
/* using PWM pinnumber 0 ~ 5 (bad 6,7)*/
/* and AVR DB bad D0 (not output circuit) */
#define HVP_USE_OUTPUT
#define HVP_USE_PORTD
#define HVP1_PIN 3
#define HVP2_PIN 4
/* Sense RTS/DTR signal input intrrupt */
#ifdef ENABLE_MAKE_SIGNAL_OVER_RESET
#define MAKE_USE_PORTF
#define MAKE_PIN 6
#else
#define MAKE_USE_PORTD
#define MAKE_PIN 1
#endif
#define UPDI_USART_MODULE USART1
// #define UPDI_USART_PORTMUX (PORTMUX_USART1_DEFAULT_gc)
#define UPDI_USART_PORT PORTC
#define UPDI_TDAT_PIN 0
#define UPDI_TDIR_PIN 3
// #define UPDI_TDAT_PIN_PULLUP
// #define UPDI_TDIR_PIN_INVERT
#define UPDI_TRST_PIN 1
#define JTAG_USART_MODULE USART0
// #define JTAG_USART_PORTMUX (PORTMUX_USART0_DEFAULT_gc)
#define JTAG_USART_PORT PORTA
#define JTAG_JTTX_PIN 0
#define JTAG_JTRX_PIN 1
#ifdef DEBUG
#ifdef USART2_BAUD
#define DEBUG_USE_USART
#define DEBUG_USART_MODULE USART2
#define DEBUG_USART_PORTMUX (PORTMUX_USART2_ALT1_gc)
#define DEBUG_USART_PORT PORTF
#define DEBUG_DBGTX_PIN 4
#else
#undef DEBUG
#endif
#endif /* DEBUG */
#define ABORT_USE_TIMERB1
#undef MILLIS_USE_TIMERB2
#define MILLIS_USE_TIMERB2
#endif /* defined(BOARD_AVRDX) */
/*------------------------*
* *
* Arduino UNO WiFi Rev.2 *
* *
*------------------------*/
#if defined(BOARD_ARUDUINO_UNO_WIFI_R2)
/***
* Using Arduino UNO WiFi Rev.2 bords pinout
*
* ATmega4809
*
* Using PORTA PORTB PORTC PORTF PORTD(or PORTE)
*
* JTRX : --:PB5 <-- onboard mEDBG TX (ATmega32U4) : NO PINOUT
* JTTX : --:PB4 --> onboard mEDBG RX (ATmega32U4) : NO PINOUT
* DBGTX : D1:PC4 --> outher UART RX
* TDIR : --:PF3 --> UPDI direction state : LOW:Pull, HIGH:Push
* TDAT : D6:PF4 <-> UPDI to target MCU : one-wire transfer/receiver
* TRST : --:PF5 --> Target /RESET control (optional)
* PGEN : --:PD6 --> Programing state LED : LOW:Disable, HIGH:Enable
* MAKE : RST:PF6 <-- Reset client signal (default) : LOW:Active, HIGH:Deactive (user switch)
* or : A0:PD0 <-- Reset client signal (altanate): LOW:Active, HIGH:Deactive (sense RTS)
* HVEN : A1:PD1 --> HV output enabler : LOW:Disable, HIGH:Enable
* HVP1 : A2:PD2 --> Charge pump drive 1 (optional)
* HVP2 : A3:PD3 --> Charge pump drive 2 (optional)
*/
#undef UNO_WIFI_REV2_328MODE
#define PGEN_USE_PORTD
#define PGEN_PIN 6
// #define PGEN_PIN_INVERT
#define HVEN_USE_PORTD
#define HVEN_PIN 1
// #define HVPN_PIN_INVERT
/* HV pin group using TCA0 split timer */
/* using PWM pinnumber 0 ~ 5 (bad 6,7)*/
#define HVP_USE_OUTPUT
#define HVP_USE_PORTD
#define HVP1_PIN 2
#define HVP2_PIN 3
/* Sense RTS/DTR signal input intrrupt */
// #define RTS_SENSE_ENABLE
#ifdef ENABLE_MAKE_SIGNAL_OVER_RESET
#define MAKE_USE_PORTF
#define MAKE_PIN 6
#else
#define MAKE_USE_PORTD
#define MAKE_PIN 0
#endif
#define UPDI_USART_MODULE USART2
#define UPDI_USART_PORTMUX (PORTMUX_USART2_ALT1_gc)
#define UPDI_USART_PORT PORTF
#define UPDI_TDAT_PIN 4
#define UPDI_TDIR_PIN 3
// #define UPDI_TDIR_PIN_INVERT
#define UPDI_TRST_PIN 5
#define JTAG_USART_MODULE USART3
#define JTAG_USART_PORTMUX (PORTMUX_USART3_ALT1_gc)
#define JTAG_USART_PORT PORTB
#define JTAG_JTTX_PIN 4
#define JTAG_JTRX_PIN 5
#ifdef DEBUG
#define DEBUG_USE_USART
#define DEBUG_USART_MODULE USART1
#define DEBUG_USART_PORTMUX (PORTMUX_USART1_ALT1_gc)
#define DEBUG_USART_PORT PORTC
#define DEBUG_DBGTX_PIN 4
#endif /* DEBUG */
#define ABORT_USE_TIMERB1
#define MILLIS_USE_TIMERB2
#endif /* defined(BOARD_ARUDUINO_UNO_WIFI_R2) */
/*------------------------*
* *
* Arduino Nano Every *
* *
*------------------------*/
#if defined(BOARD_ARUDUINO_NANO_EVERY)
/***
* Using Arduino Nano Every bords pinout
*
* ATmega4809
*
* Using PORTA PORTB PORTC PORTF PORTD(or PORTE)
*
* JTRX : --:PB5 <-- onboard mEDBG TX (ATmega32U4) : NO PINOUT
* JTTX : --:PB4 --> onboard mEDBG RX (ATmega32U4) : NO PINOUT
* DBGTX : D1:PC4 --> outher UART RX
* TDIR : A5:PF3 --> UPDI direction state : LOW:Pull, HIGH:Push
* TDAT : D6:PF4 <-> UPDI to target MCU : one-wire transfer/receiver
* PGEN : D13:PE2 --> Programing state LED : LOW:Disable, HIGH:Enable
* MAKE : RST:PF6 <-- Reset client signal (default) : LOW:Active, HIGH:Deactive (user switch)
* or : A0:PD3 <-- Reset client signal (altanate): LOW:Active, HIGH:Deactive (sense RTS)
* HVEN : A1:PD2 --> HV output enabler : LOW:Disable, HIGH:Enable
* HVP1 : A2:PD1 --> Charge pump drive 1 (optional)
* HVP2 : A3:PD0 --> Charge pump drive 2 (optional)
*/
#undef UNO_WIFI_REV2_328MODE
#define PGEN_USE_PORTE
#define PGEN_PIN 2
// #define PGEN_PIN_INVERT
#define HVEN_USE_PORTD
#define HVEN_PIN 2
// #define HVPN_PIN_INVERT
/* HV pin group using TCA0 split timer */
/* using PWM pinnumber 0 ~ 5 (bad 6,7)*/
#define HVP_USE_OUTPUT
#define HVP_USE_PORTD
#define HVP1_PIN 1
#define HVP2_PIN 0
/* Sense RTS/DTR signal input intrrupt */
// #define RTS_SENSE_ENABLE
#ifdef ENABLE_MAKE_SIGNAL_OVER_RESET
#define MAKE_USE_PORTF
#define MAKE_PIN 6
#else
#define MAKE_USE_PORTD
#define MAKE_PIN 3
#endif
#define UPDI_USART_MODULE USART2
#define UPDI_USART_PORTMUX (PORTMUX_USART2_ALT1_gc)
#define UPDI_USART_PORT PORTF
#define UPDI_TDAT_PIN 4
// #define UPDI_TDAT_PIN_PULLUP
#define UPDI_TDIR_PIN 3
// #define UPDI_TDIR_PIN_INVERT
#define JTAG_USART_MODULE USART3
#define JTAG_USART_PORTMUX (PORTMUX_USART3_ALT1_gc)
#define JTAG_USART_PORT PORTB
#define JTAG_JTTX_PIN 4
#define JTAG_JTRX_PIN 5
#ifdef DEBUG
#define DEBUG_USE_USART
#define DEBUG_USART_MODULE USART1
#define DEBUG_USART_PORTMUX (PORTMUX_USART1_ALT1_gc)
#define DEBUG_USART_PORT PORTC
#define DEBUG_DBGTX_PIN 4
#endif /* DEBUG */
#define ABORT_USE_TIMERB1
#define MILLIS_USE_TIMERB2
#endif /* defined(BOARD_ARUDUINO_NANO_EVERY) */
// end of code