source: rtems/cpukit/score/cpu/avr/avr/iom103.h @ a65f4b19

4.115
Last change on this file since a65f4b19 was a65f4b19, checked in by Mathew Kallada <matkallada@…>, on 12/29/12 at 00:12:12

score: Doxygen Clean Up Task #7

  • Property mode set to 100644
File size: 16.6 KB
Line 
1/**
2 * @file avr/iom103.h
3 *
4 * @brief Definitions for ATmega103
5 *
6 * This file should only be included from <avr/io.h>, never directly.
7 */
8
9/*
10 *  Copyright (c) 2002, Marek Michalkiewicz
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_IOM103_H_
42#define _AVR_IOM103_H_ 1
43
44#ifndef _AVR_IO_H_
45#  error "Include <avr/io.h> instead of this file."
46#endif
47
48#ifndef _AVR_IOXXX_H_
49#  define _AVR_IOXXX_H_ "iom103.h"
50#else
51#  error "Attempt to include more than one <avr/ioXXX.h> file."
52#endif
53
54/**
55 * @defgroup AvrDef_iom103 ATmega103 Definitions
56 *
57 * @ingroup avr
58 *
59 * @{
60 */
61
62/* I/O registers */
63
64/* Input Pins, Port F */
65#define PINF    _SFR_IO8(0x00)
66
67/* Input Pins, Port E */
68#define PINE    _SFR_IO8(0x01)
69
70/* Data Direction Register, Port E */
71#define DDRE    _SFR_IO8(0x02)
72
73/* Data Register, Port E */
74#define PORTE   _SFR_IO8(0x03)
75
76/* ADC Data Register */
77#ifndef __ASSEMBLER__
78#define ADC     _SFR_IO16(0x04)
79#endif
80#define ADCW    _SFR_IO16(0x04)
81#define ADCL    _SFR_IO8(0x04)
82#define ADCH    _SFR_IO8(0x05)
83
84/* ADC Control and status register */
85#define ADCSR   _SFR_IO8(0x06)
86
87/* ADC Multiplexer select */
88#define ADMUX   _SFR_IO8(0x07)
89
90/* Analog Comparator Control and Status Register */
91#define ACSR    _SFR_IO8(0x08)
92
93/* UART Baud Rate Register */
94#define UBRR    _SFR_IO8(0x09)
95
96/* UART Control Register */
97#define UCR     _SFR_IO8(0x0A)
98
99/* UART Status Register */
100#define USR     _SFR_IO8(0x0B)
101
102/* UART I/O Data Register */
103#define UDR     _SFR_IO8(0x0C)
104
105/* SPI Control Register */
106#define SPCR    _SFR_IO8(0x0D)
107
108/* SPI Status Register */
109#define SPSR    _SFR_IO8(0x0E)
110
111/* SPI I/O Data Register */
112#define SPDR    _SFR_IO8(0x0F)
113
114/* Input Pins, Port D */
115#define PIND    _SFR_IO8(0x10)
116
117/* Data Direction Register, Port D */
118#define DDRD    _SFR_IO8(0x11)
119
120/* Data Register, Port D */
121#define PORTD   _SFR_IO8(0x12)
122
123/* Data Register, Port C */
124#define PORTC   _SFR_IO8(0x15)
125
126/* Input Pins, Port B */
127#define PINB    _SFR_IO8(0x16)
128
129/* Data Direction Register, Port B */
130#define DDRB    _SFR_IO8(0x17)
131
132/* Data Register, Port B */
133#define PORTB   _SFR_IO8(0x18)
134
135/* Input Pins, Port A */
136#define PINA    _SFR_IO8(0x19)
137
138/* Data Direction Register, Port A */
139#define DDRA    _SFR_IO8(0x1A)
140
141/* Data Register, Port A */
142#define PORTA   _SFR_IO8(0x1B)
143
144/* EEPROM Control Register */
145#define EECR    _SFR_IO8(0x1C)
146
147/* EEPROM Data Register */
148#define EEDR    _SFR_IO8(0x1D)
149
150/* EEPROM Address Register */
151#define EEAR    _SFR_IO16(0x1E)
152#define EEARL   _SFR_IO8(0x1E)
153#define EEARH   _SFR_IO8(0x1F)
154
155/* Watchdog Timer Control Register */
156#define WDTCR   _SFR_IO8(0x21)
157
158/* Timer2 Output Compare Register */
159#define OCR2    _SFR_IO8(0x23)
160
161/* Timer/Counter 2 */
162#define TCNT2   _SFR_IO8(0x24)
163
164/* Timer/Counter 2 Control register */
165#define TCCR2   _SFR_IO8(0x25)
166
167/* T/C 1 Input Capture Register */
168#define ICR1    _SFR_IO16(0x26)
169#define ICR1L   _SFR_IO8(0x26)
170#define ICR1H   _SFR_IO8(0x27)
171
172/* Timer/Counter1 Output Compare Register B */
173#define OCR1B   _SFR_IO16(0x28)
174#define OCR1BL  _SFR_IO8(0x28)
175#define OCR1BH  _SFR_IO8(0x29)
176
177/* Timer/Counter1 Output Compare Register A */
178#define OCR1A   _SFR_IO16(0x2A)
179#define OCR1AL  _SFR_IO8(0x2A)
180#define OCR1AH  _SFR_IO8(0x2B)
181
182/* Timer/Counter 1 */
183#define TCNT1   _SFR_IO16(0x2C)
184#define TCNT1L  _SFR_IO8(0x2C)
185#define TCNT1H  _SFR_IO8(0x2D)
186
187/* Timer/Counter 1 Control and Status Register */
188#define TCCR1B  _SFR_IO8(0x2E)
189
190/* Timer/Counter 1 Control Register */
191#define TCCR1A  _SFR_IO8(0x2F)
192
193/* Timer/Counter 0 Asynchronous Control & Status Register */
194#define ASSR    _SFR_IO8(0x30)
195
196/* Output Compare Register 0 */
197#define OCR0    _SFR_IO8(0x31)
198
199/* Timer/Counter 0 */
200#define TCNT0   _SFR_IO8(0x32)
201
202/* Timer/Counter 0 Control Register */
203#define TCCR0   _SFR_IO8(0x33)
204
205/* MCU Status Register */
206#define MCUSR   _SFR_IO8(0x34)
207
208/* MCU general Control Register */
209#define MCUCR   _SFR_IO8(0x35)
210
211/* Timer/Counter Interrupt Flag Register */
212#define TIFR    _SFR_IO8(0x36)
213
214/* Timer/Counter Interrupt MaSK register */
215#define TIMSK   _SFR_IO8(0x37)
216
217/* Èxternal Interrupt Flag Register */
218#define EIFR    _SFR_IO8(0x38)
219
220/* External Interrupt MaSK register */
221#define EIMSK   _SFR_IO8(0x39)
222
223/* External Interrupt Control Register */
224#define EICR    _SFR_IO8(0x3A)
225
226/* RAM Page Z select register */
227#define RAMPZ   _SFR_IO8(0x3B)
228
229/* XDIV Divide control register */
230#define XDIV    _SFR_IO8(0x3C)
231
232/* 0x3D..0x3E SP */
233
234/* 0x3F SREG */
235
236/* Interrupt vectors */
237
238/* External Interrupt 0 */
239#define INT0_vect                       _VECTOR(1)
240#define SIG_INTERRUPT0                  _VECTOR(1)
241
242/* External Interrupt 1 */
243#define INT1_vect                       _VECTOR(2)
244#define SIG_INTERRUPT1                  _VECTOR(2)
245
246/* External Interrupt 2 */
247#define INT2_vect                       _VECTOR(3)
248#define SIG_INTERRUPT2                  _VECTOR(3)
249
250/* External Interrupt 3 */
251#define INT3_vect                       _VECTOR(4)
252#define SIG_INTERRUPT3                  _VECTOR(4)
253
254/* External Interrupt 4 */
255#define INT4_vect                       _VECTOR(5)
256#define SIG_INTERRUPT4                  _VECTOR(5)
257
258/* External Interrupt 5 */
259#define INT5_vect                       _VECTOR(6)
260#define SIG_INTERRUPT5                  _VECTOR(6)
261
262/* External Interrupt 6 */
263#define INT6_vect                       _VECTOR(7)
264#define SIG_INTERRUPT6                  _VECTOR(7)
265
266/* External Interrupt 7 */
267#define INT7_vect                       _VECTOR(8)
268#define SIG_INTERRUPT7                  _VECTOR(8)
269
270/* Timer/Counter2 Compare Match */
271#define TIMER2_COMP_vect                _VECTOR(9)
272#define SIG_OUTPUT_COMPARE2             _VECTOR(9)
273
274/* Timer/Counter2 Overflow */
275#define TIMER2_OVF_vect                 _VECTOR(10)
276#define SIG_OVERFLOW2                   _VECTOR(10)
277
278/* Timer/Counter1 Capture Event */
279#define TIMER1_CAPT_vect                _VECTOR(11)
280#define SIG_INPUT_CAPTURE1              _VECTOR(11)
281
282/* Timer/Counter1 Compare Match A */
283#define TIMER1_COMPA_vect               _VECTOR(12)
284#define SIG_OUTPUT_COMPARE1A            _VECTOR(12)
285
286/* Timer/Counter1 Compare Match B */
287#define TIMER1_COMPB_vect               _VECTOR(13)
288#define SIG_OUTPUT_COMPARE1B            _VECTOR(13)
289
290/* Timer/Counter1 Overflow */
291#define TIMER1_OVF_vect                 _VECTOR(14)
292#define SIG_OVERFLOW1                   _VECTOR(14)
293
294/* Timer/Counter0 Compare Match */
295#define TIMER0_COMP_vect                _VECTOR(15)
296#define SIG_OUTPUT_COMPARE0             _VECTOR(15)
297
298/* Timer/Counter0 Overflow */
299#define TIMER0_OVF_vect                 _VECTOR(16)
300#define SIG_OVERFLOW0                   _VECTOR(16)
301
302/* SPI Serial Transfer Complete */
303#define SPI_STC_vect                    _VECTOR(17)
304#define SIG_SPI                         _VECTOR(17)
305
306/* UART, Rx Complete */
307#define UART_RX_vect                    _VECTOR(18)
308#define SIG_UART_RECV                   _VECTOR(18)
309
310/* UART Data Register Empty */
311#define UART_UDRE_vect                  _VECTOR(19)
312#define SIG_UART_DATA                   _VECTOR(19)
313
314/* UART, Tx Complete */
315#define UART_TX_vect                    _VECTOR(20)
316#define SIG_UART_TRANS                  _VECTOR(20)
317
318/* ADC Conversion Complete */
319#define ADC_vect                        _VECTOR(21)
320#define SIG_ADC                         _VECTOR(21)
321
322/* EEPROM Ready */
323#define EE_READY_vect                   _VECTOR(22)
324#define SIG_EEPROM_READY                _VECTOR(22)
325
326/* Analog Comparator */
327#define ANALOG_COMP_vect                _VECTOR(23)
328#define SIG_COMPARATOR                  _VECTOR(23)
329
330#define _VECTORS_SIZE 96
331
332/*
333   The Register Bit names are represented by their bit number (0-7).
334*/
335
336/* XDIV Divide control register*/
337#define    XDIVEN       7
338#define    XDIV6        6
339#define    XDIV5        5
340#define    XDIV4        4
341#define    XDIV3        3
342#define    XDIV2        2
343#define    XDIV1        1
344#define    XDIV0        0
345
346/* RAM Page Z select register */
347#define     RAMPZ0      0
348
349/* External Interrupt Control Register */
350#define    ISC71        7
351#define    ISC70        6
352#define    ISC61        5
353#define    ISC60        4
354#define    ISC51        3
355#define    ISC50        2
356#define    ISC41        1
357#define    ISC40        0
358
359/* External Interrupt MaSK register */
360#define    INT7         7
361#define    INT6         6
362#define    INT5         5
363#define    INT4         4
364#define    INT3         3
365#define    INT2         2
366#define    INT1         1
367#define    INT0         0
368
369/* Èxternal Interrupt Flag Register */
370#define    INTF7        7
371#define    INTF6        6
372#define    INTF5        5
373#define    INTF4        4
374
375/* Timer/Counter Interrupt MaSK register */
376#define    OCIE2        7
377#define    TOIE2        6
378#define    TICIE1       5
379#define    OCIE1A       4
380#define    OCIE1B       3
381#define    TOIE1        2
382#define    OCIE0        1
383#define    TOIE0        0
384
385/* Timer/Counter Interrupt Flag Register */
386#define    OCF2         7
387#define    TOV2         6
388#define    ICF1         5
389#define    OCF1A        4
390#define    OCF1B        3
391#define    TOV1         2
392#define    OCF0         1
393#define    TOV0         0
394
395/* MCU general Control Register */
396#define    SRE          7
397#define    SRW          6
398#define    SE           5
399#define    SM1          4
400#define    SM0          3
401
402/* MCU Status Register */
403#define    EXTRF        1
404#define    PORF         0
405
406/* Timer/Counter 0 Control Register */
407#define    PWM0         6
408#define    COM01        5
409#define    COM00        4
410#define    CTC0         3
411#define    CS02         2
412#define    CS01         1
413#define    CS00         0
414
415/* Timer/Counter 0 Asynchronous Control & Status Register */
416#define    AS0          3
417#define    TCN0UB       2
418#define    OCR0UB       1
419#define    TCR0UB       0
420
421/* Timer/Counter 1 Control Register */
422#define    COM1A1       7
423#define    COM1A0       6
424#define    COM1B1       5
425#define    COM1B0       4
426#define    PWM11        1
427#define    PWM10        0
428
429/* Timer/Counter 1 Control and Status Register */
430#define    ICNC1        7
431#define    ICES1        6
432#define    CTC1         3
433#define    CS12         2
434#define    CS11         1
435#define    CS10         0
436
437/* Timer/Counter 2 Control register */
438#define    PWM2         6
439#define    COM21        5
440#define    COM20        4
441#define    CTC2         3
442#define    CS22         2
443#define    CS21         1
444#define    CS20         0
445
446/* Watchdog Timer Control Register */
447#define    WDTOE        4
448#define    WDE          3
449#define    WDP2         2
450#define    WDP1         1
451#define    WDP0         0
452
453/* Data Register, Port A */
454#define    PA7          7
455#define    PA6          6
456#define    PA5          5
457#define    PA4          4
458#define    PA3          3
459#define    PA2          2
460#define    PA1          1
461#define    PA0          0
462
463/* Data Direction Register, Port A */
464#define    DDA7         7
465#define    DDA6         6
466#define    DDA5         5
467#define    DDA4         4
468#define    DDA3         3
469#define    DDA2         2
470#define    DDA1         1
471#define    DDA0         0
472
473/* Input Pins, Port A */
474#define    PINA7        7
475#define    PINA6        6
476#define    PINA5        5
477#define    PINA4        4
478#define    PINA3        3
479#define    PINA2        2
480#define    PINA1        1
481#define    PINA0        0
482
483/* Data Register, Port B */
484#define    PB7          7
485#define    PB6          6
486#define    PB5          5
487#define    PB4          4
488#define    PB3          3
489#define    PB2          2
490#define    PB1          1
491#define    PB0          0
492
493/* Data Direction Register, Port B */
494#define    DDB7         7
495#define    DDB6         6
496#define    DDB5         5
497#define    DDB4         4
498#define    DDB3         3
499#define    DDB2         2
500#define    DDB1         1
501#define    DDB0         0
502
503/* Input Pins, Port B */
504#define    PINB7        7
505#define    PINB6        6
506#define    PINB5        5
507#define    PINB4        4
508#define    PINB3        3
509#define    PINB2        2
510#define    PINB1        1
511#define    PINB0        0
512
513/* Data Register, Port C */
514#define    PC7          7
515#define    PC6          6
516#define    PC5          5
517#define    PC4          4
518#define    PC3          3
519#define    PC2          2
520#define    PC1          1
521#define    PC0          0
522
523/* Data Register, Port D */
524#define    PD7          7
525#define    PD6          6
526#define    PD5          5
527#define    PD4          4
528#define    PD3          3
529#define    PD2          2
530#define    PD1          1
531#define    PD0          0
532
533/* Data Direction Register, Port D */
534#define    DDD7         7
535#define    DDD6         6
536#define    DDD5         5
537#define    DDD4         4
538#define    DDD3         3
539#define    DDD2         2
540#define    DDD1         1
541#define    DDD0         0
542
543/* Input Pins, Port D */
544#define    PIND7        7
545#define    PIND6        6
546#define    PIND5        5
547#define    PIND4        4
548#define    PIND3        3
549#define    PIND2        2
550#define    PIND1        1
551#define    PIND0        0
552
553/* Data Register, Port E */
554#define    PE7          7
555#define    PE6          6
556#define    PE5          5
557#define    PE4          4
558#define    PE3          3
559#define    PE2          2
560#define    PE1          1
561#define    PE0          0
562
563/* Data Direction Register, Port E */
564#define    DDE7         7
565#define    DDE6         6
566#define    DDE5         5
567#define    DDE4         4
568#define    DDE3         3
569#define    DDE2         2
570#define    DDE1         1
571#define    DDE0         0
572
573/* Input Pins, Port E */
574#define    PINE7        7
575#define    PINE6        6
576#define    PINE5        5
577#define    PINE4        4
578#define    PINE3        3
579#define    PINE2        2
580#define    PINE1        1
581#define    PINE0        0
582
583/* Input Pins, Port F */
584#define    PINF7        7
585#define    PINF6        6
586#define    PINF5        5
587#define    PINF4        4
588#define    PINF3        3
589#define    PINF2        2
590#define    PINF1        1
591#define    PINF0        0
592
593/* SPI Status Register */
594#define    SPIF         7
595#define    WCOL         6
596
597/* SPI Control Register */
598#define    SPIE         7
599#define    SPE          6
600#define    DORD         5
601#define    MSTR         4
602#define    CPOL         3
603#define    CPHA         2
604#define    SPR1         1
605#define    SPR0         0
606
607/* UART Status Register */
608#define    RXC          7
609#define    TXC          6
610#define    UDRE         5
611#define    FE           4
612#define    DOR          3
613
614/* UART Control Register */
615#define    RXCIE        7
616#define    TXCIE        6
617#define    UDRIE        5
618#define    RXEN         4
619#define    TXEN         3
620#define    CHR9         2
621#define    RXB8         1
622#define    TXB8         0
623
624/* Analog Comparator Control and Status Register */
625#define    ACD          7
626#define    ACO          5
627#define    ACI          4
628#define    ACIE         3
629#define    ACIC         2
630#define    ACIS1        1
631#define    ACIS0        0
632
633/* ADC Control and status register */
634#define    ADEN         7
635#define    ADSC         6
636#define    ADFR         5
637#define    ADIF         4
638#define    ADIE         3
639#define    ADPS2        2
640#define    ADPS1        1
641#define    ADPS0        0
642
643/* ADC Multiplexer select */
644#define    MUX2         2
645#define    MUX1         1
646#define    MUX0         0
647
648/* EEPROM Control Register */
649#define    EERIE        3
650#define    EEMWE        2
651#define    EEWE         1
652#define    EERE         0
653
654/* Constants */
655#define RAMEND     0x0FFF     /*Last On-Chip SRAM Location*/
656#define XRAMEND    0xFFFF
657#define E2END      0x0FFF
658#define E2PAGESIZE 0
659#define FLASHEND   0x1FFFF
660
661
662/* Fuses */
663#define FUSE_MEMORY_SIZE 1
664
665/* Low Fuse Byte */
666#define FUSE_CKSEL0 (unsigned char)~_BV(0)  /* Select Clock Source */
667#define FUSE_CKSEL1 (unsigned char)~_BV(1)  /* Select Clock Source */
668#define FUSE_CKSEL2 (unsigned char)~_BV(2)  /* Select Clock Source */
669#define FUSE_CKSEL3 (unsigned char)~_BV(3)  /* Select Clock Source */
670#define FUSE_SUT0 (unsigned char)~_BV(4)  /* Select start-up time */
671#define FUSE_SUT1 (unsigned char)~_BV(5)  /* Select start-up time */
672#define FUSE_BODEN (unsigned char)~_BV(6)  /* Brown out detector enable */
673#define FUSE_BODLEVEL (unsigned char)~_BV(7)  /* Brown out detector trigger level */
674#define LFUSE_DEFAULT (FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1)
675
676
677/* Lock Bits */
678#define __LOCK_BITS_EXIST
679
680
681/* Signature */
682#define SIGNATURE_0 0x1E
683#define SIGNATURE_1 0x97
684#define SIGNATURE_2 0x01
685
686/** @} */
687#endif /* _AVR_IOM103_H_ */
Note: See TracBrowser for help on using the repository browser.