00001 #ifndef _ARCH_AVR_GCC_H_
00002 #define _ARCH_AVR_GCC_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 #define CONST const
00061 #define INLINE inline
00062
00063
00064 #include <avr/io.h>
00065 #include <avr/interrupt.h>
00066 #if __AVR_LIBC_VERSION__ < 10400UL
00067 #include <avr/signal.h>
00068 #endif
00069 #include <avr/eeprom.h>
00070 #include <avr/pgmspace.h>
00071 #include <avr/sleep.h>
00072 #include <stdlib.h>
00073
00074
00075
00076
00077
00078
00079 #ifdef eeprom_rb
00080 #include <avr/twi.h>
00081 #else
00082 #include <compat/twi.h>
00083 #endif
00084
00085 #if defined(__AVR_ATmega2561__)
00086 #if !defined(TXC)
00087 #define TXC TXC0
00088 #endif
00089 #if !defined(TXB8)
00090 #define TXB8 TXB80
00091 #endif
00092 #if !defined(UMSEL)
00093 #define UMSEL UMSEL00
00094 #endif
00095 #if !defined(U2X)
00096 #define U2X U2X0
00097 #endif
00098 #if !defined(UCSZ0)
00099 #define UCSZ0 UCSZ00
00100 #endif
00101 #if !defined(UCSZ1)
00102 #define UCSZ1 UCSZ01
00103 #endif
00104 #if !defined(UCSZ2)
00105 #define UCSZ2 UCSZ02
00106 #endif
00107 #if !defined(UPM0)
00108 #define UPM0 UPM00
00109 #endif
00110 #if !defined(UPM1)
00111 #define UPM1 UPM01
00112 #endif
00113
00114 #if !defined(USBS)
00115 #define USBS USBS0
00116 #endif
00117 #if !defined(UPE)
00118 #define UPE UPE0
00119 #endif
00120 #if !defined(MPCM)
00121 #define MPCM MPCM0
00122 #endif
00123 #if !defined(UCPOL)
00124 #define UCPOL UCPOL0
00125 #endif
00126 #endif
00127
00128 #ifndef __SFR_OFFSET
00129 #define __SFR_OFFSET 0
00130 #endif
00131
00132 #define COMPRESS_DISABLE
00133 #define COMPRESS_REENABLE
00134
00135 #ifndef _NOP
00136 #define _NOP() __asm__ __volatile__ ("nop")
00137 #endif
00138
00139 #ifndef atof
00140 #define atof(s) strtod(s, 0)
00141 #endif
00142
00143 #define EEPROMReadBytes(addr, ptr, size) eeprom_read_block((char *)(addr), ptr, size)
00144
00147 #define EEPROM_READ(addr, dst) eeprom_read_block((char *)(addr), &dst, sizeof(dst))
00148 #define EEPROMread(addr) eeprom_read_byte((char *)(addr))
00149
00153 #define EEPROM_WRITE(addr, src) \
00154 { \
00155 unsigned short __i; \
00156 for(__i = 0; __i < sizeof(src); __i++) \
00157 eeprom_write_byte(((char *)(addr)) + __i, *(((char *)(&(src))) + __i)); \
00158 }
00159
00160 #define EEPROMWriteBytes(addr, ptr, size) \
00161 { \
00162 unsigned short __i; \
00163 for(__i = 0; __i < size; __i++) \
00164 eeprom_write_byte(((char *)(addr)) + __i, *(((char *)(ptr)) + __i)); \
00165 }
00166
00167 #define main NutAppMain
00168
00169
00170 #ifndef _SLEEP_MODE_MASK
00171 #if defined(SM) && !defined(SM0) && !defined(SM1) && !defined(SM2)
00172 #define _SLEEP_MODE_MASK _BV(SM)
00173 #elif !defined(SM) && defined(SM0) && defined(SM1) && !defined(SM2)
00174 #define _SLEEP_MODE_MASK (_BV(SM0) | _BV(SM1))
00175 #elif !defined(SM) && defined(SM0) && defined(SM1) && defined(SM2)
00176 #define _SLEEP_MODE_MASK (_BV(SM0) | _BV(SM1) | _BV(SM2))
00177 #endif
00178 #endif
00179
00180 #endif
00181