// // avrlibdefs.h : AVRlib global defines and macros include file // // Copyright (c) 2001-2002 Pascal Stang // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ #ifndef AVRLIBDEFS_H #define AVRLIBDEFS_H // Code compatibility to new AVR-libc // outb(), inb(), inw(), outw(), BV(), sbi(), cbi(), sei(), cli() #ifndef outb #define outb(addr, data) addr = (data) #endif #ifndef inb #define inb(addr) (addr) #endif #ifndef outw #define outw(addr, data) addr = (data) #endif #ifndef inw #define inw(addr) (addr) #endif #ifndef BV #define BV(bit) (1<<(bit)) #endif #ifndef cbi #define cbi(reg,bit) reg &= ~(BV(bit)) #endif #ifndef sbi #define sbi(reg,bit) reg |= (BV(bit)) #endif #ifndef cli #define cli() __asm__ __volatile__ ("cli" ::) #endif #ifndef sei #define sei() __asm__ __volatile__ ("sei" ::) #endif // support for individual port pin naming in the mega128 // see port128.h for details #ifdef __AVR_ATmega128__ // not currently necessary due to inclusion // of these defines in newest AVR-GCC // do a quick test to see if include is needed #ifndef PD0 #include "port128.h" #endif #endif // use this for packed structures // (this is seldom necessary on an 8-bit architecture like AVR, // but can assist in code portability to AVR) #define GNUC_PACKED __attribute__((packed)) // port address helpers #define DDR(x) ((x)-1) // address of data direction register of port x #define PIN(x) ((x)-2) // address of input register of port x // MIN/MAX/ABS macros #define MIN(a,b) ((ab)?(a):(b)) #define ABS(x) ((x>0)?(x):(-x)) // constants #define PI 3.14159265359 #endif