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