diff options
Diffstat (limited to 'cpukit/score/cpu/avr/avr/iomxx0_1.h')
-rw-r--r-- | cpukit/score/cpu/avr/avr/iomxx0_1.h | 1553 |
1 files changed, 1553 insertions, 0 deletions
diff --git a/cpukit/score/cpu/avr/avr/iomxx0_1.h b/cpukit/score/cpu/avr/avr/iomxx0_1.h new file mode 100644 index 0000000000..e982cd6022 --- /dev/null +++ b/cpukit/score/cpu/avr/avr/iomxx0_1.h @@ -0,0 +1,1553 @@ +/* Copyright (c) 2005 Anatoly Sokolov + 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. */ + +/* $Id$ */ + +/* avr/iomxx0_1.h - definitions for ATmega640, Atmega1280, ATmega1281, + ATmega2560 and ATmega2561. */ + +#ifndef _AVR_IOMXX0_1_H_ +#define _AVR_IOMXX0_1_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_ "iomxx0_1.h" +#else +# error "Attempt to include more than one <avr/ioXXX.h> file." +#endif + +#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +# define __ATmegaxx0__ +#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) +# define __ATmegaxx1__ +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0X00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0X01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0X02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0X03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG5 5 +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG5 5 +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1C 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIFR2 _SFR_IO8(0x17) +#define OCF2B 2 +#define OCF2A 1 +#define TOV2 0 + +#define TIFR3 _SFR_IO8(0x18) +#define ICF3 5 +#define OCF3C 3 +#define OCF3B 2 +#define OCF3A 1 +#define TOV3 0 + +#define TIFR4 _SFR_IO8(0x19) +#define ICF4 5 +#define OCF4C 3 +#define OCF4B 2 +#define OCF4A 1 +#define TOV4 0 + +#define TIFR5 _SFR_IO8(0x1A) +#define ICF5 5 +#define OCF5C 3 +#define OCF5B 2 +#define OCF5A 1 +#define TOV5 0 + +#define PCIFR _SFR_IO8(0x1B) +#if defined(__ATmegaxx0__) +# define PCIF2 2 +#endif /* __ATmegaxx0__ */ +#define PCIF1 1 +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#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 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +#define OCR0B _SFR_IO8(0X28) + +/* Reserved [0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define MONDR _SFR_IO8(0x31) +#define OCDR _SFR_IO8(0x31) +#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 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0X35) +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3A] */ + +#define RAMPZ _SFR_IO8(0X3B) +#define RAMPZ0 0 + +#define EIND _SFR_IO8(0X3C) +#define EIND0 0 + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* Reserved [0x62..0x63] */ + +#define PRR0 _SFR_MEM8(0x64) +#define PRTWI 7 +#define PRTIM2 6 +#define PRTIM0 5 +#define PRTIM1 3 +#define PRSPI 2 +#define PRUSART0 1 +#define PRADC 0 + +#define PRR1 _SFR_MEM8(0x65) +#define PRTIM5 5 +#define PRTIM4 4 +#define PRTIM3 3 +#define PRUSART3 2 +#define PRUSART2 1 +#define PRUSART1 0 + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +#define PCICR _SFR_MEM8(0x68) +#if defined(__ATmegaxx0__) +# define PCIE2 2 +#endif /* __ATmegaxx0__ */ +#define PCIE1 1 +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +#if defined(__ATmegaxx0__) +# define PCMSK2 _SFR_MEM8(0x6D) +# define PCINT23 7 +# define PCINT22 6 +# define PCINT21 5 +# define PCINT20 4 +# define PCINT19 3 +# define PCINT18 2 +# define PCINT17 1 +# define PCINT16 0 +#endif /* __ATmegaxx0__ */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1C 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define TIMSK2 _SFR_MEM8(0x70) +#define OCIE2B 2 +#define OCIE2A 1 +#define TOIE2 0 + +#define TIMSK3 _SFR_MEM8(0x71) +#define ICIE3 5 +#define OCIE3C 3 +#define OCIE3B 2 +#define OCIE3A 1 +#define TOIE3 0 + +#define TIMSK4 _SFR_MEM8(0x72) +#define ICIE4 5 +#define OCIE4C 3 +#define OCIE4B 2 +#define OCIE4A 1 +#define TOIE4 0 + +#define TIMSK5 _SFR_MEM8(0x73) +#define ICIE5 5 +#define OCIE5C 3 +#define OCIE5B 2 +#define OCIE5A 1 +#define TOIE5 0 + +#define XMCRA _SFR_MEM8(0x74) +#define SRE 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW11 3 +#define SRW10 2 +#define SRW01 1 +#define SRW00 0 + +#define XMCRB _SFR_MEM8(0x75) +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 + +/* Reserved [0x76..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ACME 6 +#if defined(__ATmegaxx0__) +# define MUX5 3 +#endif /* __ATmegaxx0__ */ +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#define ADMUX _SFR_MEM8(0x7C) +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +#define DIDR2 _SFR_MEM8(0x7D) +#define ADC15D 7 +#define ADC14D 6 +#define ADC13D 5 +#define ADC12D 4 +#define ADC11D 3 +#define ADC10D 2 +#define ADC9D 1 +#define ADC8D 0 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN1D 1 +#define AIN0D 0 + +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Combine OCR1CL and OCR1CH */ +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CH _SFR_MEM8(0x8D) + +/* Reserved [0x8E..0x8F] */ + +#define TCCR3A _SFR_MEM8(0x90) +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 + +#define TCCR3B _SFR_MEM8(0x91) +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 + +/* Reserved [0x93] */ + +/* Combine TCNT3L and TCNT3H */ +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3H _SFR_MEM8(0x95) + +/* Combine ICR3L and ICR3H */ +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3H _SFR_MEM8(0x97) + +/* Combine OCR3AL and OCR3AH */ +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AH _SFR_MEM8(0x99) + +/* Combine OCR3BL and OCR3BH */ +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BH _SFR_MEM8(0x9B) + +/* Combine OCR3CL and OCR3CH */ +#define OCR3C _SFR_MEM16(0x9C) + +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CH _SFR_MEM8(0x9D) + +/* Reserved [0x9E..0x9F] */ + +#define TCCR4A _SFR_MEM8(0xA0) +#define COM4A1 7 +#define COM4A0 6 +#define COM4B1 5 +#define COM4B0 4 +#define COM4C1 3 +#define COM4C0 2 +#define WGM41 1 +#define WGM40 0 + +#define TCCR4B _SFR_MEM8(0xA1) +#define ICNC4 7 +#define ICES4 6 +#define WGM43 4 +#define WGM42 3 +#define CS42 2 +#define CS41 1 +#define CS40 0 + +#define TCCR4C _SFR_MEM8(0xA2) +#define FOC4A 7 +#define FOC4B 6 +#define FOC4C 5 + +/* Reserved [0xA3] */ + +/* Combine TCNT4L and TCNT4H */ +#define TCNT4 _SFR_MEM16(0xA4) + +#define TCNT4L _SFR_MEM8(0xA4) +#define TCNT4H _SFR_MEM8(0xA5) + +/* Combine ICR4L and ICR4H */ +#define ICR4 _SFR_MEM16(0xA6) + +#define ICR4L _SFR_MEM8(0xA6) +#define ICR4H _SFR_MEM8(0xA7) + +/* Combine OCR4AL and OCR4AH */ +#define OCR4A _SFR_MEM16(0xA8) + +#define OCR4AL _SFR_MEM8(0xA8) +#define OCR4AH _SFR_MEM8(0xA9) + +/* Combine OCR4BL and OCR4BH */ +#define OCR4B _SFR_MEM16(0xAA) + +#define OCR4BL _SFR_MEM8(0xAA) +#define OCR4BH _SFR_MEM8(0xAB) + +/* Combine OCR4CL and OCR4CH */ +#define OCR4C _SFR_MEM16(0xAC) + +#define OCR4CL _SFR_MEM8(0xAC) +#define OCR4CH _SFR_MEM8(0xAD) + +/* Reserved [0xAE..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define COM2A1 7 +#define COM2A0 6 +#define COM2B1 5 +#define COM2B0 4 +#define WGM21 1 +#define WGM20 0 + +#define TCCR2B _SFR_MEM8(0xB1) +#define FOC2A 7 +#define FOC2B 6 +#define WGM22 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +#define OCR2B _SFR_MEM8(0xB4) + +/* Reserved [0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define EXCLK 6 +#define AS2 5 +#define TCN2UB 4 +#define OCR2AUB 3 +#define OCR2BUB 2 +#define TCR2AUB 1 +#define TCR2BUB 0 + +/* Reserved [0xB7] */ + +#define TWBR _SFR_MEM8(0xB8) + +#define TWSR _SFR_MEM8(0xB9) +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +#define TWAR _SFR_MEM8(0xBA) +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +#define TWDR _SFR_MEM8(0xBB) + +#define TWCR _SFR_MEM8(0xBC) +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +/* Reserved [0xBE..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +#define UCSR0B _SFR_MEM8(0XC1) +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UMSEL01 7 +#define UMSEL00 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7] */ + +#define UCSR1A _SFR_MEM8(0xC8) +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +#define UCSR1B _SFR_MEM8(0XC9) +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UMSEL11 7 +#define UMSEL10 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +/* Reserved [0xCB] */ + +/* Combine UBRR1L and UBRR1H */ +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0XCE) + +/* Reserved [0xCF] */ + +#if defined(__ATmegaxx0__) + +# define UCSR2A _SFR_MEM8(0xD0) +# define RXC2 7 +# define TXC2 6 +# define UDRE2 5 +# define FE2 4 +# define DOR2 3 +# define UPE2 2 +# define U2X2 1 +# define MPCM2 0 + +# define UCSR2B _SFR_MEM8(0XD1) +# define RXCIE2 7 +# define TXCIE2 6 +# define UDRIE2 5 +# define RXEN2 4 +# define TXEN2 3 +# define UCSZ22 2 +# define RXB82 1 +# define TXB82 0 + +# define UCSR2C _SFR_MEM8(0xD2) +# define UMSEL21 7 +# define UMSEL20 6 +# define UPM21 5 +# define UPM20 4 +# define USBS2 3 +# define UCSZ21 2 +# define UCSZ20 1 +# define UCPOL2 0 + +/* Reserved [0xD3] */ + +/* Combine UBRR2L and UBRR2H */ +# define UBRR2 _SFR_MEM16(0xD4) + +# define UBRR2L _SFR_MEM8(0xD4) +# define UBRR2H _SFR_MEM8(0xD5) + +# define UDR2 _SFR_MEM8(0XD6) + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0xD7..0xFF] */ + +#if defined(__ATmegaxx0__) + +# define PINH _SFR_MEM8(0x100) +# define PINH7 7 +# define PINH6 6 +# define PINH5 5 +# define PINH4 4 +# define PINH3 3 +# define PINH2 2 +# define PINH1 1 +# define PINH0 0 + +# define DDRH _SFR_MEM8(0x101) +# define DDH7 7 +# define DDH6 6 +# define DDH5 5 +# define DDH4 4 +# define DDH3 3 +# define DDH2 2 +# define DDH1 1 +# define DDH0 0 + +# define PORTH _SFR_MEM8(0x102) +# define PH7 7 +# define PH6 6 +# define PH5 5 +# define PH4 4 +# define PH3 3 +# define PH2 2 +# define PH1 1 +# define PH0 0 + +# define PINJ _SFR_MEM8(0x103) +# define PINJ7 7 +# define PINJ6 6 +# define PINJ5 5 +# define PINJ4 4 +# define PINJ3 3 +# define PINJ2 2 +# define PINJ1 1 +# define PINJ0 0 + +# define DDRJ _SFR_MEM8(0x104) +# define DDJ7 7 +# define DDJ6 6 +# define DDJ5 5 +# define DDJ4 4 +# define DDJ3 3 +# define DDJ2 2 +# define DDJ1 1 +# define DDJ0 0 + +# define PORTJ _SFR_MEM8(0x105) +# define PJ7 7 +# define PJ6 6 +# define PJ5 5 +# define PJ4 4 +# define PJ3 3 +# define PJ2 2 +# define PJ1 1 +# define PJ0 0 + +# define PINK _SFR_MEM8(0x106) +# define PINK7 7 +# define PINK6 6 +# define PINK5 5 +# define PINK4 4 +# define PINK3 3 +# define PINK2 2 +# define PINK1 1 +# define PINK0 0 + +# define DDRK _SFR_MEM8(0x107) +# define DDK7 7 +# define DDK6 6 +# define DDK5 5 +# define DDK4 4 +# define DDK3 3 +# define DDK2 2 +# define DDK1 1 +# define DDK0 0 + +# define PORTK _SFR_MEM8(0x108) +# define PK7 7 +# define PK6 6 +# define PK5 5 +# define PK4 4 +# define PK3 3 +# define PK2 2 +# define PK1 1 +# define PK0 0 + +# define PINL _SFR_MEM8(0x109) +# define PINL7 7 +# define PINL6 6 +# define PINL5 5 +# define PINL4 4 +# define PINL3 3 +# define PINL2 2 +# define PINL1 1 +# define PINL0 0 + +# define DDRL _SFR_MEM8(0x10A) +# define DDL7 7 +# define DDL6 6 +# define DDL5 5 +# define DDL4 4 +# define DDL3 3 +# define DDL2 2 +# define DDL1 1 +# define DDL0 0 + +# define PORTL _SFR_MEM8(0x10B) +# define PL7 7 +# define PL6 6 +# define PL5 5 +# define PL4 4 +# define PL3 3 +# define PL2 2 +# define PL1 1 +# define PL0 0 + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0x10C..0x11F] */ + +#define TCCR5A _SFR_MEM8(0x120) +#define COM5A1 7 +#define COM5A0 6 +#define COM5B1 5 +#define COM5B0 4 +#define COM5C1 3 +#define COM5C0 2 +#define WGM51 1 +#define WGM50 0 + +#define TCCR5B _SFR_MEM8(0x121) +#define ICNC5 7 +#define ICES5 6 +#define WGM53 4 +#define WGM52 3 +#define CS52 2 +#define CS51 1 +#define CS50 0 + +#define TCCR5C _SFR_MEM8(0x122) +#define FOC5A 7 +#define FOC5B 6 +#define FOC5C 5 + +/* Reserved [0x123] */ + +/* Combine TCNT5L and TCNT5H */ +#define TCNT5 _SFR_MEM16(0x124) + +#define TCNT5L _SFR_MEM8(0x124) +#define TCNT5H _SFR_MEM8(0x125) + +/* Combine ICR5L and ICR5H */ +#define ICR5 _SFR_MEM16(0x126) + +#define ICR5L _SFR_MEM8(0x126) +#define ICR5H _SFR_MEM8(0x127) + +/* Combine OCR5AL and OCR5AH */ +#define OCR5A _SFR_MEM16(0x128) + +#define OCR5AL _SFR_MEM8(0x128) +#define OCR5AH _SFR_MEM8(0x129) + +/* Combine OCR5BL and OCR5BH */ +#define OCR5B _SFR_MEM16(0x12A) + +#define OCR5BL _SFR_MEM8(0x12A) +#define OCR5BH _SFR_MEM8(0x12B) + +/* Combine OCR5CL and OCR5CH */ +#define OCR5C _SFR_MEM16(0x12C) + +#define OCR5CL _SFR_MEM8(0x12C) +#define OCR5CH _SFR_MEM8(0x12D) + +/* Reserved [0x12E..0x12F] */ + +#if defined(__ATmegaxx0__) + +# define UCSR3A _SFR_MEM8(0x130) +# define RXC3 7 +# define TXC3 6 +# define UDRE3 5 +# define FE3 4 +# define DOR3 3 +# define UPE3 2 +# define U2X3 1 +# define MPCM3 0 + +# define UCSR3B _SFR_MEM8(0X131) +# define RXCIE3 7 +# define TXCIE3 6 +# define UDRIE3 5 +# define RXEN3 4 +# define TXEN3 3 +# define UCSZ32 2 +# define RXB83 1 +# define TXB83 0 + +# define UCSR3C _SFR_MEM8(0x132) +# define UMSEL31 7 +# define UMSEL30 6 +# define UPM31 5 +# define UPM30 4 +# define USBS3 3 +# define UCSZ31 2 +# define UCSZ30 1 +# define UCPOL3 0 + +/* Reserved [0x133] */ + +/* Combine UBRR3L and UBRR3H */ +# define UBRR3 _SFR_MEM16(0x134) + +# define UBRR3L _SFR_MEM8(0x134) +# define UBRR3H _SFR_MEM8(0x135) + +# define UDR3 _SFR_MEM8(0X136) + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0x137..1FF] */ + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* 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) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(9) +#define SIG_PIN_CHANGE0 _VECTOR(9) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(10) +#define SIG_PIN_CHANGE1 _VECTOR(10) + +#if defined(__ATmegaxx0__) +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(11) +#define SIG_PIN_CHANGE2 _VECTOR(11) + +#endif /* __ATmegaxx0__ */ + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(12) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(12) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPA_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE2A _VECTOR(13) + +/* Timer/Counter2 Compare Match B */ +#define TIMER2_COMPB_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE2B _VECTOR(14) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW2 _VECTOR(15) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(16) +#define SIG_INPUT_CAPTURE1 _VECTOR(16) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(17) +#define SIG_OUTPUT_COMPARE1A _VECTOR(17) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(18) +#define SIG_OUTPUT_COMPARE1B _VECTOR(18) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(19) +#define SIG_OUTPUT_COMPARE1C _VECTOR(19) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(20) +#define SIG_OVERFLOW1 _VECTOR(20) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(21) +#define SIG_OUTPUT_COMPARE0A _VECTOR(21) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(22) +#define SIG_OUTPUT_COMPARE0B _VECTOR(22) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(23) +#define SIG_OVERFLOW0 _VECTOR(23) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(24) +#define SIG_SPI _VECTOR(24) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(25) +#define SIG_USART0_RECV _VECTOR(25) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(26) +#define SIG_USART0_DATA _VECTOR(26) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(27) +#define SIG_USART0_TRANS _VECTOR(27) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(28) +#define SIG_COMPARATOR _VECTOR(28) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(29) +#define SIG_ADC _VECTOR(29) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(30) +#define SIG_EEPROM_READY _VECTOR(30) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(31) +#define SIG_INPUT_CAPTURE3 _VECTOR(31) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(32) +#define SIG_OUTPUT_COMPARE3A _VECTOR(32) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(33) +#define SIG_OUTPUT_COMPARE3B _VECTOR(33) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(34) +#define SIG_OUTPUT_COMPARE3C _VECTOR(34) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(35) +#define SIG_OVERFLOW3 _VECTOR(35) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(36) +#define SIG_USART1_RECV _VECTOR(36) + +/* USART1 Data register Empty */ +#define USART1_UDRE_vect _VECTOR(37) +#define SIG_USART1_DATA _VECTOR(37) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(38) +#define SIG_USART1_TRANS _VECTOR(38) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(39) +#define SIG_2WIRE_SERIAL _VECTOR(39) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(40) +#define SIG_SPM_READY _VECTOR(40) + +#if defined(__ATmegaxx0__) +/* Timer/Counter4 Capture Event */ +#define TIMER4_CAPT_vect _VECTOR(41) +#define SIG_INPUT_CAPTURE4 _VECTOR(41) + +#endif /* __ATmegaxx0__ */ + +/* Timer/Counter4 Compare Match A */ +#define TIMER4_COMPA_vect _VECTOR(42) +#define SIG_OUTPUT_COMPARE4A _VECTOR(42) + +/* Timer/Counter4 Compare Match B */ +#define TIMER4_COMPB_vect _VECTOR(43) +#define SIG_OUTPUT_COMPARE4B _VECTOR(43) + +/* Timer/Counter4 Compare Match C */ +#define TIMER4_COMPC_vect _VECTOR(44) +#define SIG_OUTPUT_COMPARE4C _VECTOR(44) + +/* Timer/Counter4 Overflow */ +#define TIMER4_OVF_vect _VECTOR(45) +#define SIG_OVERFLOW4 _VECTOR(45) + +#if defined(__ATmegaxx0__) +/* Timer/Counter5 Capture Event */ +#define TIMER5_CAPT_vect _VECTOR(46) +#define SIG_INPUT_CAPTURE5 _VECTOR(46) + +#endif /* __ATmegaxx0__ */ + +/* Timer/Counter5 Compare Match A */ +#define TIMER5_COMPA_vect _VECTOR(47) +#define SIG_OUTPUT_COMPARE5A _VECTOR(47) + +/* Timer/Counter5 Compare Match B */ +#define TIMER5_COMPB_vect _VECTOR(48) +#define SIG_OUTPUT_COMPARE5B _VECTOR(48) + +/* Timer/Counter5 Compare Match C */ +#define TIMER5_COMPC_vect _VECTOR(49) +#define SIG_OUTPUT_COMPARE5C _VECTOR(49) + +/* Timer/Counter5 Overflow */ +#define TIMER5_OVF_vect _VECTOR(50) +#define SIG_OVERFLOW5 _VECTOR(50) + +#if defined(__ATmegaxx1__) + +# define _VECTORS_SIZE 204 + +#else + +/* USART2, Rx Complete */ +#define USART2_RX_vect _VECTOR(51) +#define SIG_USART2_RECV _VECTOR(51) + +/* USART2 Data register Empty */ +#define USART2_UDRE_vect _VECTOR(52) +#define SIG_USART2_DATA _VECTOR(52) + +/* USART2, Tx Complete */ +#define USART2_TX_vect _VECTOR(53) +#define SIG_USART2_TRANS _VECTOR(53) + +/* USART3, Rx Complete */ +#define USART3_RX_vect _VECTOR(54) +#define SIG_USART3_RECV _VECTOR(54) + +/* USART3 Data register Empty */ +#define USART3_UDRE_vect _VECTOR(55) +#define SIG_USART3_DATA _VECTOR(55) + +/* USART3, Tx Complete */ +#define USART3_TX_vect _VECTOR(56) +#define SIG_USART3_TRANS _VECTOR(56) + +# define _VECTORS_SIZE 228 + +#endif /* __ATmegaxx1__ */ + +#if defined(__ATmegaxx0__) +# undef __ATmegaxx0__ +#endif + +#if defined(__ATmegaxx1__) +# undef __ATmegaxx1__ +#endif + +#endif /* _AVR_IOMXX0_1_H_ */ |