diff options
Diffstat (limited to 'include/avr/io.h')
-rw-r--r-- | include/avr/io.h | 429 |
1 files changed, 429 insertions, 0 deletions
diff --git a/include/avr/io.h b/include/avr/io.h new file mode 100644 index 0000000000..22ac57d84f --- /dev/null +++ b/include/avr/io.h @@ -0,0 +1,429 @@ +/** + * @file + * + * @brief AVR device-specific IO Definitions + * + * This header file includes the apropriate IO definitions for the + * device that has been specified by the <tt>-mmcu=</tt> compiler + * command-line switch. This is done by diverting to the appropriate + * file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should + * never be included directly. Some register names common to all + * AVR devices are defined directly within <tt><avr/common.h></tt>, + * which is included in <tt><avr/io.h></tt>, + * but most of the details come from the respective include file. + * + * Note that this file always includes the following files: + * \code + * #include <avr/sfr_defs.h> + * #include <avr/portpins.h> + * #include <avr/common.h> + * #include <avr/version.h> + * \endcode + * See \ref avr_sfr for more details about that header file. + * + * Included are definitions of the IO register set and their + * respective bit values as specified in the Atmel documentation. + * Note that inconsistencies in naming conventions, + * so even identical functions sometimes get different names on + * different devices. + * + * Also included are the specific names useable for interrupt + * function definitions as documented + * \ref avr_signames "here". + * + * Finally, the following macros are defined: + * + * - \b RAMEND + * <br> + * The last on-chip RAM address. + * <br> + * - \b XRAMEND + * <br> + * The last possible RAM location that is addressable. This is equal to + * RAMEND for devices that do not allow for external RAM. For devices + * that allow external RAM, this will be larger than RAMEND. + * <br> + * - \b E2END + * <br> + * The last EEPROM address. + * <br> + * - \b FLASHEND + * <br> + * The last byte address in the Flash program space. + * <br> + * - \b SPM_PAGESIZE + * <br> + * For devices with bootloader support, the flash pagesize + * (in bytes) to be used for the \c SPM instruction. + * - \b E2PAGESIZE + * <br> + * The size of the EEPROM page. + */ + +/* + * Copyright (c) 2002,2003,2005,2006,2007 Marek Michalkiewicz, Joerg Wunsch + * Copyright (c) 2007 Eric B. Weddington + * 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. + */ + +#ifndef _AVR_IO_H_ +#define _AVR_IO_H_ + +/** + * @defgroup avr_io Input Output + * + * @ingroup avr + * + */ +/**@{**/ + +#include <avr/sfr_defs.h> + +#if defined (__AVR_AT94K__) +# include <avr/ioat94k.h> +#elif defined (__AVR_AT43USB320__) +# include <avr/io43u32x.h> +#elif defined (__AVR_AT43USB355__) +# include <avr/io43u35x.h> +#elif defined (__AVR_AT76C711__) +# include <avr/io76c711.h> +#elif defined (__AVR_AT86RF401__) +# include <avr/io86r401.h> +#elif defined (__AVR_AT90PWM1__) +# include <avr/io90pwm1.h> +#elif defined (__AVR_AT90PWM2__) +# include <avr/io90pwmx.h> +#elif defined (__AVR_AT90PWM2B__) +# include <avr/io90pwm2b.h> +#elif defined (__AVR_AT90PWM3__) +# include <avr/io90pwmx.h> +#elif defined (__AVR_AT90PWM3B__) +# include <avr/io90pwm3b.h> +#elif defined (__AVR_AT90PWM216__) +# include <avr/io90pwm216.h> +#elif defined (__AVR_AT90PWM316__) +# include <avr/io90pwm316.h> +#elif defined (__AVR_AT90PWM81__) +# include <avr/io90pwm81.h> +#elif defined (__AVR_ATmega8U2__) +# include <avr/iom8u2.h> +#elif defined (__AVR_ATmega16M1__) +# include <avr/iom16m1.h> +#elif defined (__AVR_ATmega16U2__) +# include <avr/iom16u2.h> +#elif defined (__AVR_ATmega16U4__) +# include <avr/iom16u4.h> +#elif defined (__AVR_ATmega32C1__) +# include <avr/iom32c1.h> +#elif defined (__AVR_ATmega32M1__) +# include <avr/iom32m1.h> +#elif defined (__AVR_ATmega32U2__) +# include <avr/iom32u2.h> +#elif defined (__AVR_ATmega32U4__) +# include <avr/iom32u4.h> +#elif defined (__AVR_ATmega32U6__) +# include <avr/iom32u6.h> +#elif defined (__AVR_ATmega64C1__) +# include <avr/iom64c1.h> +#elif defined (__AVR_ATmega64M1__) +# include <avr/iom64m1.h> +#elif defined (__AVR_ATmega128__) +# include <avr/iom128.h> +#elif defined (__AVR_ATmega1280__) +# include <avr/iom1280.h> +#elif defined (__AVR_ATmega1281__) +# include <avr/iom1281.h> +#elif defined (__AVR_ATmega1284P__) +# include <avr/iom1284p.h> +#elif defined (__AVR_ATmega128RFA1__) +# include <avr/iom128rfa1.h> +#elif defined (__AVR_ATmega2560__) +# include <avr/iom2560.h> +#elif defined (__AVR_ATmega2561__) +# include <avr/iom2561.h> +#elif defined (__AVR_AT90CAN32__) +# include <avr/iocan32.h> +#elif defined (__AVR_AT90CAN64__) +# include <avr/iocan64.h> +#elif defined (__AVR_AT90CAN128__) +# include <avr/iocan128.h> +#elif defined (__AVR_AT90USB82__) +# include <avr/iousb82.h> +#elif defined (__AVR_AT90USB162__) +# include <avr/iousb162.h> +#elif defined (__AVR_AT90USB646__) +# include <avr/iousb646.h> +#elif defined (__AVR_AT90USB647__) +# include <avr/iousb647.h> +#elif defined (__AVR_AT90USB1286__) +# include <avr/iousb1286.h> +#elif defined (__AVR_AT90USB1287__) +# include <avr/iousb1287.h> +#elif defined (__AVR_ATmega64__) +# include <avr/iom64.h> +#elif defined (__AVR_ATmega640__) +# include <avr/iom640.h> +#elif defined (__AVR_ATmega644__) || defined (__AVR_ATmega644A__) +# include <avr/iom644.h> +#elif defined (__AVR_ATmega644P__) +# include <avr/iom644p.h> +#elif defined (__AVR_ATmega644PA__) +# include <avr/iom644pa.h> +#elif defined (__AVR_ATmega645__) || defined (__AVR_ATmega645A__) || defined (__AVR_ATmega645P__) +# include <avr/iom645.h> +#elif defined (__AVR_ATmega6450__) || defined (__AVR_ATmega6450A__) || defined (__AVR_ATmega6450P__) +# include <avr/iom6450.h> +#elif defined (__AVR_ATmega649__) || defined (__AVR_ATmega649A__) +# include <avr/iom649.h> +#elif defined (__AVR_ATmega6490__) || defined (__AVR_ATmega6490A__) || defined (__AVR_ATmega6490P__) +# include <avr/iom6490.h> +#elif defined (__AVR_ATmega649P__) +# include <avr/iom649p.h> +#elif defined (__AVR_ATmega64HVE__) +# include <avr/iom64hve.h> +#elif defined (__AVR_ATmega103__) +# include <avr/iom103.h> +#elif defined (__AVR_ATmega32__) +# include <avr/iom32.h> +#elif defined (__AVR_ATmega323__) +# include <avr/iom323.h> +#elif defined (__AVR_ATmega324P__) || defined (__AVR_ATmega324A__) +# include <avr/iom324.h> +#elif defined (__AVR_ATmega324PA__) +# include <avr/iom324pa.h> +#elif defined (__AVR_ATmega325__) +# include <avr/iom325.h> +#elif defined (__AVR_ATmega325P__) +# include <avr/iom325.h> +#elif defined (__AVR_ATmega3250__) +# include <avr/iom3250.h> +#elif defined (__AVR_ATmega3250P__) +# include <avr/iom3250.h> +#elif defined (__AVR_ATmega328P__) || defined (__AVR_ATmega328__) +# include <avr/iom328p.h> +#elif defined (__AVR_ATmega329__) +# include <avr/iom329.h> +#elif defined (__AVR_ATmega329P__) || defined (__AVR_ATmega329PA__) +# include <avr/iom329.h> +#elif defined (__AVR_ATmega3290__) +# include <avr/iom3290.h> +#elif defined (__AVR_ATmega3290P__) +# include <avr/iom3290.h> +#elif defined (__AVR_ATmega32HVB__) +# include <avr/iom32hvb.h> +#elif defined (__AVR_ATmega406__) +# include <avr/iom406.h> +#elif defined (__AVR_ATmega16__) +# include <avr/iom16.h> +#elif defined (__AVR_ATmega16A__) +# include <avr/iom16a.h> +#elif defined (__AVR_ATmega161__) +# include <avr/iom161.h> +#elif defined (__AVR_ATmega162__) +# include <avr/iom162.h> +#elif defined (__AVR_ATmega163__) +# include <avr/iom163.h> +#elif defined (__AVR_ATmega164P__) || defined (__AVR_ATmega164A__) +# include <avr/iom164.h> +#elif defined (__AVR_ATmega165__) || defined (__AVR_ATmega165A__) +# include <avr/iom165.h> +#elif defined (__AVR_ATmega165P__) +# include <avr/iom165p.h> +#elif defined (__AVR_ATmega168__) || defined (__AVR_ATmega168A__) +# include <avr/iom168.h> +#elif defined (__AVR_ATmega168P__) +# include <avr/iom168p.h> +#elif defined (__AVR_ATmega169__) || defined (__AVR_ATmega169A__) +# include <avr/iom169.h> +#elif defined (__AVR_ATmega169P__) +# include <avr/iom169p.h> +#elif defined (__AVR_ATmega169PA__) +# include <avr/iom169pa.h> +#elif defined (__AVR_ATmega8HVA__) +# include <avr/iom8hva.h> +#elif defined (__AVR_ATmega16HVA__) +# include <avr/iom16hva.h> +#elif defined (__AVR_ATmega16HVA2__) +# include <avr/iom16hva2.h> +#elif defined (__AVR_ATmega16HVB__) +# include <avr/iom16hvb.h> +#elif defined (__AVR_ATmega8__) +# include <avr/iom8.h> +#elif defined (__AVR_ATmega48__) || defined (__AVR_ATmega48A__) +# include <avr/iom48.h> +#elif defined (__AVR_ATmega48P__) +# include <avr/iom48p.h> +#elif defined (__AVR_ATmega88__) || defined (__AVR_ATmega88A__) +# include <avr/iom88.h> +#elif defined (__AVR_ATmega88P__) +# include <avr/iom88p.h> +#elif defined (__AVR_ATmega88PA__) +# include <avr/iom88pa.h> +#elif defined (__AVR_ATmega8515__) +# include <avr/iom8515.h> +#elif defined (__AVR_ATmega8535__) +# include <avr/iom8535.h> +#elif defined (__AVR_AT90S8535__) +# include <avr/io8535.h> +#elif defined (__AVR_AT90C8534__) +# include <avr/io8534.h> +#elif defined (__AVR_AT90S8515__) +# include <avr/io8515.h> +#elif defined (__AVR_AT90S4434__) +# include <avr/io4434.h> +#elif defined (__AVR_AT90S4433__) +# include <avr/io4433.h> +#elif defined (__AVR_AT90S4414__) +# include <avr/io4414.h> +#elif defined (__AVR_ATtiny22__) +# include <avr/iotn22.h> +#elif defined (__AVR_ATtiny26__) +# include <avr/iotn26.h> +#elif defined (__AVR_AT90S2343__) +# include <avr/io2343.h> +#elif defined (__AVR_AT90S2333__) +# include <avr/io2333.h> +#elif defined (__AVR_AT90S2323__) +# include <avr/io2323.h> +#elif defined (__AVR_AT90S2313__) +# include <avr/io2313.h> +#elif defined (__AVR_ATtiny2313__) +# include <avr/iotn2313.h> +#elif defined (__AVR_ATtiny2313A__) +# include <avr/iotn2313a.h> +#elif defined (__AVR_ATtiny13__) +# include <avr/iotn13.h> +#elif defined (__AVR_ATtiny13A__) +# include <avr/iotn13a.h> +#elif defined (__AVR_ATtiny25__) +# include <avr/iotn25.h> +#elif defined (__AVR_ATtiny4313__) +# include <avr/iotn4313.h> +#elif defined (__AVR_ATtiny45__) +# include <avr/iotn45.h> +#elif defined (__AVR_ATtiny85__) +# include <avr/iotn85.h> +#elif defined (__AVR_ATtiny24__) +# include <avr/iotn24.h> +#elif defined (__AVR_ATtiny24A__) +# include <avr/iotn24a.h> +#elif defined (__AVR_ATtiny44__) +# include <avr/iotn44.h> +#elif defined (__AVR_ATtiny44A__) +# include <avr/iotn44a.h> +#elif defined (__AVR_ATtiny84__) +# include <avr/iotn84.h> +#elif defined (__AVR_ATtiny261__) +# include <avr/iotn261.h> +#elif defined (__AVR_ATtiny261A__) +# include <avr/iotn261a.h> +#elif defined (__AVR_ATtiny461__) +# include <avr/iotn461.h> +#elif defined (__AVR_ATtiny461A__) +# include <avr/iotn461a.h> +#elif defined (__AVR_ATtiny861__) +# include <avr/iotn861.h> +#elif defined (__AVR_ATtiny861A__) +# include <avr/iotn861a.h> +#elif defined (__AVR_ATtiny43U__) +# include <avr/iotn43u.h> +#elif defined (__AVR_ATtiny48__) +# include <avr/iotn48.h> +#elif defined (__AVR_ATtiny88__) +# include <avr/iotn88.h> +#elif defined (__AVR_ATtiny87__) +# include <avr/iotn87.h> +#elif defined (__AVR_ATtiny167__) +# include <avr/iotn167.h> +#elif defined (__AVR_AT90SCR100__) +# include <avr/io90scr100.h> +#elif defined (__AVR_ATxmega16A4__) +# include <avr/iox16a4.h> +#elif defined (__AVR_ATxmega16D4__) +# include <avr/iox16d4.h> +#elif defined (__AVR_ATxmega32A4__) +# include <avr/iox32a4.h> +#elif defined (__AVR_ATxmega32D4__) +# include <avr/iox32d4.h> +#elif defined (__AVR_ATxmega64A1__) +# include <avr/iox64a1.h> +#elif defined (__AVR_ATxmega64A3__) +# include <avr/iox64a3.h> +#elif defined (__AVR_ATxmega64D3__) +# include <avr/iox64d3.h> +#elif defined (__AVR_ATxmega128A1__) +# include <avr/iox128a1.h> +#elif defined (__AVR_ATxmega128A3__) +# include <avr/iox128a3.h> +#elif defined (__AVR_ATxmega128D3__) +# include <avr/iox128d3.h> +#elif defined (__AVR_ATxmega192A3__) +# include <avr/iox192a3.h> +#elif defined (__AVR_ATxmega192D3__) +# include <avr/iox192d3.h> +#elif defined (__AVR_ATxmega256A3__) +# include <avr/iox256a3.h> +#elif defined (__AVR_ATxmega256A3B__) +# include <avr/iox256a3b.h> +#elif defined (__AVR_ATxmega256D3__) +# include <avr/iox256d3.h> +#elif defined (__AVR_ATA6289__) +# include <avr/ioa6289.h> +/* avr1: the following only supported for assembler programs */ +#elif defined (__AVR_ATtiny28__) +# include <avr/iotn28.h> +#elif defined (__AVR_AT90S1200__) +# include <avr/io1200.h> +#elif defined (__AVR_ATtiny15__) +# include <avr/iotn15.h> +#elif defined (__AVR_ATtiny12__) +# include <avr/iotn12.h> +#elif defined (__AVR_ATtiny11__) +# include <avr/iotn11.h> +#else +# if !defined(__COMPILING_AVR_LIBC__) +# warning "device type not defined" +# endif +#endif + +#include <avr/portpins.h> + +#include <avr/common.h> + +#include <avr/version.h> + +/* Include fuse.h after individual IO header files. */ +#include <avr/fuse.h> + +/* Include lock.h after individual IO header files. */ +#include <avr/lock.h> + +/** @} */ +#endif /* _AVR_IO_H_ */ |