| Line No. | Rev | Author | Line |
|---|---|---|---|
| 1 | 6 | kaklik | /*! \file avrlibdefs.h \brief AVRlib global defines and macros. */ |
| 2 | //***************************************************************************** |
||
| 3 | // |
||
| 4 | // File Name : 'avrlibdefs.h' |
||
| 5 | // Title : AVRlib global defines and macros include file |
||
| 6 | // Author : Pascal Stang |
||
| 7 | // Created : 7/12/2001 |
||
| 8 | // Revised : 9/30/2002 |
||
| 9 | // Version : 1.1 |
||
| 10 | // Target MCU : Atmel AVR series |
||
| 11 | // Editor Tabs : 4 |
||
| 12 | // |
||
| 13 | // Description : This include file is designed to contain items useful to all |
||
| 14 | // code files and projects, regardless of specific implementation. |
||
| 15 | // |
||
| 16 | // This code is distributed under the GNU Public License |
||
| 17 | // which can be found at http://www.gnu.org/licenses/gpl.txt |
||
| 18 | // |
||
| 19 | //***************************************************************************** |
||
| 20 | |||
| 21 | |||
| 22 | #ifndef AVRLIBDEFS_H |
||
| 23 | #define AVRLIBDEFS_H |
||
| 24 | |||
| 25 | // Code compatibility to new AVR-libc |
||
| 26 | // outb(), inb(), inw(), outw(), BV(), sbi(), cbi(), sei(), cli() |
||
| 27 | #ifndef outb |
||
| 28 | #define outb(addr, data) addr = (data) |
||
| 29 | #endif |
||
| 30 | #ifndef inb |
||
| 31 | #define inb(addr) (addr) |
||
| 32 | #endif |
||
| 33 | #ifndef outw |
||
| 34 | #define outw(addr, data) addr = (data) |
||
| 35 | #endif |
||
| 36 | #ifndef inw |
||
| 37 | #define inw(addr) (addr) |
||
| 38 | #endif |
||
| 39 | #ifndef BV |
||
| 40 | #define BV(bit) (1<<(bit)) |
||
| 41 | #endif |
||
| 42 | #ifndef cbi |
||
| 43 | #define cbi(reg,bit) reg &= ~(BV(bit)) |
||
| 44 | #endif |
||
| 45 | #ifndef sbi |
||
| 46 | #define sbi(reg,bit) reg |= (BV(bit)) |
||
| 47 | #endif |
||
| 48 | #ifndef cli |
||
| 49 | #define cli() __asm__ __volatile__ ("cli" ::) |
||
| 50 | #endif |
||
| 51 | #ifndef sei |
||
| 52 | #define sei() __asm__ __volatile__ ("sei" ::) |
||
| 53 | #endif |
||
| 54 | |||
| 55 | // support for individual port pin naming in the mega128 |
||
| 56 | // see port128.h for details |
||
| 57 | #ifdef __AVR_ATmega128__ |
||
| 58 | // not currently necessary due to inclusion |
||
| 59 | // of these defines in newest AVR-GCC |
||
| 60 | // do a quick test to see if include is needed |
||
| 61 | #ifndef PD0 |
||
| 62 | #include "port128.h" |
||
| 63 | #endif |
||
| 64 | #endif |
||
| 65 | |||
| 66 | // use this for packed structures |
||
| 67 | // (this is seldom necessary on an 8-bit architecture like AVR, |
||
| 68 | // but can assist in code portability to AVR) |
||
| 69 | #define GNUC_PACKED __attribute__((packed)) |
||
| 70 | |||
| 71 | // port address helpers |
||
| 72 | #define DDR(x) ((x)-1) // address of data direction register of port x |
||
| 73 | #define PIN(x) ((x)-2) // address of input register of port x |
||
| 74 | |||
| 75 | // MIN/MAX/ABS macros |
||
| 76 | #define MIN(a,b) ((a<b)?(a):(b)) |
||
| 77 | #define MAX(a,b) ((a>b)?(a):(b)) |
||
| 78 | #define ABS(x) ((x>0)?(x):(-x)) |
||
| 79 | |||
| 80 | // constants |
||
| 81 | #define PI 3.14159265359 |
||
| 82 | |||
| 83 | #endif |
Powered by WebSVN v2.8.3