RTEMS CPU Kit with SuperCore  4.11.3
iom16u4.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2009 Atmel Corporation
11  * All rights reserved.
12  *
13  * Redistribution and use in source and binary forms, with or without
14  * modification, are permitted provided that the following conditions are met:
15  *
16  * * Redistributions of source code must retain the above copyright
17  * notice, this list of conditions and the following disclaimer.
18  *
19  * * Redistributions in binary form must reproduce the above copyright
20  * notice, this list of conditions and the following disclaimer in
21  * the documentation and/or other materials provided with the
22  * distribution.
23  *
24  * * Neither the name of the copyright holders nor the names of
25  * contributors may be used to endorse or promote products derived
26  * from this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38  * POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef _AVR_IO_H_
42 # error "Include <avr/io.h> instead of this file."
43 #endif
44 
45 #ifndef _AVR_IOXXX_H_
46 # define _AVR_IOXXX_H_ "iom16u4.h"
47 #else
48 # error "Attempt to include more than one <avr/ioXXX.h> file."
49 #endif
50 
51 
52 #ifndef _AVR_ATmega16U4_H_
53 #define _AVR_ATmega16U4_H_ 1
54 
62 /* Registers and associated bit numbers. */
63 
64 #define PINB _SFR_IO8(0x03)
65 #define PINB0 0
66 #define PINB1 1
67 #define PINB2 2
68 #define PINB3 3
69 #define PINB4 4
70 #define PINB5 5
71 #define PINB6 6
72 #define PINB7 7
73 
74 #define DDRB _SFR_IO8(0x04)
75 #define DDB0 0
76 #define DDB1 1
77 #define DDB2 2
78 #define DDB3 3
79 #define DDB4 4
80 #define DDB5 5
81 #define DDB6 6
82 #define DDB7 7
83 
84 #define PORTB _SFR_IO8(0x05)
85 #define PORTB0 0
86 #define PORTB1 1
87 #define PORTB2 2
88 #define PORTB3 3
89 #define PORTB4 4
90 #define PORTB5 5
91 #define PORTB6 6
92 #define PORTB7 7
93 
94 #define PINC _SFR_IO8(0x06)
95 #define PINC6 6
96 #define PINC7 7
97 
98 #define DDRC _SFR_IO8(0x07)
99 #define DDC6 6
100 #define DDC7 7
101 
102 #define PORTC _SFR_IO8(0x08)
103 #define PORTC6 6
104 #define PORTC7 7
105 
106 #define PIND _SFR_IO8(0x09)
107 #define PIND0 0
108 #define PIND1 1
109 #define PIND2 2
110 #define PIND3 3
111 #define PIND4 4
112 #define PIND5 5
113 #define PIND6 6
114 #define PIND7 7
115 
116 #define DDRD _SFR_IO8(0x0A)
117 #define DDD0 0
118 #define DDD1 1
119 #define DDD2 2
120 #define DDD3 3
121 #define DDD4 4
122 #define DDD5 5
123 #define DDD6 6
124 #define DDD7 7
125 
126 #define PORTD _SFR_IO8(0x0B)
127 #define PORTD0 0
128 #define PORTD1 1
129 #define PORTD2 2
130 #define PORTD3 3
131 #define PORTD4 4
132 #define PORTD5 5
133 #define PORTD6 6
134 #define PORTD7 7
135 
136 #define PINE _SFR_IO8(0x0C)
137 #define PINE2 2
138 #define PINE6 6
139 
140 #define DDRE _SFR_IO8(0x0D)
141 #define DDE2 2
142 #define DDE6 6
143 
144 #define PORTE _SFR_IO8(0x0E)
145 #define PORTE2 2
146 #define PORTE6 6
147 
148 #define PINF _SFR_IO8(0x0F)
149 #define PINF0 0
150 #define PINF1 1
151 #define PINF4 4
152 #define PINF5 5
153 #define PINF6 6
154 #define PINF7 7
155 
156 #define DDRF _SFR_IO8(0x10)
157 #define DDF0 0
158 #define DDF1 1
159 #define DDF4 4
160 #define DDF5 5
161 #define DDF6 6
162 #define DDF7 7
163 
164 #define PORTF _SFR_IO8(0x11)
165 #define PORTF0 0
166 #define PORTF1 1
167 #define PORTF4 4
168 #define PORTF5 5
169 #define PORTF6 6
170 #define PORTF7 7
171 
172 #define TIFR0 _SFR_IO8(0x15)
173 #define TOV0 0
174 #define OCF0A 1
175 #define OCF0B 2
176 
177 #define TIFR1 _SFR_IO8(0x16)
178 #define TOV1 0
179 #define OCF1A 1
180 #define OCF1B 2
181 #define OCF1C 3
182 #define ICF1 5
183 
184 #define TIFR2 _SFR_IO8(0x17)
185 
186 #define TIFR3 _SFR_IO8(0x18)
187 #define TOV3 0
188 #define OCF3A 1
189 #define OCF3B 2
190 #define OCF3C 3
191 #define ICF3 5
192 
193 #define TIFR4 _SFR_IO8(0x19)
194 #define TOV4 2
195 #define OCF4B 5
196 #define OCF4A 6
197 #define OCF4D 7
198 
199 #define PCIFR _SFR_IO8(0x1B)
200 #define PCIF0 0
201 
202 #define EIFR _SFR_IO8(0x1C)
203 #define INTF0 0
204 #define INTF1 1
205 #define INTF2 2
206 #define INTF3 3
207 #define INTF4 4
208 #define INTF5 5
209 #define INTF6 6
210 #define INTF7 7
211 
212 #define EIMSK _SFR_IO8(0x1D)
213 #define INT0 0
214 #define INT1 1
215 #define INT2 2
216 #define INT3 3
217 #define INT4 4
218 #define INT5 5
219 #define INT6 6
220 #define INT7 7
221 
222 #define GPIOR0 _SFR_IO8(0x1E)
223 #define GPIOR00 0
224 #define GPIOR01 1
225 #define GPIOR02 2
226 #define GPIOR03 3
227 #define GPIOR04 4
228 #define GPIOR05 5
229 #define GPIOR06 6
230 #define GPIOR07 7
231 
232 #define EECR _SFR_IO8(0x1F)
233 #define EERE 0
234 #define EEPE 1
235 #define EEMPE 2
236 #define EERIE 3
237 #define EEPM0 4
238 #define EEPM1 5
239 
240 #define EEDR _SFR_IO8(0x20)
241 #define EEDR0 0
242 #define EEDR1 1
243 #define EEDR2 2
244 #define EEDR3 3
245 #define EEDR4 4
246 #define EEDR5 5
247 #define EEDR6 6
248 #define EEDR7 7
249 
250 #define EEAR _SFR_IO16(0x21)
251 
252 #define EEARL _SFR_IO8(0x21)
253 #define EEAR0 0
254 #define EEAR1 1
255 #define EEAR2 2
256 #define EEAR3 3
257 #define EEAR4 4
258 #define EEAR5 5
259 #define EEAR6 6
260 #define EEAR7 7
261 
262 #define EEARH _SFR_IO8(0x22)
263 #define EEAR8 0
264 #define EEAR9 1
265 #define EEAR10 2
266 #define EEAR11 3
267 
268 #define GTCCR _SFR_IO8(0x23)
269 #define PSRSYNC 0
270 #define TSM 7
271 
272 #define TCCR0A _SFR_IO8(0x24)
273 #define WGM00 0
274 #define WGM01 1
275 #define COM0B0 4
276 #define COM0B1 5
277 #define COM0A0 6
278 #define COM0A1 7
279 
280 #define TCCR0B _SFR_IO8(0x25)
281 #define CS00 0
282 #define CS01 1
283 #define CS02 2
284 #define WGM02 3
285 #define FOC0B 6
286 #define FOC0A 7
287 
288 #define TCNT0 _SFR_IO8(0x26)
289 #define TCNT0_0 0
290 #define TCNT0_1 1
291 #define TCNT0_2 2
292 #define TCNT0_3 3
293 #define TCNT0_4 4
294 #define TCNT0_5 5
295 #define TCNT0_6 6
296 #define TCNT0_7 7
297 
298 #define OCR0A _SFR_IO8(0x27)
299 #define OCROA_0 0
300 #define OCROA_1 1
301 #define OCROA_2 2
302 #define OCROA_3 3
303 #define OCROA_4 4
304 #define OCROA_5 5
305 #define OCROA_6 6
306 #define OCROA_7 7
307 
308 #define OCR0B _SFR_IO8(0x28)
309 #define OCR0B_0 0
310 #define OCR0B_1 1
311 #define OCR0B_2 2
312 #define OCR0B_3 3
313 #define OCR0B_4 4
314 #define OCR0B_5 5
315 #define OCR0B_6 6
316 #define OCR0B_7 7
317 
318 #define PLLCSR _SFR_IO8(0x29)
319 #define PLOCK 0
320 #define PLLE 1
321 #define PINDIV 4
322 
323 #define GPIOR1 _SFR_IO8(0x2A)
324 #define GPIOR10 0
325 #define GPIOR11 1
326 #define GPIOR12 2
327 #define GPIOR13 3
328 #define GPIOR14 4
329 #define GPIOR15 5
330 #define GPIOR16 6
331 #define GPIOR17 7
332 
333 #define GPIOR2 _SFR_IO8(0x2B)
334 #define GPIOR20 0
335 #define GPIOR21 1
336 #define GPIOR22 2
337 #define GPIOR23 3
338 #define GPIOR24 4
339 #define GPIOR25 5
340 #define GPIOR26 6
341 #define GPIOR27 7
342 
343 #define SPCR _SFR_IO8(0x2C)
344 #define SPR0 0
345 #define SPR1 1
346 #define CPHA 2
347 #define CPOL 3
348 #define MSTR 4
349 #define DORD 5
350 #define SPE 6
351 #define SPIE 7
352 
353 #define SPSR _SFR_IO8(0x2D)
354 #define SPI2X 0
355 #define WCOL 6
356 #define SPIF 7
357 
358 #define SPDR _SFR_IO8(0x2E)
359 #define SPDR0 0
360 #define SPDR1 1
361 #define SPDR2 2
362 #define SPDR3 3
363 #define SPDR4 4
364 #define SPDR5 5
365 #define SPDR6 6
366 #define SPDR7 7
367 
368 #define ACSR _SFR_IO8(0x30)
369 #define ACIS0 0
370 #define ACIS1 1
371 #define ACIC 2
372 #define ACIE 3
373 #define ACI 4
374 #define ACO 5
375 #define ACBG 6
376 #define ACD 7
377 
378 #define OCDR _SFR_IO8(0x31)
379 #define OCDR0 0
380 #define OCDR1 1
381 #define OCDR2 2
382 #define OCDR3 3
383 #define OCDR4 4
384 #define OCDR5 5
385 #define OCDR6 6
386 #define OCDR7 7
387 
388 #define PLLFRQ _SFR_IO8(0x32)
389 #define PDIV0 0
390 #define PDIV1 1
391 #define PDIV2 2
392 #define PDIV3 3
393 #define PLLTM0 4
394 #define PLLTM1 5
395 #define PLLUSB 6
396 #define PINMUX 7
397 
398 #define SMCR _SFR_IO8(0x33)
399 #define SE 0
400 #define SM0 1
401 #define SM1 2
402 #define SM2 3
403 
404 #define MCUSR _SFR_IO8(0x34)
405 #define PORF 0
406 #define EXTRF 1
407 #define BORF 2
408 #define WDRF 3
409 #define JTRF 4
410 
411 #define MCUCR _SFR_IO8(0x35)
412 #define IVCE 0
413 #define IVSEL 1
414 #define PUD 4
415 #define JTD 7
416 
417 #define SPMCSR _SFR_IO8(0x37)
418 #define SPMEN 0
419 #define PGERS 1
420 #define PGWRT 2
421 #define BLBSET 3
422 #define RWWSRE 4
423 #define SIGRD 5
424 #define RWWSB 6
425 #define SPMIE 7
426 
427 #define RAMPZ _SFR_IO8(0x3B)
428 #define RAMPZ0 0
429 
430 #define EIND _SFR_IO8(0x3C)
431 #define EIND0 0
432 
433 #define WDTCSR _SFR_MEM8(0x60)
434 #define WDP0 0
435 #define WDP1 1
436 #define WDP2 2
437 #define WDE 3
438 #define WDCE 4
439 #define WDP3 5
440 #define WDIE 6
441 #define WDIF 7
442 
443 #define CLKPR _SFR_MEM8(0x61)
444 #define CLKPS0 0
445 #define CLKPS1 1
446 #define CLKPS2 2
447 #define CLKPS3 3
448 #define CLKPCE 7
449 
450 #define PRR0 _SFR_MEM8(0x64)
451 #define PRADC 0
452 #define PRUSART0 1
453 #define PRSPI 2
454 #define PRTIM1 3
455 #define PRTIM0 5
456 #define PRTIM2 6
457 #define PRTWI 7
458 
459 #define PRR1 _SFR_MEM8(0x65)
460 #define PRUSART1 0
461 #define PRTIM3 3
462 #define PRUSB 7
463 
464 #define OSCCAL _SFR_MEM8(0x66)
465 #define CAL0 0
466 #define CAL1 1
467 #define CAL2 2
468 #define CAL3 3
469 #define CAL4 4
470 #define CAL5 5
471 #define CAL6 6
472 #define CAL7 7
473 
474 #define RCCTRL _SFR_MEM8(0x67)
475 #define RCFREQ 0
476 
477 #define PCICR _SFR_MEM8(0x68)
478 #define PCIE0 0
479 
480 #define EICRA _SFR_MEM8(0x69)
481 #define ISC00 0
482 #define ISC01 1
483 #define ISC10 2
484 #define ISC11 3
485 #define ISC20 4
486 #define ISC21 5
487 #define ISC30 6
488 #define ISC31 7
489 
490 #define EICRB _SFR_MEM8(0x6A)
491 #define ISC40 0
492 #define ISC41 1
493 #define ISC50 2
494 #define ISC51 3
495 #define ISC60 4
496 #define ISC61 5
497 #define ISC70 6
498 #define ISC71 7
499 
500 #define PCMSK0 _SFR_MEM8(0x6B)
501 #define PCINT0 0
502 #define PCINT1 1
503 #define PCINT2 2
504 #define PCINT3 3
505 #define PCINT4 4
506 #define PCINT5 5
507 #define PCINT6 6
508 #define PCINT7 7
509 
510 #define TIMSK0 _SFR_MEM8(0x6E)
511 #define TOIE0 0
512 #define OCIE0A 1
513 #define OCIE0B 2
514 
515 #define TIMSK1 _SFR_MEM8(0x6F)
516 #define TOIE1 0
517 #define OCIE1A 1
518 #define OCIE1B 2
519 #define OCIE1C 3
520 #define ICIE1 5
521 
522 #define TIMSK3 _SFR_MEM8(0x71)
523 #define TOIE3 0
524 #define OCIE3A 1
525 #define OCIE3B 2
526 #define OCIE3C 3
527 #define ICIE3 5
528 
529 #define TIMSK4 _SFR_MEM8(0x72)
530 #define TOIE4 2
531 #define OCIE4B 5
532 #define OCIE4A 6
533 #define OCIE4D 7
534 
535 #ifndef __ASSEMBLER__
536 #define ADC _SFR_MEM16(0x78)
537 #endif
538 #define ADCW _SFR_MEM16(0x78)
539 
540 #define ADCL _SFR_MEM8(0x78)
541 #define ADCL0 0
542 #define ADCL1 1
543 #define ADCL2 2
544 #define ADCL3 3
545 #define ADCL4 4
546 #define ADCL5 5
547 #define ADCL6 6
548 #define ADCL7 7
549 
550 #define ADCH _SFR_MEM8(0x79)
551 #define ADCH0 0
552 #define ADCH1 1
553 #define ADCH2 2
554 #define ADCH3 3
555 #define ADCH4 4
556 #define ADCH5 5
557 #define ADCH6 6
558 #define ADCH7 7
559 
560 #define ADCSRA _SFR_MEM8(0x7A)
561 #define ADPS0 0
562 #define ADPS1 1
563 #define ADPS2 2
564 #define ADIE 3
565 #define ADIF 4
566 #define ADATE 5
567 #define ADSC 6
568 #define ADEN 7
569 
570 #define ADCSRB _SFR_MEM8(0x7B)
571 #define ADTS0 0
572 #define ADTS1 1
573 #define ADTS2 2
574 #define ADTS3 4
575 #define MUX5 5
576 #define ACME 6
577 #define ADHSM 7
578 
579 #define ADMUX _SFR_MEM8(0x7C)
580 #define MUX0 0
581 #define MUX1 1
582 #define MUX2 2
583 #define MUX3 3
584 #define MUX4 4
585 #define ADLAR 5
586 #define REFS0 6
587 #define REFS1 7
588 
589 #define DIDR2 _SFR_MEM8(0x7D)
590 #define ADC8D 0
591 #define ADC9D 1
592 #define ADC10D 2
593 #define ADC11D 3
594 #define ADC12D 4
595 #define ADC13D 5
596 
597 #define DIDR0 _SFR_MEM8(0x7E)
598 #define ADC0D 0
599 #define ADC1D 1
600 #define ADC2D 2
601 #define ADC3D 3
602 #define ADC4D 4
603 #define ADC5D 5
604 #define ADC6D 6
605 #define ADC7D 7
606 
607 #define DIDR1 _SFR_MEM8(0x7F)
608 #define AIN0D 0
609 #define AIN1D 1
610 
611 #define TCCR1A _SFR_MEM8(0x80)
612 #define WGM10 0
613 #define WGM11 1
614 #define COM1C0 2
615 #define COM1C1 3
616 #define COM1B0 4
617 #define COM1B1 5
618 #define COM1A0 6
619 #define COM1A1 7
620 
621 #define TCCR1B _SFR_MEM8(0x81)
622 #define CS10 0
623 #define CS11 1
624 #define CS12 2
625 #define WGM12 3
626 #define WGM13 4
627 #define ICES1 6
628 #define ICNC1 7
629 
630 #define TCCR1C _SFR_MEM8(0x82)
631 #define FOC1C 5
632 #define FOC1B 6
633 #define FOC1A 7
634 
635 #define TCNT1 _SFR_MEM16(0x84)
636 
637 #define TCNT1L _SFR_MEM8(0x84)
638 #define TCNT1L0 0
639 #define TCNT1L1 1
640 #define TCNT1L2 2
641 #define TCNT1L3 3
642 #define TCNT1L4 4
643 #define TCNT1L5 5
644 #define TCNT1L6 6
645 #define TCNT1L7 7
646 
647 #define TCNT1H _SFR_MEM8(0x85)
648 #define TCNT1H0 0
649 #define TCNT1H1 1
650 #define TCNT1H2 2
651 #define TCNT1H3 3
652 #define TCNT1H4 4
653 #define TCNT1H5 5
654 #define TCNT1H6 6
655 #define TCNT1H7 7
656 
657 #define ICR1 _SFR_MEM16(0x86)
658 
659 #define ICR1L _SFR_MEM8(0x86)
660 #define ICR1L0 0
661 #define ICR1L1 1
662 #define ICR1L2 2
663 #define ICR1L3 3
664 #define ICR1L4 4
665 #define ICR1L5 5
666 #define ICR1L6 6
667 #define ICR1L7 7
668 
669 #define ICR1H _SFR_MEM8(0x87)
670 #define ICR1H0 0
671 #define ICR1H1 1
672 #define ICR1H2 2
673 #define ICR1H3 3
674 #define ICR1H4 4
675 #define ICR1H5 5
676 #define ICR1H6 6
677 #define ICR1H7 7
678 
679 #define OCR1A _SFR_MEM16(0x88)
680 
681 #define OCR1AL _SFR_MEM8(0x88)
682 #define OCR1AL0 0
683 #define OCR1AL1 1
684 #define OCR1AL2 2
685 #define OCR1AL3 3
686 #define OCR1AL4 4
687 #define OCR1AL5 5
688 #define OCR1AL6 6
689 #define OCR1AL7 7
690 
691 #define OCR1AH _SFR_MEM8(0x89)
692 #define OCR1AH0 0
693 #define OCR1AH1 1
694 #define OCR1AH2 2
695 #define OCR1AH3 3
696 #define OCR1AH4 4
697 #define OCR1AH5 5
698 #define OCR1AH6 6
699 #define OCR1AH7 7
700 
701 #define OCR1B _SFR_MEM16(0x8A)
702 
703 #define OCR1BL _SFR_MEM8(0x8A)
704 #define OCR1BL0 0
705 #define OCR1BL1 1
706 #define OCR1BL2 2
707 #define OCR1BL3 3
708 #define OCR1BL4 4
709 #define OCR1BL5 5
710 #define OCR1BL6 6
711 #define OCR1BL7 7
712 
713 #define OCR1BH _SFR_MEM8(0x8B)
714 #define OCR1BH0 0
715 #define OCR1BH1 1
716 #define OCR1BH2 2
717 #define OCR1BH3 3
718 #define OCR1BH4 4
719 #define OCR1BH5 5
720 #define OCR1BH6 6
721 #define OCR1BH7 7
722 
723 #define OCR1C _SFR_MEM16(0x8C)
724 
725 #define OCR1CL _SFR_MEM8(0x8C)
726 #define OCR1CL0 0
727 #define OCR1CL1 1
728 #define OCR1CL2 2
729 #define OCR1CL3 3
730 #define OCR1CL4 4
731 #define OCR1CL5 5
732 #define OCR1CL6 6
733 #define OCR1CL7 7
734 
735 #define OCR1CH _SFR_MEM8(0x8D)
736 #define OCR1CH0 0
737 #define OCR1CH1 1
738 #define OCR1CH2 2
739 #define OCR1CH3 3
740 #define OCR1CH4 4
741 #define OCR1CH5 5
742 #define OCR1CH6 6
743 #define OCR1CH7 7
744 
745 #define TCCR3A _SFR_MEM8(0x90)
746 #define WGM30 0
747 #define WGM31 1
748 #define COM3C0 2
749 #define COM3C1 3
750 #define COM3B0 4
751 #define COM3B1 5
752 #define COM3A0 6
753 #define COM3A1 7
754 
755 #define TCCR3B _SFR_MEM8(0x91)
756 #define CS30 0
757 #define CS31 1
758 #define CS32 2
759 #define WGM32 3
760 #define WGM33 4
761 #define ICES3 6
762 #define ICNC3 7
763 
764 #define TCCR3C _SFR_MEM8(0x92)
765 #define FOC3C 5
766 #define FOC3B 6
767 #define FOC3A 7
768 
769 #define TCNT3 _SFR_MEM16(0x94)
770 
771 #define TCNT3L _SFR_MEM8(0x94)
772 #define TCNT3L0 0
773 #define TCNT3L1 1
774 #define TCNT3L2 2
775 #define TCNT3L3 3
776 #define TCNT3L4 4
777 #define TCNT3L5 5
778 #define TCNT3L6 6
779 #define TCNT3L7 7
780 
781 #define TCNT3H _SFR_MEM8(0x95)
782 #define TCNT3H0 0
783 #define TCNT3H1 1
784 #define TCNT3H2 2
785 #define TCNT3H3 3
786 #define TCNT3H4 4
787 #define TCNT3H5 5
788 #define TCNT3H6 6
789 #define TCNT3H7 7
790 
791 #define ICR3 _SFR_MEM16(0x96)
792 
793 #define ICR3L _SFR_MEM8(0x96)
794 #define ICR3L0 0
795 #define ICR3L1 1
796 #define ICR3L2 2
797 #define ICR3L3 3
798 #define ICR3L4 4
799 #define ICR3L5 5
800 #define ICR3L6 6
801 #define ICR3L7 7
802 
803 #define ICR3H _SFR_MEM8(0x97)
804 #define ICR3H0 0
805 #define ICR3H1 1
806 #define ICR3H2 2
807 #define ICR3H3 3
808 #define ICR3H4 4
809 #define ICR3H5 5
810 #define ICR3H6 6
811 #define ICR3H7 7
812 
813 #define OCR3A _SFR_MEM16(0x98)
814 
815 #define OCR3AL _SFR_MEM8(0x98)
816 #define OCR3AL0 0
817 #define OCR3AL1 1
818 #define OCR3AL2 2
819 #define OCR3AL3 3
820 #define OCR3AL4 4
821 #define OCR3AL5 5
822 #define OCR3AL6 6
823 #define OCR3AL7 7
824 
825 #define OCR3AH _SFR_MEM8(0x99)
826 #define OCR3AH0 0
827 #define OCR3AH1 1
828 #define OCR3AH2 2
829 #define OCR3AH3 3
830 #define OCR3AH4 4
831 #define OCR3AH5 5
832 #define OCR3AH6 6
833 #define OCR3AH7 7
834 
835 #define OCR3B _SFR_MEM16(0x9A)
836 
837 #define OCR3BL _SFR_MEM8(0x9A)
838 #define OCR3BL0 0
839 #define OCR3BL1 1
840 #define OCR3BL2 2
841 #define OCR3BL3 3
842 #define OCR3BL4 4
843 #define OCR3BL5 5
844 #define OCR3BL6 6
845 #define OCR3BL7 7
846 
847 #define OCR3BH _SFR_MEM8(0x9B)
848 #define OCR3BH0 0
849 #define OCR3BH1 1
850 #define OCR3BH2 2
851 #define OCR3BH3 3
852 #define OCR3BH4 4
853 #define OCR3BH5 5
854 #define OCR3BH6 6
855 #define OCR3BH7 7
856 
857 #define OCR3C _SFR_MEM16(0x9C)
858 
859 #define OCR3CL _SFR_MEM8(0x9C)
860 #define OCR3CL0 0
861 #define OCR3CL1 1
862 #define OCR3CL2 2
863 #define OCR3CL3 3
864 #define OCR3CL4 4
865 #define OCR3CL5 5
866 #define OCR3CL6 6
867 #define OCR3CL7 7
868 
869 #define OCR3CH _SFR_MEM8(0x9D)
870 #define OCR3CH0 0
871 #define OCR3CH1 1
872 #define OCR3CH2 2
873 #define OCR3CH3 3
874 #define OCR3CH4 4
875 #define OCR3CH5 5
876 #define OCR3CH6 6
877 #define OCR3CH7 7
878 
879 #define TCNT4 _SFR_MEM8(0xBE)
880 #define TC40 0
881 #define TC41 1
882 #define TC42 2
883 #define TC43 3
884 #define TC44 4
885 #define TC45 5
886 #define TC46 6
887 #define TC47 7
888 
889 #define TC4H _SFR_MEM8(0xBF)
890 #define TC48 0
891 #define TC49 1
892 #define TC410 2
893 
894 #define TCCR4A _SFR_MEM8(0xC0)
895 #define PWM4B 0
896 #define PWM4A 1
897 #define FOC4B 2
898 #define FOC4A 3
899 #define COM4B0 4
900 #define COM4B1 5
901 #define COM4A0 6
902 #define COM4A1 7
903 
904 #define TCCR4B _SFR_MEM8(0xC1)
905 #define CS40 0
906 #define CS41 1
907 #define CS42 2
908 #define CS43 3
909 #define DTPS40 4
910 #define DTPS41 5
911 #define PSR4 6
912 #define PWM4X 7
913 
914 #define TCCR4C _SFR_MEM8(0xC2)
915 #define PWM4D 0
916 #define FOC4D 1
917 #define COM4D0 2
918 #define COM4D1 3
919 #define COM4B0S 4
920 #define COM4B1S 5
921 #define COM4A0S 6
922 #define COM4A1S 7
923 
924 #define TCCR4D _SFR_MEM8(0xC3)
925 #define WGM40 0
926 #define WGM41 1
927 #define FPF4 2
928 #define FPAC4 3
929 #define FPES4 4
930 #define FPNC4 5
931 #define FPEN4 6
932 #define FPIE4 7
933 
934 #define TCCR4E _SFR_MEM8(0xC4)
935 #define OC4OE0 0
936 #define OC4OE1 1
937 #define OC4OE2 2
938 #define OC4OE3 3
939 #define OC4OE4 4
940 #define OC4OE5 5
941 #define ENHC4 6
942 #define TLOCK4 7
943 
944 #define CLKSEL0 _SFR_MEM8(0xC5)
945 #define CLKS 0
946 #define EXTE 2
947 #define RCE 3
948 #define EXSUT0 4
949 #define EXSUT1 5
950 #define RCSUT0 6
951 #define RCSUT1 7
952 
953 #define CLKSEL1 _SFR_MEM8(0xC6)
954 #define EXCKSEL0 0
955 #define EXCKSEL1 1
956 #define EXCKSEL2 2
957 #define EXCKSEL3 3
958 #define RCCKSEL0 4
959 #define RCCKSEL1 5
960 #define RCCKSEL2 6
961 #define RCCKSEL3 7
962 
963 #define CLKSTA _SFR_MEM8(0xC7)
964 #define EXTON 0
965 #define RCON 1
966 
967 #define UCSR1A _SFR_MEM8(0xC8)
968 #define MPCM1 0
969 #define U2X1 1
970 #define UPE1 2
971 #define DOR1 3
972 #define FE1 4
973 #define UDRE1 5
974 #define TXC1 6
975 #define RXC1 7
976 
977 #define UCSR1B _SFR_MEM8(0xC9)
978 #define TXB81 0
979 #define RXB81 1
980 #define UCSZ12 2
981 #define TXEN1 3
982 #define RXEN1 4
983 #define UDRIE1 5
984 #define TXCIE1 6
985 #define RXCIE1 7
986 
987 #define UCSR1C _SFR_MEM8(0xCA)
988 #define UCPOL1 0
989 #define UCSZ10 1
990 #define UCSZ11 2
991 #define USBS1 3
992 #define UPM10 4
993 #define UPM11 5
994 #define UMSEL10 6
995 #define UMSEL11 7
996 
997 #define UBRR1 _SFR_MEM16(0xCC)
998 
999 #define UBRR1L _SFR_MEM8(0xCC)
1000 
1001 #define UBRR1H _SFR_MEM8(0xCD)
1002 
1003 #define UDR1 _SFR_MEM8(0xCE)
1004 #define UDR1_0 0
1005 #define UDR1_1 1
1006 #define UDR1_2 2
1007 #define UDR1_3 3
1008 #define UDR1_4 4
1009 #define UDR1_5 5
1010 #define UDR1_6 6
1011 #define UDR1_7 7
1012 
1013 #define OCR4A _SFR_MEM8(0xCF)
1014 #define OCR4A0 0
1015 #define OCR4A1 1
1016 #define OCR4A2 2
1017 #define OCR4A3 3
1018 #define OCR4A4 4
1019 #define OCR4A5 5
1020 #define OCR4A6 6
1021 #define OCR4A7 7
1022 
1023 #define OCR4B _SFR_MEM8(0xD0)
1024 #define OCR4B0 0
1025 #define OCR4B1 1
1026 #define OCR4B2 2
1027 #define OCR4B3 3
1028 #define OCR4B4 4
1029 #define OCR4B5 5
1030 #define OCR4B6 6
1031 #define OCR4B7 7
1032 
1033 #define OCR4C _SFR_MEM8(0xD1)
1034 #define OCR4C0 0
1035 #define OCR4C1 1
1036 #define OCR4C2 2
1037 #define OCR4C3 3
1038 #define OCR4C4 4
1039 #define OCR4C5 5
1040 #define OCR4C6 6
1041 #define OCR4C7 7
1042 
1043 #define OCR4D _SFR_MEM8(0xD2)
1044 #define OCR4D0 0
1045 #define OCR4D1 1
1046 #define OCR4D2 2
1047 #define OCR4D3 3
1048 #define OCR4D4 4
1049 #define OCR4D5 5
1050 #define OCR4D6 6
1051 #define OCR4D7 7
1052 
1053 #define DT4 _SFR_MEM8(0xD4)
1054 #define DT4L0 0
1055 #define DT4L1 1
1056 #define DT4L2 2
1057 #define DT4L3 3
1058 #define DT4L4 4
1059 #define DT4L5 5
1060 #define DT4L6 6
1061 #define DT4L7 7
1062 
1063 #define UHWCON _SFR_MEM8(0xD7)
1064 #define UVREGE 0
1065 
1066 #define USBCON _SFR_MEM8(0xD8)
1067 #define VBUSTE 0
1068 #define OTGPADE 4
1069 #define FRZCLK 5
1070 #define USBE 7
1071 
1072 #define USBSTA _SFR_MEM8(0xD9)
1073 #define VBUS 0
1074 #define SPEED 3
1075 
1076 #define USBINT _SFR_MEM8(0xDA)
1077 #define VBUSTI 0
1078 
1079 #define UDCON _SFR_MEM8(0xE0)
1080 #define DETACH 0
1081 #define RMWKUP 1
1082 #define LSM 2
1083 #define RSTCPU 3
1084 
1085 #define UDINT _SFR_MEM8(0xE1)
1086 #define SUSPI 0
1087 #define SOFI 2
1088 #define EORSTI 3
1089 #define WAKEUPI 4
1090 #define EORSMI 5
1091 #define UPRSMI 6
1092 
1093 #define UDIEN _SFR_MEM8(0xE2)
1094 #define SUSPE 0
1095 #define SOFE 2
1096 #define EORSTE 3
1097 #define WAKEUPE 4
1098 #define EORSME 5
1099 #define UPRSME 6
1100 
1101 #define UDADDR _SFR_MEM8(0xE3)
1102 #define UADD0 0
1103 #define UADD1 1
1104 #define UADD2 2
1105 #define UADD3 3
1106 #define UADD4 4
1107 #define UADD5 5
1108 #define UADD6 6
1109 #define ADDEN 7
1110 
1111 #define UDFNUM _SFR_MEM16(0xE4)
1112 
1113 #define UDFNUML _SFR_MEM8(0xE4)
1114 #define FNUM0 0
1115 #define FNUM1 1
1116 #define FNUM2 2
1117 #define FNUM3 3
1118 #define FNUM4 4
1119 #define FNUM5 5
1120 #define FNUM6 6
1121 #define FNUM7 7
1122 
1123 #define UDFNUMH _SFR_MEM8(0xE5)
1124 #define FNUM8 0
1125 #define FNUM9 1
1126 #define FNUM10 2
1127 
1128 #define UDMFN _SFR_MEM8(0xE6)
1129 #define FNCERR 4
1130 
1131 #define UEINTX _SFR_MEM8(0xE8)
1132 #define TXINI 0
1133 #define STALLEDI 1
1134 #define RXOUTI 2
1135 #define RXSTPI 3
1136 #define NAKOUTI 4
1137 #define RWAL 5
1138 #define NAKINI 6
1139 #define FIFOCON 7
1140 
1141 #define UENUM _SFR_MEM8(0xE9)
1142 #define UENUM_0 0
1143 #define UENUM_1 1
1144 #define UENUM_2 2
1145 
1146 #define UERST _SFR_MEM8(0xEA)
1147 #define EPRST0 0
1148 #define EPRST1 1
1149 #define EPRST2 2
1150 #define EPRST3 3
1151 #define EPRST4 4
1152 #define EPRST5 5
1153 #define EPRST6 6
1154 
1155 #define UECONX _SFR_MEM8(0xEB)
1156 #define EPEN 0
1157 #define RSTDT 3
1158 #define STALLRQC 4
1159 #define STALLRQ 5
1160 
1161 #define UECFG0X _SFR_MEM8(0xEC)
1162 #define EPDIR 0
1163 #define EPTYPE0 6
1164 #define EPTYPE1 7
1165 
1166 #define UECFG1X _SFR_MEM8(0xED)
1167 #define ALLOC 1
1168 #define EPBK0 2
1169 #define EPBK1 3
1170 #define EPSIZE0 4
1171 #define EPSIZE1 5
1172 #define EPSIZE2 6
1173 
1174 #define UESTA0X _SFR_MEM8(0xEE)
1175 #define NBUSYBK0 0
1176 #define NBUSYBK1 1
1177 #define DTSEQ0 2
1178 #define DTSEQ1 3
1179 #define UNDERFI 5
1180 #define OVERFI 6
1181 #define CFGOK 7
1182 
1183 #define UESTA1X _SFR_MEM8(0xEF)
1184 #define CURRBK0 0
1185 #define CURRBK1 1
1186 #define CTRLDIR 2
1187 
1188 #define UEIENX _SFR_MEM8(0xF0)
1189 #define TXINE 0
1190 #define STALLEDE 1
1191 #define RXOUTE 2
1192 #define RXSTPE 3
1193 #define NAKOUTE 4
1194 #define NAKINE 6
1195 #define FLERRE 7
1196 
1197 #define UEDATX _SFR_MEM8(0xF1)
1198 #define DAT0 0
1199 #define DAT1 1
1200 #define DAT2 2
1201 #define DAT3 3
1202 #define DAT4 4
1203 #define DAT5 5
1204 #define DAT6 6
1205 #define DAT7 7
1206 
1207 #define UEBCLX _SFR_MEM8(0xF2)
1208 #define BYCT0 0
1209 #define BYCT1 1
1210 #define BYCT2 2
1211 #define BYCT3 3
1212 #define BYCT4 4
1213 #define BYCT5 5
1214 #define BYCT6 6
1215 #define BYCT7 7
1216 
1217 #define UEBCHX _SFR_MEM8(0xF3)
1218 
1219 #define UEINT _SFR_MEM8(0xF4)
1220 #define EPINT0 0
1221 #define EPINT1 1
1222 #define EPINT2 2
1223 #define EPINT3 3
1224 #define EPINT4 4
1225 #define EPINT5 5
1226 #define EPINT6 6
1227 
1228 
1229 /* Interrupt vectors */
1230 /* Vector 0 is the reset vector */
1231 #define INT0_vect_num 1
1232 #define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */
1233 #define INT1_vect_num 2
1234 #define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */
1235 #define INT2_vect_num 3
1236 #define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */
1237 #define INT3_vect_num 4
1238 #define INT3_vect _VECTOR(4) /* External Interrupt Request 3 */
1239 #define INT6_vect_num 7
1240 #define INT6_vect _VECTOR(7) /* External Interrupt Request 6 */
1241 #define PCINT0_vect_num 9
1242 #define PCINT0_vect _VECTOR(9) /* Pin Change Interrupt Request 0 */
1243 #define USB_GEN_vect_num 10
1244 #define USB_GEN_vect _VECTOR(10) /* USB General Interrupt Request */
1245 #define USB_COM_vect_num 11
1246 #define USB_COM_vect _VECTOR(11) /* USB Endpoint/Pipe Interrupt Communication Request */
1247 #define WDT_vect_num 12
1248 #define WDT_vect _VECTOR(12) /* Watchdog Time-out Interrupt */
1249 #define TIMER1_CAPT_vect_num 16
1250 #define TIMER1_CAPT_vect _VECTOR(16) /* Timer/Counter1 Capture Event */
1251 #define TIMER1_COMPA_vect_num 17
1252 #define TIMER1_COMPA_vect _VECTOR(17) /* Timer/Counter1 Compare Match A */
1253 #define TIMER1_COMPB_vect_num 18
1254 #define TIMER1_COMPB_vect _VECTOR(18) /* Timer/Counter1 Compare Match B */
1255 #define TIMER1_COMPC_vect_num 19
1256 #define TIMER1_COMPC_vect _VECTOR(19) /* Timer/Counter1 Compare Match C */
1257 #define TIMER1_OVF_vect_num 20
1258 #define TIMER1_OVF_vect _VECTOR(20) /* Timer/Counter1 Overflow */
1259 #define TIMER0_COMPA_vect_num 21
1260 #define TIMER0_COMPA_vect _VECTOR(21) /* Timer/Counter0 Compare Match A */
1261 #define TIMER0_COMPB_vect_num 22
1262 #define TIMER0_COMPB_vect _VECTOR(22) /* Timer/Counter0 Compare Match B */
1263 #define TIMER0_OVF_vect_num 23
1264 #define TIMER0_OVF_vect _VECTOR(23) /* Timer/Counter0 Overflow */
1265 #define SPI_STC_vect_num 24
1266 #define SPI_STC_vect _VECTOR(24) /* SPI Serial Transfer Complete */
1267 #define USART1_RX_vect_num 25
1268 #define USART1_RX_vect _VECTOR(25) /* USART1, Rx Complete */
1269 #define USART1_UDRE_vect_num 26
1270 #define USART1_UDRE_vect _VECTOR(26) /* USART1 Data register Empty */
1271 #define USART1_TX_vect_num 27
1272 #define USART1_TX_vect _VECTOR(27) /* USART1, Tx Complete */
1273 #define ANALOG_COMP_vect_num 28
1274 #define ANALOG_COMP_vect _VECTOR(28) /* Analog Comparator */
1275 #define ADC_vect_num 29
1276 #define ADC_vect _VECTOR(29) /* ADC Conversion Complete */
1277 #define EE_READY_vect_num 30
1278 #define EE_READY_vect _VECTOR(30) /* EEPROM Ready */
1279 #define TIMER3_CAPT_vect_num 31
1280 #define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */
1281 #define TIMER3_COMPA_vect_num 32
1282 #define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */
1283 #define TIMER3_COMPB_vect_num 33
1284 #define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */
1285 #define TIMER3_COMPC_vect_num 34
1286 #define TIMER3_COMPC_vect _VECTOR(34) /* Timer/Counter3 Compare Match C */
1287 #define TIMER3_OVF_vect_num 35
1288 #define TIMER3_OVF_vect _VECTOR(35) /* Timer/Counter3 Overflow */
1289 #define TWI_vect_num 36
1290 #define TWI_vect _VECTOR(36) /* 2-wire Serial Interface */
1291 #define SPM_READY_vect_num 37
1292 #define SPM_READY_vect _VECTOR(37) /* Store Program Memory Read */
1293 #define TIMER4_COMPA_vect_num 38
1294 #define TIMER4_COMPA_vect _VECTOR(38) /* Timer/Counter4 Compare Match A */
1295 #define TIMER4_COMPB_vect_num 39
1296 #define TIMER4_COMPB_vect _VECTOR(39) /* Timer/Counter4 Compare Match B */
1297 #define TIMER4_COMPD_vect_num 40
1298 #define TIMER4_COMPD_vect _VECTOR(40) /* Timer/Counter4 Compare Match D */
1299 #define TIMER4_OVF_vect_num 41
1300 #define TIMER4_OVF_vect _VECTOR(41) /* Timer/Counter4 Overflow */
1301 #define TIMER4_FPF_vect_num 42
1302 #define TIMER4_FPF_vect _VECTOR(42) /* Timer/Counter4 Fault Protection Interrupt */
1303 
1304 #define _VECTOR_SIZE 4 /* Size of individual vector. */
1305 #define _VECTORS_SIZE (43 * _VECTOR_SIZE)
1306 
1307 
1308 /* Constants */
1309 #define SPM_PAGESIZE (128)
1310 #define RAMSTART (0x100)
1311 #define RAMSIZE (1280)
1312 #define RAMEND (RAMSTART + RAMSIZE - 1)
1313 #define XRAMSTART (NA)
1314 #define XRAMSIZE (0)
1315 #define XRAMEND (RAMEND)
1316 #define E2END (0x1FF)
1317 #define E2PAGESIZE (4)
1318 #define FLASHEND (0x3FFF)
1319 
1320 
1321 /* Fuses */
1322 #define FUSE_MEMORY_SIZE 3
1323 
1324 /* Low Fuse Byte */
1325 #define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */
1326 #define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */
1327 #define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */
1328 #define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */
1329 #define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */
1330 #define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */
1331 #define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator options */
1332 #define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */
1333 #define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1)
1334 
1335 /* High Fuse Byte */
1336 #define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */
1337 #define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */
1338 #define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */
1339 #define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */
1340 #define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */
1341 #define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */
1342 #define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */
1343 #define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */
1344 #define HFUSE_DEFAULT (FUSE_JTAGEN & FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)
1345 
1346 /* Extended Fuse Byte */
1347 #define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */
1348 #define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */
1349 #define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */
1350 #define FUSE_HWBE (unsigned char)~_BV(3) /* Hardware Boot Enable */
1351 #define EFUSE_DEFAULT (0xFF)
1352 
1353 
1354 /* Lock Bits */
1355 #define __LOCK_BITS_EXIST
1356 #define __BOOT_LOCK_BITS_0_EXIST
1357 #define __BOOT_LOCK_BITS_1_EXIST
1358 
1359 
1360 /* Signature */
1361 #define SIGNATURE_0 0x1E
1362 #define SIGNATURE_1 0x94
1363 #define SIGNATURE_2 0x88
1364 
1366 #endif /* _AVR_ATmega16U4_H_ */