Rev Author Line No. Line
1269 kakl 1 /*! \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