RTEMS CPU Kit with SuperCore  4.11.3
iom103.h
Go to the documentation of this file.
1 
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 
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 
687 #endif /* _AVR_IOM103_H_ */