|
- /*! \file avrlibdefs.h \brief AVRlib global defines and macros. */
- //*****************************************************************************
- //
- // File Name : 'avrlibdefs.h'
- // Title : AVRlib global defines and macros include file
- // Author : Pascal Stang
- // Created : 7/12/2001
- // Revised : 9/30/2002
- // Version : 1.1
- // Target MCU : Atmel AVR series
- // Editor Tabs : 4
- //
- // Description : This include file is designed to contain items useful to all
- // code files and projects, regardless of specific implementation.
- //
- // This code is distributed under the GNU Public License
- // which can be found at http://www.gnu.org/licenses/gpl.txt
- //
- //*****************************************************************************
-
-
- #ifndef AVRLIBDEFS_H
- #define AVRLIBDEFS_H
-
- //#define F_CPU 4000000
- #define MEM_TYPE 1
-
- // 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
-
- // 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) ((a<b)?(a):(b))
- #define MAX(a,b) ((a>b)?(a):(b))
- #define ABS(x) ((x>0)?(x):(-x))
-
- // constants
- #define PI 3.14159265359
-
- //Math
- #define sq(x) ((x)*(x))
- #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
-
- #endif
|