summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/avr/avr/iocanxx.h
blob: 70c073a640386543b36d1b93f1f2a4694ae460f1 (plain) (blame)
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
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
/* Copyright (c) 2004,2005,2006 Colin O'Flynn <coflynn@newae.com>
   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.

   * Neither the name of the copyright holders nor the names of
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE. */


/* This file is based largely on:
   - iom128.h by Peter Jansen (bit defines)
   - iom169.h by Juergen Schilling <juergen.schilling@honeywell.com>
     (register addresses)
   - AT90CAN128 Datasheet (bit defines and register addresses)
   - Appnote on Mega128 --> AT90Can128 Conversion (for what registers I need
     to change) */

/* iocanxx.h - definitions for AT90CAN32, AT90CAN64 and AT90CAN128 */

#ifndef _AVR_IOCANXX_H_
#define _AVR_IOCANXX_H_ 1

/* This file should only be included from <avr/io.h>, never directly. */

#ifndef _AVR_IO_H_
#  error "Include <avr/io.h> instead of this file."
#endif

#ifndef _AVR_IOXXX_H_
#  define _AVR_IOXXX_H_ "iocanxx.h"
#else
#  error "Attempt to include more than one <avr/ioXXX.h> file."
#endif 

/* I/O registers and bit definitions. */

/* RegDef:  Port A */
#define PINA   _SFR_IO8(0x00)
#define DDRA   _SFR_IO8(0x01)
#define PORTA  _SFR_IO8(0x02)

/* RegDef:  Port B */
#define PINB   _SFR_IO8(0x03)
#define DDRB   _SFR_IO8(0x04)
#define PORTB  _SFR_IO8(0x05)

/* RegDef:  Port C */
#define PINC   _SFR_IO8(0x06)
#define DDRC   _SFR_IO8(0x07)
#define PORTC  _SFR_IO8(0x08)

/* RegDef:  Port D */
#define PIND   _SFR_IO8(0x09)
#define DDRD   _SFR_IO8(0x0A)
#define PORTD  _SFR_IO8(0x0B)

/* RegDef:  Port E */
#define PINE   _SFR_IO8(0x0C)
#define DDRE   _SFR_IO8(0x0D)
#define PORTE  _SFR_IO8(0x0E)

/* RegDef:  Port F */
#define PINF   _SFR_IO8(0x0F)
#define DDRF   _SFR_IO8(0x10)
#define PORTF  _SFR_IO8(0x11)

/* RegDef:  Port G */
#define PING   _SFR_IO8(0x12)
#define DDRG   _SFR_IO8(0x13)
#define PORTG  _SFR_IO8(0x14)

/* RegDef:  Timer/Counter 0 interrupt Flag Register */
#define TIFR0  _SFR_IO8(0x15)

/* RegDef:  Timer/Counter 1 interrupt Flag Register */
#define TIFR1  _SFR_IO8(0x16)

/* RegDef:  Timer/Counter 2 interrupt Flag Register */
#define TIFR2  _SFR_IO8(0x17)

/* RegDef:  Timer/Counter 3 interrupt Flag Register */
#define TIFR3  _SFR_IO8(0x18)

/* RegDef:  External Interrupt Flag Register */
#define EIFR   _SFR_IO8(0x1C)

/* RegDef:  External Interrupt Mask Register */
#define EIMSK  _SFR_IO8(0x1D)

/* RegDef:  General Purpose I/O Register 0 */
#define GPIOR0 _SFR_IO8(0x1E)

/* RegDef:  EEPROM Control Register */
#define EECR   _SFR_IO8(0x1F)

/* RegDef:  EEPROM Data Register */
#define EEDR   _SFR_IO8(0x20)

/* RegDef:  EEPROM Address Register */
#define EEAR   _SFR_IO16(0x21)
#define EEARL  _SFR_IO8(0x21)
#define EEARH  _SFR_IO8(0x22)

/* 6-char sequence denoting where to find the EEPROM registers in memory space.
   Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM
   subroutines.
   First two letters:  EECR address.
   Second two letters: EEDR address.
   Last two letters:   EEAR address.  */
#define __EEPROM_REG_LOCATIONS__ 1F2021

/* RegDef:  General Timer/Counter Control Register */
#define GTCCR  _SFR_IO8(0x23)

/* RegDef:  Timer/Counter Control Register A */
#define TCCR0A _SFR_IO8(0x24)

/* RegDef:  Timer/Counter Register */
#define TCNT0  _SFR_IO8(0x26)

/* RegDef:  Output Compare Register A */
#define OCR0A  _SFR_IO8(0x27)

/* RegDef:  General Purpose I/O Register 1 */
#define GPIOR1 _SFR_IO8(0x2A)

/* RegDef:  General Purpose I/O Register 2 */
#define GPIOR2 _SFR_IO8(0x2B)

/* RegDef:  SPI Control Register */
#define SPCR   _SFR_IO8(0x2C)

/* RegDef:  SPI Status Register */
#define SPSR   _SFR_IO8(0x2D)

/* RegDef:  SPI Data Register */
#define SPDR   _SFR_IO8(0x2E)

/* RegDef:  Analog Comperator Control and Status Register */
#define ACSR   _SFR_IO8(0x30)

/* RegDef:  On-chip Debug Register */
#define OCDR   _SFR_IO8(0x31)

/* RegDef:  Sleep Mode Control Register */
#define SMCR   _SFR_IO8(0x33)

/* RegDef:  MCU Status Register */
#define MCUSR  _SFR_IO8(0x34)

/* RegDef:  MCU Control Rgeister */
#define MCUCR  _SFR_IO8(0x35)

/* RegDef:  Store Program Memory Control and Status Register */
#define SPMCSR _SFR_IO8(0x37)

/* RegDef:  RAMPZ register. */
#define RAMPZ  _SFR_IO8(0x3B)

/* RegDef:  Watchdog Timer Control Register */
#define WDTCR  _SFR_MEM8(0x60)

/* RegDef:  Clock Prescale Register */
#define CLKPR  _SFR_MEM8(0x61)

/* RegDef:  Oscillator Calibration Register */
#define OSCCAL _SFR_MEM8(0x66)

/* RegDef:  External Interrupt Control Register A */
#define EICRA  _SFR_MEM8(0x69)

/* RegDef:  External Interrupt Control Register B */
#define EICRB  _SFR_MEM8(0x6A)

/* RegDef:  Timer/Counter 0 Interrupt Mask Register */
#define TIMSK0 _SFR_MEM8(0x6E)

/* RegDef:  Timer/Counter 1 Interrupt Mask Register */
#define TIMSK1 _SFR_MEM8(0x6F)

/* RegDef:  Timer/Counter 2 Interrupt Mask Register */
#define TIMSK2 _SFR_MEM8(0x70)

/* RegDef:  Timer/Counter 3 Interrupt Mask Register */
#define TIMSK3 _SFR_MEM8(0x71)

/* RegDef:  External Memory Control Register A */
#define XMCRA _SFR_MEM8(0x74)

/* RegDef:  External Memory Control Register A */
#define XMCRB _SFR_MEM8(0x75)

/* RegDef:  ADC Data Register */
#ifndef __ASSEMBLER__
#define ADC    _SFR_MEM16(0x78)
#endif
#define ADCW   _SFR_MEM16(0x78)
#define ADCL   _SFR_MEM8(0x78)
#define ADCH   _SFR_MEM8(0x79)

/* RegDef:  ADC Control and Status Register A */
#define ADCSRA _SFR_MEM8(0x7A)

/* RegDef:  ADC Control and Status Register B */
#define ADCSRB _SFR_MEM8(0x7B)

/* RegDef:  ADC Multiplex Selection Register */
#define ADMUX  _SFR_MEM8(0x7C)

/* RegDef:  Digital Input Disable Register 0 */
#define DIDR0  _SFR_MEM8(0x7E)

/* RegDef:  Digital Input Disable Register 1 */
#define DIDR1  _SFR_MEM8(0x7F)

/* RegDef:  Timer/Counter1 Control Register A */
#define TCCR1A _SFR_MEM8(0x80)

/* RegDef:  Timer/Counter1 Control Register B */
#define TCCR1B _SFR_MEM8(0x81)

/* RegDef:  Timer/Counter1 Control Register C */
#define TCCR1C _SFR_MEM8(0x82)

/* RegDef:  Timer/Counter1 Register */
#define TCNT1  _SFR_MEM16(0x84)
#define TCNT1L _SFR_MEM8(0x84)
#define TCNT1H _SFR_MEM8(0x85)

/* RegDef:  Timer/Counter1 Input Capture Register */
#define ICR1   _SFR_MEM16(0x86)
#define ICR1L  _SFR_MEM8(0x86)
#define ICR1H  _SFR_MEM8(0x87)

/* RegDef:  Timer/Counter1 Output Compare Register A */
#define OCR1A  _SFR_MEM16(0x88)
#define OCR1AL _SFR_MEM8(0x88)
#define OCR1AH _SFR_MEM8(0x89)

/* RegDef:  Timer/Counter1 Output Compare Register B */
#define OCR1B  _SFR_MEM16(0x8A)
#define OCR1BL _SFR_MEM8(0x8A)
#define OCR1BH _SFR_MEM8(0x8B)

/* RegDef:  Timer/Counter1 Output Compare Register C */
#define OCR1C  _SFR_MEM16(0x8C)
#define OCR1CL _SFR_MEM8(0x8C)
#define OCR1CH _SFR_MEM8(0x8D)

/* RegDef:  Timer/Counter3 Control Register A */
#define TCCR3A _SFR_MEM8(0x90)

/* RegDef:  Timer/Counter3 Control Register B */
#define TCCR3B _SFR_MEM8(0x91)

/* RegDef:  Timer/Counter3 Control Register C */
#define TCCR3C _SFR_MEM8(0x92)

/* RegDef:  Timer/Counter3 Register */
#define TCNT3  _SFR_MEM16(0x94)
#define TCNT3L _SFR_MEM8(0x94)
#define TCNT3H _SFR_MEM8(0x95)

/* RegDef:  Timer/Counter3 Input Capture Register */
#define ICR3   _SFR_MEM16(0x96)
#define ICR3L  _SFR_MEM8(0x96)
#define ICR3H  _SFR_MEM8(0x97)

/* RegDef:  Timer/Counter3 Output Compare Register A */
#define OCR3A  _SFR_MEM16(0x98)
#define OCR3AL _SFR_MEM8(0x98)
#define OCR3AH _SFR_MEM8(0x99)

/* RegDef:  Timer/Counter3 Output Compare Register B */
#define OCR3B  _SFR_MEM16(0x9A)
#define OCR3BL _SFR_MEM8(0x9A)
#define OCR3BH _SFR_MEM8(0x9B)

/* RegDef:  Timer/Counter3 Output Compare Register C */
#define OCR3C  _SFR_MEM16(0x9C)
#define OCR3CL _SFR_MEM8(0x9C)
#define OCR3CH _SFR_MEM8(0x9D)

/* RegDef:  Timer/Counter2 Control Register A */
#define TCCR2A _SFR_MEM8(0xB0)

/* RegDef:  Timer/Counter2 Register */
#define TCNT2  _SFR_MEM8(0xB2)

/* RegDef:  Timer/Counter2 Output Compare Register */
#define OCR2A  _SFR_MEM8(0xB3)

/* RegDef:  Asynchronous Status Register */
#define ASSR   _SFR_MEM8(0xB6)

/* RegDef:  TWI Bit Rate Register */
#define TWBR   _SFR_MEM8(0xB8)

/* RegDef:  TWI Status Register */
#define TWSR   _SFR_MEM8(0xB9)

/* RegDef:  TWI (Slave) Address Register */
#define TWAR   _SFR_MEM8(0xBA)

/* RegDef:  TWI Data Register */
#define TWDR   _SFR_MEM8(0xBB)

/* RegDef:  TWI Control Register */
#define TWCR   _SFR_MEM8(0xBC)

/* RegDef:  USART0 Control and Status Register A */
#define UCSR0A _SFR_MEM8(0xC0)

/* RegDef:  USART0 Control and Status Register B */
#define UCSR0B _SFR_MEM8(0xC1)

/* RegDef:  USART0 Control and Status Register C */
#define UCSR0C _SFR_MEM8(0xC2)

/* RegDef:  USART0 Baud Rate Register */
#define UBRR0  _SFR_MEM16(0xC4)
#define UBRR0L _SFR_MEM8(0xC4)
#define UBRR0H _SFR_MEM8(0xC5)

/* RegDef:  USART0 I/O Data Register */
#define UDR0   _SFR_MEM8(0xC6)

/* RegDef:  USART1 Control and Status Register A */
#define UCSR1A _SFR_MEM8(0xC8)

/* RegDef:  USART1 Control and Status Register B */
#define UCSR1B _SFR_MEM8(0xC9)

/* RegDef:  USART1 Control and Status Register C */
#define UCSR1C _SFR_MEM8(0xCA)

/* RegDef:  USART1 Baud Rate Register */
#define UBRR1  _SFR_MEM16(0xCC)
#define UBRR1L _SFR_MEM8(0xCC)
#define UBRR1H _SFR_MEM8(0xCD)

/* RegDef:  USART1 I/O Data Register */
#define UDR1   _SFR_MEM8(0xCE)

/* RegDef:  CAN General Control Register*/
#define CANGCON _SFR_MEM8(0xD8)

/* RegDef:  CAN General Status Register*/
#define CANGSTA _SFR_MEM8(0xD9)

/* RegDef:  CAN General Interrupt Register*/
#define CANGIT _SFR_MEM8(0xDA)

/* RegDef:  CAN General Interrupt Enable Register*/
#define CANGIE _SFR_MEM8(0xDB)

/* RegDef:  CAN Enable MOb Register*/
#define CANEN2 _SFR_MEM8(0xDC)

/* RegDef:  CAN Enable MOb Register*/
#define CANEN1 _SFR_MEM8(0xDD)

/* RegDef:  CAN Enable Interrupt MOb Register*/
#define CANIE2 _SFR_MEM8(0xDE)

/* RegDef:  CAN Enable Interrupt MOb Register*/
#define CANIE1 _SFR_MEM8(0xDF)

/* RegDef:  CAN Status Interrupt MOb Register*/
/*
 * WARNING: Do not apply the SIT8...SIT14 constants to bits in the CANSIT
 * register.
 */
#define CANSIT  _SFR_MEM16(0xE0)
#define CANSIT2 _SFR_MEM8(0xE0)
#define CANSIT1 _SFR_MEM8(0xE1)

/* RegDef:  CAN Bit Timing Register 1*/
#define CANBT1 _SFR_MEM8(0xE2)

/* RegDef:  CAN Bit Timing Register 2*/
#define CANBT2 _SFR_MEM8(0xE3)

/* RegDef:  CAN Bit Timing Register 3*/
#define CANBT3 _SFR_MEM8(0xE4)

/* RegDef:  CAN Timer Control Register*/
#define CANTCON _SFR_MEM8(0xE5)

/* RegDef:  CAN Timer Register*/
#define CANTIM _SFR_MEM16(0xE6)
#define CANTIML _SFR_MEM8(0xE6)
#define CANTIMH _SFR_MEM8(0xE7)

/* RegDef:  CAN TTC Timer Register*/
#define CANTTC _SFR_MEM16(0xE8)
#define CANTTCL _SFR_MEM8(0xE8)
#define CANTTCH _SFR_MEM8(0xE9)

/* RegDef:  CAN Transmitt Error Counter Register*/
#define CANTEC _SFR_MEM8(0xEA)

/* RegDef:  CAN Receive Error Counter Register*/
#define CANREC _SFR_MEM8(0xEB)

/* RegDef:  CAN Highest Priority MOb Register*/
#define CANHPMOB _SFR_MEM8(0xEC)

/* RegDef:  CAN Page MOb Register*/
#define CANPAGE _SFR_MEM8(0xED)

/* RegDef:  CAN MOb Status Register*/
#define CANSTMOB _SFR_MEM8(0xEE)

/* RegDef:  CAN MOb Control and DLC Register*/
#define CANCDMOB _SFR_MEM8(0xEF)

/* RegDef:  CAN Identifier Tag Registers*/
#define CANIDT  _SFR_MEM32(0xF0)

#define CANIDT4 _SFR_MEM8(0xF0)
#define CANIDT3 _SFR_MEM8(0xF1)
#define CANIDT2 _SFR_MEM8(0xF2)
#define CANIDT1 _SFR_MEM8(0xF3)

/* RegDef:  CAN Identifier Mask Registers */
#define CANIDM  _SFR_MEM32(0xF4)

#define CANIDM4 _SFR_MEM8(0xF4)
#define CANIDM3 _SFR_MEM8(0xF5)
#define CANIDM2 _SFR_MEM8(0xF6)
#define CANIDM1 _SFR_MEM8(0xF7)

/* RegDef:  CAN TTC Timer Register*/
#define CANSTM _SFR_MEM16(0xF8)
#define CANSTML _SFR_MEM8(0xF8)
#define CANSTMH _SFR_MEM8(0xF9)

/* RegDef:  CAN Message Register*/
#define CANMSG _SFR_MEM8(0xFA)

/* Interrupt vectors */

/* External Interrupt Request 0 */
#define INT0_vect			_VECTOR(1)
#define SIG_INTERRUPT0			_VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect			_VECTOR(2)
#define SIG_INTERRUPT1			_VECTOR(2)

/* External Interrupt Request 2 */
#define INT2_vect			_VECTOR(3)
#define SIG_INTERRUPT2			_VECTOR(3)

/* External Interrupt Request 3 */
#define INT3_vect			_VECTOR(4)
#define SIG_INTERRUPT3			_VECTOR(4)

/* External Interrupt Request 4 */
#define INT4_vect			_VECTOR(5)
#define SIG_INTERRUPT4			_VECTOR(5)

/* External Interrupt Request 5 */
#define INT5_vect			_VECTOR(6)
#define SIG_INTERRUPT5			_VECTOR(6)

/* External Interrupt Request 6 */
#define INT6_vect			_VECTOR(7)
#define SIG_INTERRUPT6			_VECTOR(7)

/* External Interrupt Request 7 */
#define INT7_vect			_VECTOR(8)
#define SIG_INTERRUPT7			_VECTOR(8)

/* Timer/Counter2 Compare Match */
#define TIMER2_COMP_vect		_VECTOR(9)
#define SIG_OUTPUT_COMPARE2		_VECTOR(9)

/* Timer/Counter2 Overflow */
#define TIMER2_OVF_vect			_VECTOR(10)
#define SIG_OVERFLOW2			_VECTOR(10)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT_vect		_VECTOR(11)
#define SIG_INPUT_CAPTURE1		_VECTOR(11)

/* Timer/Counter1 Compare Match A */
#define TIMER1_COMPA_vect		_VECTOR(12)
#define SIG_OUTPUT_COMPARE1A		_VECTOR(12)

/* Timer/Counter Compare Match B */
#define TIMER1_COMPB_vect		_VECTOR(13)
#define SIG_OUTPUT_COMPARE1B		_VECTOR(13)

/* Timer/Counter1 Compare Match C */
#define TIMER1_COMPC_vect		_VECTOR(14)
#define SIG_OUTPUT_COMPARE1C		_VECTOR(14)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect			_VECTOR(15)
#define SIG_OVERFLOW1			_VECTOR(15)

/* Timer/Counter0 Compare Match */
#define TIMER0_COMP_vect		_VECTOR(16)
#define SIG_OUTPUT_COMPARE0		_VECTOR(16)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF_vect			_VECTOR(17)
#define SIG_OVERFLOW0			_VECTOR(17)

/* CAN Transfer Complete or Error */
#define CANIT_vect			_VECTOR(18)
#define SIG_CAN_INTERRUPT1		_VECTOR(18)

/* CAN Timer Overrun */
#define OVRIT_vect			_VECTOR(19)
#define SIG_CAN_OVERFLOW1		_VECTOR(19)

/* SPI Serial Transfer Complete */
#define SPI_STC_vect			_VECTOR(20)
#define SIG_SPI				_VECTOR(20)

/* USART0, Rx Complete */
#define USART0_RX_vect			_VECTOR(21)
#define SIG_UART0_RECV			_VECTOR(21)
#define SIG_USART0_RECV			_VECTOR(21)

/* USART0 Data Register Empty */
#define USART0_UDRE_vect		_VECTOR(22)
#define SIG_UART0_DATA			_VECTOR(22)
#define SIG_USART0_DATA			_VECTOR(22)

/* USART0, Tx Complete */
#define USART0_TX_vect			_VECTOR(23)
#define SIG_UART0_TRANS			_VECTOR(23)
#define SIG_USART0_TRANS		_VECTOR(23)

/* Analog Comparator */
#define ANALOG_COMP_vect		_VECTOR(24)
#define SIG_COMPARATOR			_VECTOR(24)

/* ADC Conversion Complete */
#define ADC_vect			_VECTOR(25)
#define SIG_ADC				_VECTOR(25)

/* EEPROM Ready */
#define EE_READY_vect			_VECTOR(26)
#define SIG_EEPROM_READY		_VECTOR(26)

/* Timer/Counter3 Capture Event */
#define TIMER3_CAPT_vect		_VECTOR(27)
#define SIG_INPUT_CAPTURE3		_VECTOR(27)

/* Timer/Counter3 Compare Match A */
#define TIMER3_COMPA_vect		_VECTOR(28)
#define SIG_OUTPUT_COMPARE3A		_VECTOR(28)

/* Timer/Counter3 Compare Match B */
#define TIMER3_COMPB_vect		_VECTOR(29)
#define SIG_OUTPUT_COMPARE3B		_VECTOR(29)

/* Timer/Counter3 Compare Match C */
#define TIMER3_COMPC_vect		_VECTOR(30)
#define SIG_OUTPUT_COMPARE3C		_VECTOR(30)

/* Timer/Counter3 Overflow */
#define TIMER3_OVF_vect			_VECTOR(31)
#define SIG_OVERFLOW3			_VECTOR(31)

/* USART1, Rx Complete */
#define USART1_RX_vect			_VECTOR(32)
#define SIG_UART1_RECV			_VECTOR(32)
#define SIG_USART1_RECV			_VECTOR(32)

/* USART1, Data Register Empty */
#define USART1_UDRE_vect		_VECTOR(33)
#define SIG_UART1_DATA			_VECTOR(33)
#define SIG_USART1_DATA			_VECTOR(33)

/* USART1, Tx Complete */
#define USART1_TX_vect			_VECTOR(34)
#define SIG_UART1_TRANS			_VECTOR(34)
#define SIG_USART1_TRANS		_VECTOR(34)

/* 2-wire Serial Interface */
#define TWI_vect			_VECTOR(35)
#define SIG_2WIRE_SERIAL		_VECTOR(35)

/* Store Program Memory Read */
#define SPM_READY_vect			_VECTOR(36)
#define SIG_SPM_READY			_VECTOR(36)

#define _VECTORS_SIZE 148

/* The Register Bit names are represented by their bit number (0-7). */

/* Register Bits [ASSR]  */
/* Asynchronous Status Register */
#define    EXCLK      4
#define    AS2        3
#define    TCN2UB     2
#define    OCR2UB     1
#define    TCR2UB     0
/* End Register Bits */

/* Register Bits [TWCR] */
/* 2-wire Control Register - TWCR */
#define    TWINT        7
#define    TWEA         6
#define    TWSTA        5
#define    TWSTO        4
#define    TWWC         3
#define    TWEN         2
#define    TWIE         0
/* End Register Bits */

/* Register Bits [TWAR]  */
/* 2-wire Address Register - TWAR */
#define    TWA6         7
#define    TWA5         6
#define    TWA4         5
#define    TWA3         4
#define    TWA2         3
#define    TWA1         2
#define    TWA0         1
#define    TWGCE        0
/* End Register Bits */

/* Register Bits [TWSR]  */
/* 2-wire Status Register - TWSR */
#define    TWS7         7
#define    TWS6         6
#define    TWS5         5
#define    TWS4         4
#define    TWS3         3
#define    TWPS1        1
#define    TWPS0        0
/* End Register Bits */

/* Register Bits [XMCRB]  */
/* External Memory Control Register B - XMCRB */
#define    XMBK         7
#define    XMM2         2
#define    XMM1         1
#define    XMM0         0
/* End Register Bits */

/* Register Bits [XMCRA]  */
/* External Memory Control Register A - XMCRA */
#define    SRE         7
#define    SRL2        6
#define    SRL1        5
#define    SRL0        4
#define    SRW11       3
#define    SRW10       2
#define    SRW01       1
#define    SRW00       0
/* End Register Bits */

/* Register Bits [RAMPZ]  */
/* RAM Page Z select register - RAMPZ */
#define     RAMPZ0      0
/* End Register Bits */

/* Register Bits [EICRA]  */
/* External Interrupt Control Register A - EICRA */
#define    ISC31        7
#define    ISC30        6
#define    ISC21        5
#define    ISC20        4
#define    ISC11        3
#define    ISC10        2
#define    ISC01        1
#define    ISC00        0
/* End Register Bits */

/* Register Bits [EICRB]  */
/* External Interrupt Control Register B - EICRB */
#define    ISC71        7
#define    ISC70        6
#define    ISC61        5
#define    ISC60        4
#define    ISC51        3
#define    ISC50        2
#define    ISC41        1
#define    ISC40        0
/* End Register Bits */

/* Register Bits [SPMCSR]  */
/* Store Program Memory Control Register - SPMCSR, SPMCR */
#define    SPMIE        7
#define    RWWSB        6
#define    RWWSRE       4
#define    BLBSET       3
#define    PGWRT        2
#define    PGERS        1
#define    SPMEN        0
/* End Register Bits */

/* Register Bits [EIMSK]  */
/* External Interrupt MaSK register - EIMSK */
#define    INT7         7
#define    INT6         6
#define    INT5         5
#define    INT4         4
#define    INT3         3
#define    INT2         2
#define    INT1         1
#define    INT0         0
/* End Register Bits */

/* Register Bits [EIFR]  */
/* External Interrupt Flag Register - EIFR */
#define    INTF7        7
#define    INTF6        6
#define    INTF5        5
#define    INTF4        4
#define    INTF3        3
#define    INTF2        2
#define    INTF1        1
#define    INTF0        0
/* End Register Bits */

/* Register Bits [TCCR2]  */
/* Timer/Counter 2 Control Register - TCCR2 */
#define    FOC2A        7
#define    WGM20        6
#define    COM2A1       5
#define    COM2A0       4
#define    WGM21        3
#define    CS22         2
#define    CS21         1
#define    CS20         0
/* End Register Bits */

/* Register Bits [TCCR1A]  */
/* Timer/Counter 1 Control and Status Register A - TCCR1A */
#define    COM1A1       7
#define    COM1A0       6
#define    COM1B1       5
#define    COM1B0       4
#define    COM1C1       3
#define    COM1C0       2
#define    WGM11        1
#define    WGM10        0
/* End Register Bits */

/* Register Bits [TCCR3A]  */
/* Timer/Counter 3 Control and Status Register A - TCCR3A */
#define    COM3A1       7
#define    COM3A0       6
#define    COM3B1       5
#define    COM3B0       4
#define    COM3C1       3
#define    COM3C0       2
#define    WGM31        1
#define    WGM30        0
/* End Register Bits */

/* Register Bits [TCCR1B]  */
/* Timer/Counter 1 Control and Status Register B - TCCR1B */
#define    ICNC1        7
#define    ICES1        6
#define    WGM13        4
#define    WGM12        3
#define    CS12         2
#define    CS11         1
#define    CS10         0
/* End Register Bits */

/* Register Bits [TCCR3B]  */
/* Timer/Counter 3 Control and Status Register B - TCCR3B */
#define    ICNC3        7
#define    ICES3        6
#define    WGM33        4
#define    WGM32        3
#define    CS32         2
#define    CS31         1
#define    CS30         0
/* End Register Bits */

/* Register Bits [TCCR3C]  */
/* Timer/Counter 3 Control Register C - TCCR3C */
#define    FOC3A        7
#define    FOC3B        6
#define    FOC3C        5
/* End Register Bits */

/* Register Bits [TCCR1C]  */
/* Timer/Counter 1 Control Register C - TCCR1C */
#define    FOC1A        7
#define    FOC1B        6
#define    FOC1C        5
/* End Register Bits */

/* Register Bits [OCDR]  */
/* On-chip Debug Register - OCDR */
#define    IDRD         7
#define    OCDR7        7
#define    OCDR6        6
#define    OCDR5        5
#define    OCDR4        4
#define    OCDR3        3
#define    OCDR2        2
#define    OCDR1        1
#define    OCDR0        0
/* End Register Bits */

/* Register Bits [WDTCR]  */
/* Watchdog Timer Control Register - WDTCR */
#define    WDCE         4
#define    WDE          3
#define    WDP2         2
#define    WDP1         1
#define    WDP0         0
/* End Register Bits */

/* Register Bits [SPSR]  */
/* SPI Status Register - SPSR */
#define    SPIF         7
#define    WCOL         6
#define    SPI2X        0
/* End Register Bits */

/* Register Bits [SPCR]  */
/* SPI Control Register - SPCR */
#define    SPIE         7
#define    SPE          6
#define    DORD         5
#define    MSTR         4
#define    CPOL         3
#define    CPHA         2
#define    SPR1         1
#define    SPR0         0
/* End Register Bits */

/* Register Bits [UCSR1C]  */
/* USART1 Register C - UCSR1C */
#define    UMSEL1       6
#define    UPM11        5
#define    UPM10        4
#define    USBS1        3
#define    UCSZ11       2
#define    UCSZ10       1
#define    UCPOL1       0
/* End Register Bits */

/* Register Bits [UCSR0C]  */
/* USART0 Register C - UCSR0C */
#define    UMSEL0       6
#define    UPM01        5
#define    UPM00        4
#define    USBS0        3
#define    UCSZ01       2
#define    UCSZ00       1
#define    UCPOL0       0
/* End Register Bits */

/* Register Bits [UCSR1A]  */
/* USART1 Status Register A - UCSR1A */
#define    RXC1         7
#define    TXC1         6
#define    UDRE1        5
#define    FE1          4
#define    DOR1         3
#define    UPE1         2
#define    U2X1         1
#define    MPCM1        0
/* End Register Bits */

/* Register Bits [UCSR0A]  */
/* USART0 Status Register A - UCSR0A */
#define    RXC0         7
#define    TXC0         6
#define    UDRE0        5
#define    FE0          4
#define    DOR0         3
#define    UPE0         2
#define    U2X0         1
#define    MPCM0        0
/* End Register Bits */

/* Register Bits [UCSR1B]  */
/* USART1 Control Register B - UCSR1B */
#define    RXCIE1       7
#define    TXCIE1       6
#define    UDRIE1       5
#define    RXEN1        4
#define    TXEN1        3
#define    UCSZ12       2
#define    RXB81        1
#define    TXB81        0
/* End Register Bits */

/* Register Bits [UCSR0B]  */
/* USART0 Control Register B - UCSR0B */
#define    RXCIE0       7
#define    TXCIE0       6
#define    UDRIE0       5
#define    RXEN0        4
#define    TXEN0        3
#define    UCSZ02       2
#define    RXB80        1
#define    TXB80        0
/* End Register Bits */

/* Register Bits [ACSR]  */
/* Analog Comparator Control and Status Register - ACSR */
#define    ACD          7
#define    ACBG         6
#define    ACO          5
#define    ACI          4
#define    ACIE         3
#define    ACIC         2
#define    ACIS1        1
#define    ACIS0        0
/* End Register Bits */

/* Register Bits [ADCSRA]  */
/* ADC Control and status register - ADCSRA */
#define    ADEN         7
#define    ADSC         6
#define    ADATE        5
#define    ADIF         4
#define    ADIE         3
#define    ADPS2        2
#define    ADPS1        1
#define    ADPS0        0
/* End Register Bits */

/* 
   The ADHSM bit has been removed from all documentation, 
   as being not needed at all since the comparator has proven 
   to be fast enough even without feeding it more power.
*/

/* Register Bits [ADCSRB]  */
/* ADC Control and status register - ADCSRB */
#define    ACME         6
#define    ADTS2        2
#define    ADTS1        1
#define    ADTS0        0
/* End Register Bits */

/* Register Bits [ADMUX]  */
/* ADC Multiplexer select - ADMUX */
#define    REFS1        7
#define    REFS0        6
#define    ADLAR        5
#define    MUX4         4
#define    MUX3         3
#define    MUX2         2
#define    MUX1         1
#define    MUX0         0
/* End Register Bits */

/* Register Bits [DIDR0]  */
/* Digital Input Disable Register 0 */
#define    ADC7D        7
#define    ADC6D        6
#define    ADC5D        5
#define    ADC4D        4
#define    ADC3D        3
#define    ADC2D        2
#define    ADC1D        1
#define    ADC0D        0
/* End Register Bits */

/* Register Bits [DIDR1]  */
/* Digital Input Disable Register 1 */
#define    AIN1D        1
#define    AIN0D        0
/* End Register Bits */

/* Register Bits [PORTA]  */
/* Port A Data Register - PORTA */
#define    PA7          7
#define    PA6          6
#define    PA5          5
#define    PA4          4
#define    PA3          3
#define    PA2          2
#define    PA1          1
#define    PA0          0
/* End Register Bits */

/* Register Bits [DDRA]  */
/* Port A Data Direction Register - DDRA */
#define    DDA7         7
#define    DDA6         6
#define    DDA5         5
#define    DDA4         4
#define    DDA3         3
#define    DDA2         2
#define    DDA1         1
#define    DDA0         0
/* End Register Bits */

/* Register Bits [PINA]  */
/* Port A Input Pins - PINA */
#define    PINA7        7
#define    PINA6        6
#define    PINA5        5
#define    PINA4        4
#define    PINA3        3
#define    PINA2        2
#define    PINA1        1
#define    PINA0        0
/* End Register Bits */

/* Register Bits [PORTB]  */
/* Port B Data Register - PORTB */
#define    PB7          7
#define    PB6          6
#define    PB5          5
#define    PB4          4
#define    PB3          3
#define    PB2          2
#define    PB1          1
#define    PB0          0
/* End Register Bits */

/* Register Bits [DDRB]  */
/* Port B Data Direction Register - DDRB */
#define    DDB7         7
#define    DDB6         6
#define    DDB5         5
#define    DDB4         4
#define    DDB3         3
#define    DDB2         2
#define    DDB1         1
#define    DDB0         0
/* End Register Bits */

/* Register Bits [PINB]  */
/* Port B Input Pins - PINB */
#define    PINB7        7
#define    PINB6        6
#define    PINB5        5
#define    PINB4        4
#define    PINB3        3
#define    PINB2        2
#define    PINB1        1
#define    PINB0        0
/* End Register Bits */

/* Register Bits [PORTC]  */
/* Port C Data Register - PORTC */
#define    PC7          7
#define    PC6          6
#define    PC5          5
#define    PC4          4
#define    PC3          3
#define    PC2          2
#define    PC1          1
#define    PC0          0
/* End Register Bits */

/* Register Bits [DDRC]  */
/* Port C Data Direction Register - DDRC */
#define    DDC7         7
#define    DDC6         6
#define    DDC5         5
#define    DDC4         4
#define    DDC3         3
#define    DDC2         2
#define    DDC1         1
#define    DDC0         0
/* End Register Bits */

/* Register Bits [PINC]  */
/* Port C Input Pins - PINC */
#define    PINC7        7
#define    PINC6        6
#define    PINC5        5
#define    PINC4        4
#define    PINC3        3
#define    PINC2        2
#define    PINC1        1
#define    PINC0        0
/* End Register Bits */

/* Register Bits [PORTD]  */
/* Port D Data Register - PORTD */
#define    PD7          7
#define    PD6          6
#define    PD5          5
#define    PD4          4
#define    PD3          3
#define    PD2          2
#define    PD1          1
#define    PD0          0
/* End Register Bits */

/* Register Bits [DDRD]  */
/* Port D Data Direction Register - DDRD */
#define    DDD7         7
#define    DDD6         6
#define    DDD5         5
#define    DDD4         4
#define    DDD3         3
#define    DDD2         2
#define    DDD1         1
#define    DDD0         0
/* End Register Bits */

/* Register Bits [PIND]  */
/* Port D Input Pins - PIND */
#define    PIND7        7
#define    PIND6        6
#define    PIND5        5
#define    PIND4        4
#define    PIND3        3
#define    PIND2        2
#define    PIND1        1
#define    PIND0        0
/* End Register Bits */

/* Register Bits [PORTE]  */
/* Port E Data Register - PORTE */
#define    PE7          7
#define    PE6          6
#define    PE5          5
#define    PE4          4
#define    PE3          3
#define    PE2          2
#define    PE1          1
#define    PE0          0
/* End Register Bits */

/* Register Bits [DDRE]  */
/* Port E Data Direction Register - DDRE */
#define    DDE7         7
#define    DDE6         6
#define    DDE5         5
#define    DDE4         4
#define    DDE3         3
#define    DDE2         2
#define    DDE1         1
#define    DDE0         0
/* End Register Bits */

/* Register Bits [PINE]  */
/* Port E Input Pins - PINE */
#define    PINE7        7
#define    PINE6        6
#define    PINE5        5
#define    PINE4        4
#define    PINE3        3
#define    PINE2        2
#define    PINE1        1
#define    PINE0        0
/* End Register Bits */

/* Register Bits [PORTF]  */
/* Port F Data Register - PORTF */
#define    PF7          7
#define    PF6          6
#define    PF5          5
#define    PF4          4
#define    PF3          3
#define    PF2          2
#define    PF1          1
#define    PF0          0
/* End Register Bits */

/* Register Bits [DDRF]  */
/* Port F Data Direction Register - DDRF */
#define    DDF7         7
#define    DDF6         6
#define    DDF5         5
#define    DDF4         4
#define    DDF3         3
#define    DDF2         2
#define    DDF1         1
#define    DDF0         0
/* End Register Bits */

/* Register Bits [PINF]  */
/* Port F Input Pins - PINF */
#define    PINF7        7
#define    PINF6        6
#define    PINF5        5
#define    PINF4        4
#define    PINF3        3
#define    PINF2        2
#define    PINF1        1
#define    PINF0        0
/* End Register Bits */

/* Register Bits [PORTG]  */
/* Port G Data Register - PORTG */
#define    PG4          4
#define    PG3          3
#define    PG2          2
#define    PG1          1
#define    PG0          0
/* End Register Bits */

/* Register Bits [DDRG]  */
/* Port G Data Direction Register - DDRG */
#define    DDG4         4
#define    DDG3         3
#define    DDG2         2
#define    DDG1         1
#define    DDG0         0
/* End Register Bits */

/* Register Bits [PING]  */
/* Port G Input Pins - PING */
#define    PING4        4
#define    PING3        3
#define    PING2        2
#define    PING1        1
#define    PING0        0
/* End Register Bits */


/* Register Bits [TIFR0]  */
/* Timer/Counter 0 interrupt Flag Register */
#define    OCF0A        1
#define    TOV0         0
/* End Register Bits */

/* Register Bits [TIFR1]  */
/* Timer/Counter 1 interrupt Flag Register */
#define    ICF1       5
#define    OCF1C      3
#define    OCF1B      2
#define    OCF1A      1
#define    TOV1       0
/* End Register Bits */

/* Register Bits [TIFR2]  */
/* Timer/Counter 2 interrupt Flag Register */
#define    OCF2A      1
#define    TOV2       0
/* End Register Bits */

/* Register Bits [TIFR3]  */
/* Timer/Counter 3 interrupt Flag Register */
#define    ICF3       5
#define    OCF3C      3
#define    OCF3B      2
#define    OCF3A      1
#define    TOV3       0
/* End Register Bits */

/* Register Bits [GPIOR0]  */
/* General Purpose I/O Register 0 */
#define    GPIOR07     7
#define    GPIOR06     6
#define    GPIOR05     5
#define    GPIOR04     4
#define    GPIOR03     3
#define    GPIOR02     2
#define    GPIOR01     1
#define    GPIOR00     0
/* End Register Bits */

/* Register Bits [GPIOR1]  */
/* General Purpose I/O Register 1 */
#define    GPIOR17     7
#define    GPIOR16     6
#define    GPIOR15     5
#define    GPIOR14     4
#define    GPIOR13     3
#define    GPIOR12     2
#define    GPIOR11     1
#define    GPIOR10     0
/* End Register Bits */

/* Register Bits [GPIOR2]  */
/* General Purpose I/O Register 2 */
#define    GPIOR27     7
#define    GPIOR26     6
#define    GPIOR25     5
#define    GPIOR24     4
#define    GPIOR23     3
#define    GPIOR22     2
#define    GPIOR21     1
#define    GPIOR20     0
/* End Register Bits */

/* Register Bits [EECR]  */
/* EEPROM Control Register */
#define    EERIE       3
#define    EEMWE       2
#define    EEWE        1
#define    EERE        0
/* End Register Bits */

/* Register Bits [EEDR]  */
/* EEPROM Data Register */
#define    EEDR7     7
#define    EEDR6     6
#define    EEDR5     5
#define    EEDR4     4
#define    EEDR3     3
#define    EEDR2     2
#define    EEDR1     1
#define    EEDR0     0
/* End Register Bits */

/* Register Bits [EEARL]  */
/* EEPROM Address Register */
#define    EEAR7     7
#define    EEAR6     6
#define    EEAR5     5
#define    EEAR4     4
#define    EEAR3     3
#define    EEAR2     2
#define    EEAR1     1
#define    EEAR0     0
/* End Register Bits */

/* Register Bits [EEARH]  */
/* EEPROM Address Register */
#define    EEAR11    3
#define    EEAR10    2
#define    EEAR9     1
#define    EEAR8     0
/* End Register Bits */

/* Register Bits [GTCCR]  */
/* General Timer/Counter Control Register  */
#define    TSM      7
#define    PSR2     1
#define    PSR310   0
/* End Register Bits */

/* Register Bits [TCCR0A]  */
/* Timer/Counter Control Register A */
/* ALSO COVERED IN GENERIC SECTION */
#define    FOC0A    7
#define    WGM00    6
#define    COM0A1   5
#define    COM0A0   4
#define    WGM01    3
#define    CS02     2
#define    CS01     1
#define    CS00     0
/* End Register Bits */

/* Register Bits [OCR0A]  */
/* Output Compare Register A */
#define    OCR0A7     7
#define    OCR0A6     6
#define    OCR0A5     5
#define    OCR0A4     4
#define    OCR0A3     3
#define    OCR0A2     2
#define    OCR0A1     1
#define    OCR0A0     0
/* End Register Bits */


/* Register Bits [SPIDR]  */
/* SPI Data Register */
#define    SPD7     7
#define    SPD6     6
#define    SPD5     5
#define    SPD4     4
#define    SPD3     3
#define    SPD2     2
#define    SPD1     1
#define    SPD0     0
/* End Register Bits */

/* Register Bits [SMCR]  */
/* Sleep Mode Control Register */
#define    SM2     3
#define    SM1     2
#define    SM0     1
#define    SE      0
/* End Register Bits */

/* Register Bits [MCUSR]  */
/* MCU Status Register */
#define    JTRF    4
#define    WDRF    3
#define    BORF    2
#define    EXTRF   1
#define    PORF    0
/* End Register Bits */

/* Register Bits [MCUCR]  */
/* MCU Control Register */
#define    JTD     7
#define    PUD     4
#define    IVSEL   1
#define    IVCE    0
/* End Register Bits */

/* Register Bits [CLKPR]  */
/* Clock Prescale Register */
#define    CLKPCE     7
#define    CLKPS3     3
#define    CLKPS2     2
#define    CLKPS1     1
#define    CLKPS0     0
/* End Register Bits */

/* Register Bits [OSCCAL]  */
/* Oscillator Calibration Register */
#define    CAL6     6
#define    CAL5     5
#define    CAL4     4
#define    CAL3     3
#define    CAL2     2
#define    CAL1     1
#define    CAL0     0
/* End Register Bits */

/* Register Bits [TIMSK0]  */
/* Timer/Counter 0 interrupt mask Register */
#define    OCIE0A      1
#define    TOIE0       0
/* End Register Bits */

/* Register Bits [TIMSK1]  */
/* Timer/Counter 1 interrupt mask Register */
#define    ICIE1       5
#define    OCIE1C      3
#define    OCIE1B      2
#define    OCIE1A      1
#define    TOIE1       0
/* End Register Bits */

/* Register Bits [TIMSK2]  */
/* Timer/Counter 2 interrupt mask Register */
#define    OCIE2A      1
#define    TOIE2       0
/* End Register Bits */

/* Register Bits [TIMSK3]  */
/* Timer/Counter 3 interrupt mask Register */
#define    ICIE3       5
#define    OCIE3C      3
#define    OCIE3B      2
#define    OCIE3A      1
#define    TOIE3       0
/* End Register Bits */

//Begin CAN specific parts

/* Register Bits [CANGCON]  */
/* CAN General Control Register */
#define    ABRQ       7
#define    OVRQ       6
#define    TTC        5
#define    SYNTTC     4
#define    LISTEN     3
#define    TEST       2
#define    ENASTB     1
#define    SWRES      0
/* End Register Bits */

/* Register Bits [CANGSTA]  */
/* CAN General Status Register */
#define    OVFG       6
#define    OVRG       6
#define    TXBSY      4
#define    RXBSY      3
#define    ENFG       2
#define    BOFF       1
#define    ERRP       0
/* End Register Bits */

/* Register Bits [CANGIT]  */
/* CAN General Interrupt Register */
#define    CANIT      7
#define    BOFFIT     6
#define    OVRTIM     5
#define    BXOK       4
#define    SERG       3
#define    CERG       2
#define    FERG       1
#define    AERG       0
/* End Register Bits */

/* Register Bits [CANGIE]  */
/* CAN General Interrupt Enable */
#define    ENIT        7
#define    ENBOFF      6
#define    ENRX        5
#define    ENTX        4
#define    ENERR       3
#define    ENBX        2
#define    ENERG       1
#define    ENOVRT      0
/* End Register Bits */

/* Register Bits [CANEN2]  */
/* CAN Enable MOb Register */
#define    ENMOB7      7
#define    ENMOB6      6
#define    ENMOB5      5
#define    ENMOB4      4
#define    ENMOB3      3
#define    ENMOB2      2
#define    ENMOB1      1
#define    ENMOB0      0
/* End Register Bits */

/* Register Bits [CANEN1]  */
/* CAN Enable MOb Register */
#define    ENMOB14      6
#define    ENMOB13      5
#define    ENMOB12      4
#define    ENMOB11      3
#define    ENMOB10      2
#define    ENMOB9       1
#define    ENMOB8       0
/* End Register Bits */

/* Register Bits [CANIE2]  */
/* CAN Interrupt Enable MOb Register */
#define    IEMOB7      7
#define    IEMOB6      6
#define    IEMOB5      5
#define    IEMOB4      4
#define    IEMOB3      3
#define    IEMOB2      2
#define    IEMOB1      1
#define    IEMOB0      0
/* End Register Bits */

/* Register Bits [CANIE1]  */
/* CAN Interrupt Enable MOb Register */
#define    IEMOB14      6
#define    IEMOB13      5
#define    IEMOB12      4
#define    IEMOB11      3
#define    IEMOB10      2
#define    IEMOB9       1
#define    IEMOB8       0
/* End Register Bits */

/* Register Bits [CANSIT2]  */
/* CAN Status Interrupt MOb Register */
#define    SIT7      7
#define    SIT6      6
#define    SIT5      5
#define    SIT4      4
#define    SIT3      3
#define    SIT2      2
#define    SIT1      1
#define    SIT0      0
/* End Register Bits */

/* Register Bits [CANSIT1]  */
/* CAN Status Interrupt MOb Register */
#define    SIT14      6
#define    SIT13      5
#define    SIT12      4
#define    SIT11      3
#define    SIT10      2
#define    SIT9       1
#define    SIT8       0
/* End Register Bits */

/* Register Bits [CANBT1]  */
/* Bit Timing Register 1 */
#define    BRP5       6
#define    BRP4       5
#define    BRP3       4
#define    BRP2       3
#define    BRP1       2
#define    BRP0       1
/* End Register Bits */

/* Register Bits [CANBT2]  */
/* Bit Timing Register 2 */
#define    SJW1       6
#define    SJW0       5
#define    PRS2       3
#define    PRS1       2
#define    PRS0       1
/* End Register Bits */

/* Register Bits [CANBT3]  */
/* Bit Timing Register 3 */
#define    PHS22      6
#define    PHS21      5
#define    PHS20      4
#define    PHS12      3
#define    PHS11      2
#define    PHS10      1
#define    SMP        0
/* End Register Bits */

/* Register Bits [CANTCON]  */
/* CAN Timer Control Register */
#define    TPRSC7      7
#define    TPRSC6      6
#define    TPRSC5      5
#define    TPRSC4      4
#define    TPRSC3      3
#define    TPRSC2      2
#define    TPRSC1      1
#define    TPRSC0      0
/* End Register Bits */

/* Register Bits [CANTIML]  */
/* CAN Timer Register Low */
#define    CANTIM7      7
#define    CANTIM6      6
#define    CANTIM5      5
#define    CANTIM4      4
#define    CANTIM3      3
#define    CANTIM2      2
#define    CANTIM1      1
#define    CANTIM0      0
/* End Register Bits */

/* Register Bits [CANTIMH]  */
/* CAN Timer Register High */
#define    CANTIM15     7
#define    CANTIM14     6
#define    CANTIM13     5
#define    CANTIM12     4
#define    CANTIM11     3
#define    CANTIM10     2
#define    CANTIM9      1
#define    CANTIM8      0
/* End Register Bits */

/* Register Bits [CANTTCL]  */
/* CAN TTC Timer Register Low */
#define    TIMTTC7      7
#define    TIMTTC6      6
#define    TIMTTC5      5
#define    TIMTTC4      4
#define    TIMTTC3      3
#define    TIMTTC2      2
#define    TIMTTC1      1
#define    TIMTTC0      0
/* End Register Bits */

/* Register Bits [CANTTCH]  */
/* CAN TTC Timer Register High */
#define    TIMTTC15     7
#define    TIMTTC14     6
#define    TIMTTC13     5
#define    TIMTTC12     4
#define    TIMTTC11     3
#define    TIMTTC10     2
#define    TIMTTC9      1
#define    TIMTTC8      0
/* End Register Bits */

/* Register Bits [CANTEC]  */
/* CAN Transmitt Error Counter */
#define    TEC7      7
#define    TEC6      6
#define    TEC5      5
#define    TEC4      4
#define    TEC3      3
#define    TEC2      2
#define    TEC1      1
#define    TEC0      0
/* End Register Bits */

/* Register Bits [CANREC]  */
/* CAN Receive Error Counter */
#define    REC7      7
#define    REC6      6
#define    REC5      5
#define    REC4      4
#define    REC3      3
#define    REC2      2
#define    REC1      1
#define    REC0      0
/* End Register Bits */

/* Register Bits [CANHPMOB]  */
/* Highest Priority MOb */
#define    HPMOB3     7
#define    HPMOB2     6
#define    HPMOB1     5
#define    HPMOB0     4
#define    CGP3       3
#define    CGP2       2
#define    CGP1       1
#define    CGP0       0
/* End Register Bits */

/* Register Bits [CANPAGE]  */
/* CAN Page MOb Register */
#define    MOBNB3     7
#define    MOBNB2     6
#define    MOBNB1     5
#define    MOBNB0     4
#define    AINC       3
#define    INDX2      2
#define    INDX1      1
#define    INDX0      0
/* End Register Bits */

/* Register Bits [CANSTMOB]  */
/* CAN MOb Status Register */
#define    DLCW       7
#define    TXOK       6
#define    RXOK       5
#define    BERR       4
#define    SERR       3
#define    CERR       2
#define    FERR       1
#define    AERR       0
/* End Register Bits */

/* Register Bits [CANCDMOB]  */
/* CAN MOb Control and DLC Register */
#define    CONMOB1    7
#define    CONMOB0    6
#define    RPLV       5
#define    IDE        4
#define    DLC3       3
#define    DLC2       2
#define    DLC1       1
#define    DLC0       0
/* End Register Bits */

/* Register Bits [CANIDT4]  */
/* CAN Identifier Tag Register 4 */
#define    IDT4       7
#define    IDT3       6
#define    IDT2       5
#define    IDT1       4
#define    IDT0       3
#define    RTRTAG     2
#define    RB1TAG     1
#define    RB0TAG     0
/* End Register Bits */

/* Register Bits [CANIDT3]  */
/* CAN Identifier Tag Register 3 */
#define    IDT12      7
#define    IDT11      6
#define    IDT10      5
#define    IDT9       4
#define    IDT8       3
#define    IDT7       2
#define    IDT6       1
#define    IDT5       0
/* End Register Bits */

/* Register Bits [CANIDT2]  */
/* CAN Identifier Tag Register 2 */
#define    IDT20      7
#define    IDT19      6
#define    IDT18      5
#define    IDT17      4
#define    IDT16      3
#define    IDT15      2
#define    IDT14      1
#define    IDT13      0
/* End Register Bits */

/* Register Bits [CANIDT1]  */
/* CAN Identifier Tag Register 1 */
#define    IDT28      7
#define    IDT27      6
#define    IDT26      5
#define    IDT25      4
#define    IDT24      3
#define    IDT23      2
#define    IDT22      1
#define    IDT21      0
/* End Register Bits */

/* Register Bits [CANIDM4]  */
/* CAN Identifier Mask Register 4 */
#define    IDMSK4       7
#define    IDMSK3       6
#define    IDMSK2       5
#define    IDMSK1       4
#define    IDMSK0       3
#define    RTRMSK       2
#define    IDEMSK       0
/* End Register Bits */

/* Register Bits [CANIDM3]  */
/* CAN Identifier Mask Register 3 */
#define    IDMSK12      7
#define    IDMSK11      6
#define    IDMSK10      5
#define    IDMSK9       4
#define    IDMSK8       3
#define    IDMSK7       2
#define    IDMSK6       1
#define    IDMSK5       0
/* End Register Bits */

/* Register Bits [CANIDM2]  */
/* CAN Identifier Mask Register 2 */
#define    IDMSK20      7
#define    IDMSK19      6
#define    IDMSK18      5
#define    IDMSK17      4
#define    IDMSK16      3
#define    IDMSK15      2
#define    IDMSK14      1
#define    IDMSK13      0
/* End Register Bits */

/* Register Bits [CANIDM1]  */
/* CAN Identifier Mask Register 1 */
#define    IDMSK28      7
#define    IDMSK27      6
#define    IDMSK26      5
#define    IDMSK25      4
#define    IDMSK24      3
#define    IDMSK23      2
#define    IDMSK22      1
#define    IDMSK21      0
/* End Register Bits */

/* Register Bits [CANSTML]  */
/* CAN Timer Register of some sort, low*/
#define    TIMSTM7       7
#define    TIMSTM6       6
#define    TIMSTM5       5
#define    TIMSTM4       4
#define    TIMSTM3       3
#define    TIMSTM2       2
#define    TIMSTM1       1
#define    TIMSTM0       0
/* End Register Bits */

/* Register Bits [CANSTMH]  */
/* CAN Timer Register of some sort, high */
#define    TIMSTM15       7
#define    TIMSTM14       6
#define    TIMSTM13       5
#define    TIMSTM12       4
#define    TIMSTM11       3
#define    TIMSTM10       2
#define    TIMSTM9        1
#define    TIMSTM8        0
/* End Register Bits */

/* Register Bits [CANMSG]  */
/* CAN Message Register */
#define    MSG7           7
#define    MSG6           6
#define    MSG5           5
#define    MSG4           4
#define    MSG3           3
#define    MSG2           2
#define    MSG1           1
#define    MSG0           0
/* End Register Bits */

/* Begin Verbatim */

/* Timer/Counter Control Register (generic) */
#define    FOC          7
#define    WGM0         6
#define    COM1         5
#define    COM0         4
#define    WGM1         3
#define    CS2          2
#define    CS1          1
#define    CS0          0

/* Timer/Counter Control Register A (generic) */
#define    COMA1        7
#define    COMA0        6
#define    COMB1        5
#define    COMB0        4
#define    COMC1        3
#define    COMC0        2
#define    WGMA1        1
#define    WGMA0        0

/* Timer/Counter Control and Status Register B (generic) */
#define    ICNC         7
#define    ICES         6
#define    WGMB3        4
#define    WGMB2        3
#define    CSB2         2
#define    CSB1         1
#define    CSB0         0

/* Timer/Counter Control Register C (generic) */
#define    FOCA         7
#define    FOCB         6
#define    FOCC         5

/* Port Data Register (generic) */
#define    PORT7        7
#define    PORT6        6
#define    PORT5        5
#define    PORT4        4
#define    PORT3        3
#define    PORT2        2
#define    PORT1        1
#define    PORT0        0

/* Port Data Direction Register (generic) */
#define    DD7          7
#define    DD6          6
#define    DD5          5
#define    DD4          4
#define    DD3          3
#define    DD2          2
#define    DD1          1
#define    DD0          0

/* Port Input Pins (generic) */
#define    PIN7         7
#define    PIN6         6
#define    PIN5         5
#define    PIN4         4
#define    PIN3         3
#define    PIN2         2
#define    PIN1         1
#define    PIN0         0

/* USART Status Register A (generic) */
#define    RXC          7
#define    TXC          6
#define    UDRE         5
#define    FE           4
#define    DOR          3
#define    UPE          2
#define    U2X          1
#define    MPCM         0

/* USART Control Register B (generic) */
#define    RXCIE        7
#define    TXCIE        6
#define    UDRIE        5
#define    RXEN         4
#define    TXEN         3
#define    UCSZ         2
#define    UCSZ2        2       /* new name in datasheet (2467E-AVR-05/02) */
#define    RXB8         1
#define    TXB8         0

/* USART Register C (generic) */
#define    UMSEL        6
#define    UPM1         5
#define    UPM0         4
#define    USBS         3
#define    UCSZ1        2
#define    UCSZ0        1
#define    UCPOL        0

/* End Verbatim */

#endif  /* _AVR_IOCANXX_H_ */