RTEMS CPU Kit with SuperCore  4.11.3
iom8515.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2002, Steinar Haugen
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_IOM8515_H_
42 #define _AVR_IOM8515_H_ 1
43 
51 #ifndef _AVR_IO_H_
52 # error "Include <avr/io.h> instead of this file."
53 #endif
54 
55 #ifndef _AVR_IOXXX_H_
56 # define _AVR_IOXXX_H_ "iom8515.h"
57 #else
58 # error "Attempt to include more than one <avr/ioXXX.h> file."
59 #endif
60 
61 /* I/O registers */
62 
63 /* Oscillator Calibration Register */
64 #define OSCCAL _SFR_IO8(0x04)
65 
66 /* Input Pins, Port E */
67 #define PINE _SFR_IO8(0x05)
68 
69 /* Data Direction Register, Port E */
70 #define DDRE _SFR_IO8(0x06)
71 
72 /* Data Register, Port E */
73 #define PORTE _SFR_IO8(0x07)
74 
75 /* Analog Comparator Control and Status Register */
76 #define ACSR _SFR_IO8(0x08)
77 
78 /* USART Baud Rate Register */
79 #define UBRRL _SFR_IO8(0x09)
80 
81 /* USART Control and Status Register B */
82 #define UCSRB _SFR_IO8(0x0A)
83 
84 /* USART Control and Status Register A */
85 #define UCSRA _SFR_IO8(0x0B)
86 
87 /* USART I/O Data Register */
88 #define UDR _SFR_IO8(0x0C)
89 
90 /* SPI Control Register */
91 #define SPCR _SFR_IO8(0x0D)
92 
93 /* SPI Status Register */
94 #define SPSR _SFR_IO8(0x0E)
95 
96 /* SPI I/O Data Register */
97 #define SPDR _SFR_IO8(0x0F)
98 
99 /* Input Pins, Port D */
100 #define PIND _SFR_IO8(0x10)
101 
102 /* Data Direction Register, Port D */
103 #define DDRD _SFR_IO8(0x11)
104 
105 /* Data Register, Port D */
106 #define PORTD _SFR_IO8(0x12)
107 
108 /* Input Pins, Port C */
109 #define PINC _SFR_IO8(0x13)
110 
111 /* Data Direction Register, Port C */
112 #define DDRC _SFR_IO8(0x14)
113 
114 /* Data Register, Port C */
115 #define PORTC _SFR_IO8(0x15)
116 
117 /* Input Pins, Port B */
118 #define PINB _SFR_IO8(0x16)
119 
120 /* Data Direction Register, Port B */
121 #define DDRB _SFR_IO8(0x17)
122 
123 /* Data Register, Port B */
124 #define PORTB _SFR_IO8(0x18)
125 
126 /* Input Pins, Port A */
127 #define PINA _SFR_IO8(0x19)
128 
129 /* Data Direction Register, Port A */
130 #define DDRA _SFR_IO8(0x1A)
131 
132 /* Data Register, Port A */
133 #define PORTA _SFR_IO8(0x1B)
134 
135 /* EEPROM Control Register */
136 #define EECR _SFR_IO8(0x1C)
137 
138 /* EEPROM Data Register */
139 #define EEDR _SFR_IO8(0x1D)
140 
141 /* EEPROM Address Register */
142 #define EEAR _SFR_IO16(0x1E)
143 #define EEARL _SFR_IO8(0x1E)
144 #define EEARH _SFR_IO8(0x1F)
145 
146 /* USART Baud Rate Register HI */
147 /* USART Control and Status Register C */
148 #define UBRRH _SFR_IO8(0x20)
149 #define UCSRC UBRRH
150 
151 /* Watchdog Timer Control Register */
152 #define WDTCR _SFR_IO8(0x21)
153 
154 /* T/C 1 Input Capture Register */
155 #define ICR1 _SFR_IO16(0x24)
156 #define ICR1L _SFR_IO8(0x24)
157 #define ICR1H _SFR_IO8(0x25)
158 
159 /* Timer/Counter1 Output Compare Register B */
160 #define OCR1B _SFR_IO16(0x28)
161 #define OCR1BL _SFR_IO8(0x28)
162 #define OCR1BH _SFR_IO8(0x29)
163 
164 /* Timer/Counter1 Output Compare Register A */
165 #define OCR1A _SFR_IO16(0x2A)
166 #define OCR1AL _SFR_IO8(0x2A)
167 #define OCR1AH _SFR_IO8(0x2B)
168 
169 /* Timer/Counter 1 */
170 #define TCNT1 _SFR_IO16(0x2C)
171 #define TCNT1L _SFR_IO8(0x2C)
172 #define TCNT1H _SFR_IO8(0x2D)
173 
174 /* Timer/Counter 1 Control and Status Register */
175 #define TCCR1B _SFR_IO8(0x2E)
176 
177 /* Timer/Counter 1 Control Register */
178 #define TCCR1A _SFR_IO8(0x2F)
179 
180 /* Special Function IO Register */
181 #define SFIOR _SFR_IO8(0x30)
182 
183 /* Timer/Counter 0 Output Compare Register */
184 #define OCR0 _SFR_IO8(0x31)
185 
186 /* Timer/Counter 0 */
187 #define TCNT0 _SFR_IO8(0x32)
188 
189 /* Timer/Counter 0 Control Register */
190 #define TCCR0 _SFR_IO8(0x33)
191 
192 /* MCU Control and Status Register */
193 #define MCUCSR _SFR_IO8(0x34)
194 
195 /* MCU Control Register */
196 #define MCUCR _SFR_IO8(0x35)
197 
198 /* Extended MCU Control Register */
199 #define EMCUCR _SFR_IO8(0x36)
200 
201 /* Store Program Memory Control Register */
202 #define SPMCR _SFR_IO8(0x37)
203 
204 /* Timer/Counter Interrupt Flag register */
205 #define TIFR _SFR_IO8(0x38)
206 
207 /* Timer/Counter Interrupt MaSK register */
208 #define TIMSK _SFR_IO8(0x39)
209 
210 /* General Interrupt Flag Register */
211 #define GIFR _SFR_IO8(0x3A)
212 
213 /* General Interrupt Control Register */
214 #define GICR _SFR_IO8(0x3B)
215 
216 /* 0x3D..0x3E SP */
217 
218 /* 0x3F SREG */
219 
220 /* Interrupt vectors */
221 
222 /* External Interrupt Request 0 */
223 #define INT0_vect _VECTOR(1)
224 #define SIG_INTERRUPT0 _VECTOR(1)
225 
226 /* External Interrupt Request 1 */
227 #define INT1_vect _VECTOR(2)
228 #define SIG_INTERRUPT1 _VECTOR(2)
229 
230 /* Timer/Counter1 Capture Event */
231 #define TIMER1_CAPT_vect _VECTOR(3)
232 #define SIG_INPUT_CAPTURE1 _VECTOR(3)
233 
234 /* Timer/Counter1 Compare Match A */
235 #define TIMER1_COMPA_vect _VECTOR(4)
236 #define SIG_OUTPUT_COMPARE1A _VECTOR(4)
237 
238 /* Timer/Counter1 Compare MatchB */
239 #define TIMER1_COMPB_vect _VECTOR(5)
240 #define SIG_OUTPUT_COMPARE1B _VECTOR(5)
241 
242 /* Timer/Counter1 Overflow */
243 #define TIMER1_OVF_vect _VECTOR(6)
244 #define SIG_OVERFLOW1 _VECTOR(6)
245 
246 /* Timer/Counter0 Overflow */
247 #define TIMER0_OVF_vect _VECTOR(7)
248 #define SIG_OVERFLOW0 _VECTOR(7)
249 
250 /* Serial Transfer Complete */
251 #define SPI_STC_vect _VECTOR(8)
252 #define SIG_SPI _VECTOR(8)
253 
254 /* UART, Rx Complete */
255 #define USART_RX_vect _VECTOR(9)
256 #define UART_RX_vect _VECTOR(9) /* For compatability only */
257 #define SIG_UART_RECV _VECTOR(9) /* For compatability only */
258 
259 /* UART Data Register Empty */
260 #define USART_UDRE_vect _VECTOR(10)
261 #define UART_UDRE_vect _VECTOR(10) /* For compatability only */
262 #define SIG_UART_DATA _VECTOR(10) /* For compatability only */
263 
264 /* UART, Tx Complete */
265 #define USART_TX_vect _VECTOR(11)
266 #define UART_TX_vect _VECTOR(11) /* For compatability only */
267 #define SIG_UART_TRANS _VECTOR(11) /* For compatability only */
268 
269 /* Analog Comparator */
270 #define ANA_COMP_vect _VECTOR(12)
271 #define SIG_COMPARATOR _VECTOR(12)
272 
273 /* External Interrupt Request 2 */
274 #define INT2_vect _VECTOR(13)
275 #define SIG_INTERRUPT2 _VECTOR(13)
276 
277 /* Timer 0 Compare Match */
278 #define TIMER0_COMP_vect _VECTOR(14)
279 #define SIG_OUTPUT_COMPARE0 _VECTOR(14)
280 
281 /* EEPROM Ready */
282 #define EE_RDY_vect _VECTOR(15)
283 #define SIG_EEPROM_READY _VECTOR(15)
284 
285 /* Store Program Memory Ready */
286 #define SPM_RDY_vect _VECTOR(16)
287 #define SIG_SPM_READY _VECTOR(16)
288 
289 #define _VECTORS_SIZE 34
290 
291 /*
292  The Register Bit names are represented by their bit number (0-7).
293 */
294 
295 /* General Interrupt Control Register */
296 #define INT1 7
297 #define INT0 6
298 #define INT2 5
299 #define IVSEL 1
300 #define IVCE 0
301 
302 /* General Interrupt Flag Register */
303 #define INTF1 7
304 #define INTF0 6
305 #define INTF2 5
306 
307 /* Timer/Counter Interrupt MaSK Register */
308 #define TOIE1 7
309 #define OCIE1A 6
310 #define OCIE1B 5
311 #define TICIE1 3
312 #define TOIE0 1
313 #define OCIE0 0
314 
315 /* Timer/Counter Interrupt Flag Register */
316 #define TOV1 7
317 #define OCF1A 6
318 #define OCF1B 5
319 #define ICF1 3
320 #define TOV0 1
321 #define OCF0 0
322 
323 /* Store Program Memory Control Register */
324 #define SPMIE 7
325 #define RWWSB 6
326 #define RWWSRE 4
327 #define BLBSET 3
328 #define PGWRT 2
329 #define PGERS 1
330 #define SPMEN 0
331 
332 /* Extended MCU Control Register */
333 #define SM0 7
334 #define SRL2 6
335 #define SRL1 5
336 #define SRL0 4
337 #define SRW01 3
338 #define SRW00 2
339 #define SRW11 1
340 #define ISC2 0
341 
342 /* MCU Control Register */
343 #define SRE 7
344 #define SRW10 6
345 #define SE 5
346 #define SM1 4
347 #define ISC11 3
348 #define ISC10 2
349 #define ISC01 1
350 #define ISC00 0
351 
352 /* MCU Control and Status Register */
353 #define SM2 5
354 #define WDRF 3
355 #define BORF 2
356 #define EXTRF 1
357 #define PORF 0
358 
359 /* Timer/Counter 0 Control Register */
360 #define FOC0 7
361 #define WGM00 6
362 #define COM01 5
363 #define COM00 4
364 #define WGM01 3
365 #define CS02 2
366 #define CS01 1
367 #define CS00 0
368 
369 /* Special Function IO Register */
370 #define XMBK 6
371 #define XMM2 5
372 #define XMM1 4
373 #define XMM0 3
374 #define PUD 2
375 #define PSR10 0
376 
377 /* Timer/Counter 1 Control Register */
378 #define COM1A1 7
379 #define COM1A0 6
380 #define COM1B1 5
381 #define COM1B0 4
382 #define FOC1A 3
383 #define FOC1B 2
384 #define WGM11 1
385 #define WGM10 0
386 
387 /* Timer/Counter 1 Control and Status Register */
388 #define ICNC1 7
389 #define ICES1 6
390 #define WGM13 4
391 #define WGM12 3
392 #define CS12 2
393 #define CS11 1
394 #define CS10 0
395 
396 /* Watchdog Timer Control Register */
397 #define WDCE 4
398 #define WDE 3
399 #define WDP2 2
400 #define WDP1 1
401 #define WDP0 0
402 
403 /* USART Control and Status Register C */
404 #define URSEL 7
405 #define UMSEL 6
406 #define UPM1 5
407 #define UPM0 4
408 #define USBS 3
409 #define UCSZ1 2
410 #define UCSZ0 1
411 #define UCPOL 0
412 
413 /* Data Register, Port A */
414 #define PA7 7
415 #define PA6 6
416 #define PA5 5
417 #define PA4 4
418 #define PA3 3
419 #define PA2 2
420 #define PA1 1
421 #define PA0 0
422 
423 /* Data Direction Register, Port A */
424 #define DDA7 7
425 #define DDA6 6
426 #define DDA5 5
427 #define DDA4 4
428 #define DDA3 3
429 #define DDA2 2
430 #define DDA1 1
431 #define DDA0 0
432 
433 /* Input Pins, Port A */
434 #define PINA7 7
435 #define PINA6 6
436 #define PINA5 5
437 #define PINA4 4
438 #define PINA3 3
439 #define PINA2 2
440 #define PINA1 1
441 #define PINA0 0
442 
443 /* Data Register, Port B */
444 #define PB7 7
445 #define PB6 6
446 #define PB5 5
447 #define PB4 4
448 #define PB3 3
449 #define PB2 2
450 #define PB1 1
451 #define PB0 0
452 
453 /* Data Direction Register, Port B */
454 #define DDB7 7
455 #define DDB6 6
456 #define DDB5 5
457 #define DDB4 4
458 #define DDB3 3
459 #define DDB2 2
460 #define DDB1 1
461 #define DDB0 0
462 
463 /* Input Pins, Port B */
464 #define PINB7 7
465 #define PINB6 6
466 #define PINB5 5
467 #define PINB4 4
468 #define PINB3 3
469 #define PINB2 2
470 #define PINB1 1
471 #define PINB0 0
472 
473 /* Data Register, Port C */
474 #define PC7 7
475 #define PC6 6
476 #define PC5 5
477 #define PC4 4
478 #define PC3 3
479 #define PC2 2
480 #define PC1 1
481 #define PC0 0
482 
483 /* Data Direction Register, Port C */
484 #define DDC7 7
485 #define DDC6 6
486 #define DDC5 5
487 #define DDC4 4
488 #define DDC3 3
489 #define DDC2 2
490 #define DDC1 1
491 #define DDC0 0
492 
493 /* Input Pins, Port C */
494 #define PINC7 7
495 #define PINC6 6
496 #define PINC5 5
497 #define PINC4 4
498 #define PINC3 3
499 #define PINC2 2
500 #define PINC1 1
501 #define PINC0 0
502 
503 /* Data Register, Port D */
504 #define PD7 7
505 #define PD6 6
506 #define PD5 5
507 #define PD4 4
508 #define PD3 3
509 #define PD2 2
510 #define PD1 1
511 #define PD0 0
512 
513 /* Data Direction Register, Port D */
514 #define DDD7 7
515 #define DDD6 6
516 #define DDD5 5
517 #define DDD4 4
518 #define DDD3 3
519 #define DDD2 2
520 #define DDD1 1
521 #define DDD0 0
522 
523 /* Input Pins, Port D */
524 #define PIND7 7
525 #define PIND6 6
526 #define PIND5 5
527 #define PIND4 4
528 #define PIND3 3
529 #define PIND2 2
530 #define PIND1 1
531 #define PIND0 0
532 
533 /* SPI Status Register */
534 #define SPIF 7
535 #define WCOL 6
536 #define SPI2X 0
537 
538 /* SPI Control Register */
539 #define SPIE 7
540 #define SPE 6
541 #define DORD 5
542 #define MSTR 4
543 #define CPOL 3
544 #define CPHA 2
545 #define SPR1 1
546 #define SPR0 0
547 
548 /* USART Control and Status Register A */
549 #define RXC 7
550 #define TXC 6
551 #define UDRE 5
552 #define FE 4
553 #define DOR 3
554 #define PE 2
555 #define U2X 1
556 #define MPCM 0
557 
558 /* USART Control and Status Register B */
559 #define RXCIE 7
560 #define TXCIE 6
561 #define UDRIE 5
562 #define RXEN 4
563 #define TXEN 3
564 #define UCSZ2 2
565 #define RXB8 1
566 #define TXB8 0
567 
568 /* Analog Comparator Control and Status Register */
569 #define ACD 7
570 #define ACBG 6
571 #define ACO 5
572 #define ACI 4
573 #define ACIE 3
574 #define ACIC 2
575 #define ACIS1 1
576 #define ACIS0 0
577 
578 /* Data Register, Port E */
579 #define PE2 2
580 #define PE1 1
581 #define PE0 0
582 
583 /* Data Direction Register, Port E */
584 #define DDE2 2
585 #define DDE1 1
586 #define DDE0 0
587 
588 /* Input Pins, Port E */
589 #define PINE2 2
590 #define PINE1 1
591 #define PINE0 0
592 
593 /* EEPROM Control Register */
594 #define EERIE 3
595 #define EEMWE 2
596 #define EEWE 1
597 #define EERE 0
598 
599 /* Constants */
600 #define SPM_PAGESIZE 64
601 #define RAMEND 0x25F /* Last On-Chip SRAM Location */
602 #define XRAMEND 0xFFFF
603 #define E2END 0x1FF
604 #define E2PAGESIZE 4
605 #define FLASHEND 0x1FFF
606 
607 
608 /* Fuses */
609 
610 #define FUSE_MEMORY_SIZE 2
611 
612 /* Low Fuse Byte */
613 #define FUSE_CKSEL0 (unsigned char)~_BV(0)
614 #define FUSE_CKSEL1 (unsigned char)~_BV(1)
615 #define FUSE_CKSEL2 (unsigned char)~_BV(2)
616 #define FUSE_CKSEL3 (unsigned char)~_BV(3)
617 #define FUSE_SUT0 (unsigned char)~_BV(4)
618 #define FUSE_SUT1 (unsigned char)~_BV(5)
619 #define FUSE_BODEN (unsigned char)~_BV(6)
620 #define FUSE_BODLEVEL (unsigned char)~_BV(7)
621 #define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0)
622 
623 /* High Fuse Byte */
624 #define FUSE_BOOTRST (unsigned char)~_BV(0)
625 #define FUSE_BOOTSZ0 (unsigned char)~_BV(1)
626 #define FUSE_BOOTSZ1 (unsigned char)~_BV(2)
627 #define FUSE_EESAVE (unsigned char)~_BV(3)
628 #define FUSE_CKOPT (unsigned char)~_BV(4)
629 #define FUSE_SPIEN (unsigned char)~_BV(5)
630 #define FUSE_WDTON (unsigned char)~_BV(6)
631 #define FUSE_S8515C (unsigned char)~_BV(7)
632 #define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN)
633 
634 
635 /* Lock Bits */
636 #define __LOCK_BITS_EXIST
637 #define __BOOT_LOCK_BITS_0_EXIST
638 #define __BOOT_LOCK_BITS_1_EXIST
639 
640 
641 /* Signature */
642 #define SIGNATURE_0 0x1E
643 #define SIGNATURE_1 0x93
644 #define SIGNATURE_2 0x06
645 
647 #endif /* _AVR_IOM8515_H_ */