diff options
Diffstat (limited to 'cpukit/score/cpu/avr/avr/io86r401.h')
-rw-r--r-- | cpukit/score/cpu/avr/avr/io86r401.h | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/cpukit/score/cpu/avr/avr/io86r401.h b/cpukit/score/cpu/avr/avr/io86r401.h new file mode 100644 index 0000000000..5fa29c25b4 --- /dev/null +++ b/cpukit/score/cpu/avr/avr/io86r401.h @@ -0,0 +1,308 @@ +/* Copyright (c) 2002, Colin O'Flynn + 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. */ + +/* avr/io86r401.h - definitions for AT86RF401 */ + +#ifndef _AVR_IO86RF401_H_ +#define _AVR_IO86RF401_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_ "io86r401.h" +#else +# error "Attempt to include more than one <avr/ioXXX.h> file." +#endif + +#include <avr/sfr_defs.h> + +/* Status REGister */ +#define SREG _SFR_IO8(0x3F) + +/* Stack Pointer */ +#define SP _SFR_IO16(0x3D) +#define SPH _SFR_IO8(0x3E) +#define SPL _SFR_IO8(0x3D) + +/*Battery low configeration register */ +#define BL_CONFIG _SFR_IO8(0x35) + +/*Button detect register*/ +#define B_DET _SFR_IO8(0x34) + +/*AVR Configeration register*/ +#define AVR_CONFIG _SFR_IO8(0x33) + +/* I/O registers */ + +/*Data in register */ +#define IO_DATIN _SFR_IO8(0x32) + +/*Data out register */ +#define IO_DATOUT _SFR_IO8(0x31) + +/*IO Enable register */ +#define IO_ENAB _SFR_IO8(0x30) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x22) + +/* Bit Timer Control Register */ +#define BTCR _SFR_IO8(0x21) + +#define BTCNT _SFR_IO8(0x20) + +/* +NOTE: EEPROM name's changed to have D in front on them, per datasheet, but +you may want to remove the leading D. +*/ +/* EEPROM Control Register */ + +/* EEPROM Address Register */ +#define DEEAR _SFR_IO8(0x1E) +#define DEEARL _SFR_IO8(0x1E) + +/* EEPROM Data Register */ +#define DEEDR _SFR_IO8(0x1D) +/* EEPROM Control Register */ +#define DEECR _SFR_IO8(0x1C) + +/* Lock Detector Configuration Register 2 */ +#define LOCKDET2 _SFR_IO8(0x17) + +/* VCO Tuning Register*/ +#define VCOTUNE _SFR_IO8(0x16) + +/* Power Attenuation Control Register */ +#define PWR_ATTEN _SFR_IO8(0x14) + +/* Transmitter Control Register */ +#define TX_CNTL _SFR_IO8(0x12) + +/* Lock Detector Configuration Register 1 */ +#define LOCKDET1 _SFR_IO8(0x10) + + +/* Interrupt vectors */ + +/* Transmission Done, Bit Timer Flag 2 Interrupt */ +#define TXDONE_vect _VECTOR(1) +#define SIG_TXDONE _VECTOR(1) + +/* Transmit Buffer Empty, Bit Itmer Flag 0 Interrupt */ +#define TXEMPTY_vect _VECTOR(2) +#define SIG_TXBE _VECTOR(2) + +#define _VECTORS_SIZE 12 + +/* + * The Register Bit names are represented by their bit number (0-7). + */ + +/* Lock Detector Configuration Register 1 - LOCKDET1 */ +#define UPOK 4 +#define ENKO 3 +#define BOD 2 +#define CS1 1 +#define CS0 0 + +/* Transmit Control Register - TX_CNTL */ +#define TXE 5 +#define TXK 4 +#define LOC 2 + +/* Power Attenuation Control Register - PWR_ATTEN */ +#define PCC2 5 +#define PCC1 4 +#define PCC0 3 +#define PCF2 2 +#define PCF1 1 +#define PCF0 0 + +/* VCO Tuning Register 6 - VCOTUNE --NOTE: [] removed from names*/ +#define VCOVDET1 7 +#define VCOVDET0 6 +#define VCOTUNE4 4 +#define VCOTUNE3 3 +#define VCOTUNE2 2 +#define VCOTUNE1 1 +#define VCOTUNE0 0 + +/* Lock Detector Configuration Register 2 - LOCKDET2 --NOTE: [] removed from names*/ +#define EUD 7 +#define LAT 6 +#define ULC2 5 +#define ULC1 4 +#define ULC0 3 +#define LC2 2 +#define LC1 1 +#define LC0 0 + +/* Data EEPROM Control Register - DEECR */ +#define BSY 3 +#define EEU 2 +#define EEL 1 +#define EER 0 + +/* Data EEPROM Data Register - DEEDR */ +#define ED7 7 +#define ED6 6 +#define ED5 5 +#define ED4 4 +#define ED3 3 +#define ED2 2 +#define ED1 1 +#define ED0 0 + +/* Data EEPROM Address Register - DEEAR */ +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define BA2 2 /* B is not a typo! */ +#define BA1 1 +#define BA0 0 + +/* Bit Timer Count Register - BTCNT */ +#define C7 7 +#define C6 6 +#define C5 5 +#define C4 4 +#define C3 3 +#define C2 2 +#define C1 1 +#define C0 0 + +/* Bit Timer Control Register - BTCR */ +#define C9 7 +#define C8 6 +#define M1 5 +#define M0 4 +#define IE 3 +#define F2 2 +#define DATA 1 +#define F0 0 + +/* Watchdog Timer Control Register - WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* I/O Enable Register - IO_ENAB */ +#define BOHYST 6 +#define IOE5 5 +#define IOE4 4 +#define IOE3 3 +#define IOE2 2 +#define IOE1 1 +#define IOE0 0 + +/* Note: No PORTB or whatever, this is the equivalent. */ +/* I/O Data Out Register - IO_DATOUT */ +#define IOO5 5 +#define IOO4 4 +#define IOO3 3 +#define IOO2 2 +#define IOO1 1 +#define IOO0 0 + +/* Note: No PINB or whatever, this is the equivalent. */ +/* I/O Data In Register - IO_DATIN */ +#define IOI5 5 +#define IOI4 4 +#define IOI3 3 +#define IOI2 2 +#define IOI1 1 +#define IOI0 0 + +/* AVR Configuration Register - AVR_CONFIG */ +#define ACS1 6 +#define ACS0 5 +#define TM 4 +#define BD 3 +#define BLI 2 +#define SLEEP 1 +#define BBM 0 + +/* Button Detect Register - B_DET */ +#define BD5 5 +#define BD4 4 +#define BD3 3 +#define BD2 2 +#define BD1 1 +#define BD0 0 + +/* Battery Low Configuration Register - BL_CONFIG */ +#define BL 7 +#define BLV 6 +#define BL5 5 +#define BL4 4 +#define BL3 3 +#define BL2 2 +#define BL1 1 +#define BL0 0 + +/* Pointer definition */ +#define XL r26 +#define XH r27 +#define YL r28 +#define YH r29 +#define ZL r30 +#define ZH r31 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND RAMEND +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 0 + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x81 + + +#endif /* _AVR_IO86RF401_H_ */ |