00001
00002
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 #ifndef _AVR_EEPROM_H_
00036 #define _AVR_EEPROM_H_ 1
00037
00038 #include <avr/io.h>
00039
00040 #if !E2END && !defined(__DOXYGEN__) && !defined(__COMPILING_AVR_LIBC__)
00041 # warning "Device does not have EEPROM available."
00042 #else
00043
00044 #ifndef __DOXYGEN__
00045
00046 #if defined (__AVR_AT94K__)
00047 # define _EEPROM_SUFFIX _at94k
00048 #elif defined (__AVR_AT43USB320__)
00049 # define _EEPROM_SUFFIX _43u320
00050 #elif defined (__AVR_AT43USB355__)
00051 # define _EEPROM_SUFFIX _43u355
00052 #elif defined (__AVR_AT76C711__)
00053 # define _EEPROM_SUFFIX _76c711
00054 #elif defined (__AVR_AT86RF401__)
00055 # define _EEPROM_SUFFIX _86r401
00056 #elif defined (__AVR_AT90PWM1__)
00057 # define _EEPROM_SUFFIX _90pwm1
00058 #elif defined (__AVR_AT90PWM2__)
00059 # define _EEPROM_SUFFIX _90pwm2
00060 #elif defined (__AVR_AT90PWM2B__)
00061 # define _EEPROM_SUFFIX _90pwm2b
00062 #elif defined (__AVR_AT90PWM3__)
00063 # define _EEPROM_SUFFIX _90pwm3
00064 #elif defined (__AVR_AT90PWM3B__)
00065 # define _EEPROM_SUFFIX _90pwm3b
00066 #elif defined (__AVR_AT90PWM216__)
00067 # define _EEPROM_SUFFIX _90pwm216
00068 #elif defined (__AVR_AT90PWM316__)
00069 # define _EEPROM_SUFFIX _90pwm316
00070 #elif defined (__AVR_AT90PWM161__)
00071 # define _EEPROM_SUFFIX _90pwm161
00072 #elif defined (__AVR_AT90PWM81__)
00073 # define _EEPROM_SUFFIX _90pwm81
00074 #elif defined (__AVR_ATmega16M1__)
00075 # define _EEPROM_SUFFIX _m16m1
00076 #elif defined (__AVR_ATmega8U2__)
00077 # define _EEPROM_SUFFIX _m8u2
00078 #elif defined (__AVR_ATmega16U2__)
00079 # define _EEPROM_SUFFIX _m16u2
00080 #elif defined (__AVR_ATmega16U4__)
00081 # define _EEPROM_SUFFIX _m16u4
00082 #elif defined (__AVR_ATmega32C1__)
00083 # define _EEPROM_SUFFIX _m32c1
00084 #elif defined (__AVR_ATmega32M1__)
00085 # define _EEPROM_SUFFIX _m32m1
00086 #elif defined (__AVR_ATmega32U2__)
00087 # define _EEPROM_SUFFIX _m32u2
00088 #elif defined (__AVR_ATmega32U4__)
00089 # define _EEPROM_SUFFIX _m32u4
00090 #elif defined (__AVR_ATmega32U6__)
00091 # define _EEPROM_SUFFIX _m32u6
00092 #elif defined (__AVR_ATmega64C1__)
00093 # define _EEPROM_SUFFIX _m64c1
00094 #elif defined (__AVR_ATmega64M1__)
00095 # define _EEPROM_SUFFIX _m64m1
00096 #elif defined (__AVR_ATmega128__)
00097 # define _EEPROM_SUFFIX _m128
00098 #elif defined (__AVR_ATmega128A__)
00099 # define _EEPROM_SUFFIX _m128a
00100 #elif defined (__AVR_ATmega1280__)
00101 # define _EEPROM_SUFFIX _m1280
00102 #elif defined (__AVR_ATmega1281__)
00103 # define _EEPROM_SUFFIX _m1281
00104 #elif defined (__AVR_ATmega1284__)
00105 # define _EEPROM_SUFFIX _m1284
00106 #elif defined (__AVR_ATmega1284P__)
00107 # define _EEPROM_SUFFIX _m1284p
00108 #elif defined (__AVR_ATmega128RFA1__)
00109 # define _EEPROM_SUFFIX _m128rfa1
00110 #elif defined (__AVR_ATmega128RFR2__)
00111 # define _EEPROM_SUFFIX _m128rfr2
00112 #elif defined (__AVR_ATmega1284RFR2__)
00113 # define _EEPROM_SUFFIX _m1284rfr2
00114 #elif defined (__AVR_ATmega256RFR2__)
00115 #elif defined (__AVR_ATmega2564RFR2__)
00116 # define _EEPROM_SUFFIX _m2564rfr2
00117 # define _EEPROM_SUFFIX _m256rfr2
00118 #elif defined (__AVR_ATmega2560__)
00119 # define _EEPROM_SUFFIX _m2560
00120 #elif defined (__AVR_ATmega2561__)
00121 # define _EEPROM_SUFFIX _m2561
00122 #elif defined (__AVR_AT90CAN32__)
00123 # define _EEPROM_SUFFIX _can32
00124 #elif defined (__AVR_AT90CAN64__)
00125 # define _EEPROM_SUFFIX _can64
00126 #elif defined (__AVR_AT90CAN128__)
00127 # define _EEPROM_SUFFIX _can128
00128 #elif defined (__AVR_AT90USB82__)
00129 # define _EEPROM_SUFFIX _usb82
00130 #elif defined (__AVR_AT90USB162__)
00131 # define _EEPROM_SUFFIX _usb162
00132 #elif defined (__AVR_AT90USB646__)
00133 # define _EEPROM_SUFFIX _usb646
00134 #elif defined (__AVR_AT90USB647__)
00135 # define _EEPROM_SUFFIX _usb647
00136 #elif defined (__AVR_AT90USB1286__)
00137 # define _EEPROM_SUFFIX _usb1286
00138 #elif defined (__AVR_AT90USB1287__)
00139 # define _EEPROM_SUFFIX _usb1287
00140 #elif defined (__AVR_ATmega64RFR2__)
00141 # define _EEPROM_SUFFIX _m64rfr2
00142 #elif defined (__AVR_ATmega644RFR2__)
00143 # define _EEPROM_SUFFIX _m644rfr2
00144 #elif defined (__AVR_ATmega64__)
00145 # define _EEPROM_SUFFIX _m64
00146 #elif defined (__AVR_ATmega64A__)
00147 # define _EEPROM_SUFFIX _m64a
00148 #elif defined (__AVR_ATmega640__)
00149 # define _EEPROM_SUFFIX _m640
00150 #elif defined (__AVR_ATmega644__)
00151 # define _EEPROM_SUFFIX _m644
00152 #elif defined (__AVR_ATmega644A__)
00153 # define _EEPROM_SUFFIX _m644a
00154 #elif defined (__AVR_ATmega644P__)
00155 # define _EEPROM_SUFFIX _m644p
00156 #elif defined (__AVR_ATmega644PA__)
00157 # define _EEPROM_SUFFIX _m644pa
00158 #elif defined (__AVR_ATmega645__)
00159 # define _EEPROM_SUFFIX _m645
00160 #elif defined (__AVR_ATmega645A__)
00161 # define _EEPROM_SUFFIX _m645a
00162 #elif defined (__AVR_ATmega645P__)
00163 # define _EEPROM_SUFFIX _m645p
00164 #elif defined (__AVR_ATmega6450__)
00165 # define _EEPROM_SUFFIX _m6450
00166 #elif defined (__AVR_ATmega6450A__)
00167 # define _EEPROM_SUFFIX _m6450a
00168 #elif defined (__AVR_ATmega6450P__)
00169 # define _EEPROM_SUFFIX _m6450p
00170 #elif defined (__AVR_ATmega649__)
00171 # define _EEPROM_SUFFIX _m649
00172 #elif defined (__AVR_ATmega649A__)
00173 # define _EEPROM_SUFFIX _m649a
00174 #elif defined (__AVR_ATmega649P__)
00175 # define _EEPROM_SUFFIX _m649p
00176 #elif defined (__AVR_ATmega6490__)
00177 # define _EEPROM_SUFFIX _m6490
00178 #elif defined (__AVR_ATmega6490A__)
00179 # define _EEPROM_SUFFIX _m6490a
00180 #elif defined (__AVR_ATmega6490P__)
00181 # define _EEPROM_SUFFIX _m6490p
00182 #elif defined (__AVR_ATmega103__)
00183 # define _EEPROM_SUFFIX _m103
00184 #elif defined (__AVR_ATmega32__)
00185 # define _EEPROM_SUFFIX _m32
00186 #elif defined (__AVR_ATmega32A__)
00187 # define _EEPROM_SUFFIX _m32a
00188 #elif defined (__AVR_ATmega323__)
00189 # define _EEPROM_SUFFIX _m323
00190 #elif defined (__AVR_ATmega324A__)
00191 # define _EEPROM_SUFFIX _m324a
00192 #elif defined (__AVR_ATmega324P__)
00193 # define _EEPROM_SUFFIX _m324p
00194 #elif defined (__AVR_ATmega324PA__)
00195 # define _EEPROM_SUFFIX _m324pa
00196 #elif defined (__AVR_ATmega325__)
00197 # define _EEPROM_SUFFIX _m325
00198 #elif defined (__AVR_ATmega325A__)
00199 # define _EEPROM_SUFFIX _m325a
00200 #elif defined (__AVR_ATmega325P__)
00201 # define _EEPROM_SUFFIX _m325p
00202 #elif defined (__AVR_ATmega325PA__)
00203 # define _EEPROM_SUFFIX _m325pa
00204 #elif defined (__AVR_ATmega3250__)
00205 # define _EEPROM_SUFFIX _m3250
00206 #elif defined (__AVR_ATmega3250A__)
00207 # define _EEPROM_SUFFIX _m3250a
00208 #elif defined (__AVR_ATmega3250P__)
00209 # define _EEPROM_SUFFIX _m3250p
00210 #elif defined (__AVR_ATmega3250PA__)
00211 # define _EEPROM_SUFFIX _m3250pa
00212 #elif defined (__AVR_ATmega328__)
00213 # define _EEPROM_SUFFIX _m328
00214 #elif defined (__AVR_ATmega328P__)
00215 # define _EEPROM_SUFFIX _m328p
00216 #elif defined (__AVR_ATmega329__)
00217 # define _EEPROM_SUFFIX _m329
00218 #elif defined (__AVR_ATmega329A__)
00219 # define _EEPROM_SUFFIX _m329a
00220 #elif defined (__AVR_ATmega329P__)
00221 # define _EEPROM_SUFFIX _m329p
00222 #elif defined (__AVR_ATmega329PA__)
00223 # define _EEPROM_SUFFIX _m329pa
00224 #elif defined (__AVR_ATmega3290__)
00225 # define _EEPROM_SUFFIX _m3290
00226 #elif defined (__AVR_ATmega3290A__)
00227 # define _EEPROM_SUFFIX _m3290a
00228 #elif defined (__AVR_ATmega3290P__)
00229 # define _EEPROM_SUFFIX _m3290p
00230 #elif defined (__AVR_ATmega3290PA__)
00231 # define _EEPROM_SUFFIX _m3290pa
00232 #elif defined (__AVR_ATmega32HVB__)
00233 # define _EEPROM_SUFFIX _m32hvb
00234 #elif defined (__AVR_ATmega32HVBrevB__)
00235 # define _EEPROM_SUFFIX _m32hvbrevb
00236 #elif defined (__AVR_ATmega64HVE__)
00237 # define _EEPROM_SUFFIX _m64hve
00238 #elif defined (__AVR_ATmega64HVE2__)
00239 # define _EEPROM_SUFFIX _m64hve2
00240 #elif defined (__AVR_ATmega406__)
00241 # define _EEPROM_SUFFIX _m406
00242 #elif defined (__AVR_ATmega16__)
00243 # define _EEPROM_SUFFIX _m16
00244 #elif defined (__AVR_ATmega16A__)
00245 # define _EEPROM_SUFFIX _m16a
00246 #elif defined (__AVR_ATmega161__)
00247 # define _EEPROM_SUFFIX _m161
00248 #elif defined (__AVR_ATmega162__)
00249 # define _EEPROM_SUFFIX _m162
00250 #elif defined (__AVR_ATmega163__)
00251 # define _EEPROM_SUFFIX _m163
00252 #elif defined (__AVR_ATmega164__)
00253 # define _EEPROM_SUFFIX _m164
00254 #elif defined (__AVR_ATmega164P__)
00255 # define _EEPROM_SUFFIX _m164p
00256 #elif defined (__AVR_ATmega164PA__)
00257 # define _EEPROM_SUFFIX _m164pa
00258 #elif defined (__AVR_ATmega165__)
00259 # define _EEPROM_SUFFIX _m165
00260 #elif defined (__AVR_ATmega165A__)
00261 # define _EEPROM_SUFFIX _m165a
00262 #elif defined (__AVR_ATmega165P__)
00263 # define _EEPROM_SUFFIX _m165p
00264 #elif defined (__AVR_ATmega165PA__)
00265 # define _EEPROM_SUFFIX _m165pa
00266 #elif defined (__AVR_ATmega168__)
00267 # define _EEPROM_SUFFIX _m168
00268 #elif defined (__AVR_ATmega168A__)
00269 # define _EEPROM_SUFFIX _m168a
00270 #elif defined (__AVR_ATmega168P__)
00271 # define _EEPROM_SUFFIX _m168p
00272 #elif defined (__AVR_ATmega168PA__)
00273 # define _EEPROM_SUFFIX _m168pa
00274 #elif defined (__AVR_ATmega169__)
00275 # define _EEPROM_SUFFIX _m169
00276 #elif defined (__AVR_ATmega169A__)
00277 # define _EEPROM_SUFFIX _m169a
00278 #elif defined (__AVR_ATmega169P__)
00279 # define _EEPROM_SUFFIX _m169p
00280 #elif defined (__AVR_ATmega169PA__)
00281 # define _EEPROM_SUFFIX _m169pa
00282 #elif defined (__AVR_ATmega8HVA__)
00283 # define _EEPROM_SUFFIX _m8hva
00284 #elif defined (__AVR_ATmega16HVA__)
00285 # define _EEPROM_SUFFIX _m16hva
00286 #elif defined (__AVR_ATmega16HVA2__)
00287 # define _EEPROM_SUFFIX _m16hva2
00288 #elif defined (__AVR_ATmega16HVB__)
00289 # define _EEPROM_SUFFIX _m16hvb
00290 #elif defined (__AVR_ATmega16HVBrevB__)
00291 # define _EEPROM_SUFFIX _m16hvbrevb
00292 #elif defined (__AVR_ATmega8__)
00293 # define _EEPROM_SUFFIX _m8
00294 #elif defined (__AVR_ATmega8A__)
00295 # define _EEPROM_SUFFIX _m8a
00296 #elif defined (__AVR_ATmega48__)
00297 # define _EEPROM_SUFFIX _m48
00298 #elif defined (__AVR_ATmega48A__)
00299 # define _EEPROM_SUFFIX _m48a
00300 #elif defined (__AVR_ATmega48PA__)
00301 # define _EEPROM_SUFFIX _m48pa
00302 #elif defined (__AVR_ATmega48P__)
00303 # define _EEPROM_SUFFIX _m48p
00304 #elif defined (__AVR_ATmega88__)
00305 # define _EEPROM_SUFFIX _m88
00306 #elif defined (__AVR_ATmega88A__)
00307 # define _EEPROM_SUFFIX _m88a
00308 #elif defined (__AVR_ATmega88P__)
00309 # define _EEPROM_SUFFIX _m88p
00310 #elif defined (__AVR_ATmega88PA__)
00311 # define _EEPROM_SUFFIX _m88pa
00312 #elif defined (__AVR_ATmega8515__)
00313 # define _EEPROM_SUFFIX _m8515
00314 #elif defined (__AVR_ATmega8535__)
00315 # define _EEPROM_SUFFIX _m8535
00316 #elif defined (__AVR_AT90S8535__)
00317 # define _EEPROM_SUFFIX _8535
00318 #elif defined (__AVR_AT90C8534__)
00319 # define _EEPROM_SUFFIX _8534
00320 #elif defined (__AVR_AT90S8515__)
00321 # define _EEPROM_SUFFIX _8515
00322 #elif defined (__AVR_AT90S4434__)
00323 # define _EEPROM_SUFFIX _4434
00324 #elif defined (__AVR_AT90S4433__)
00325 # define _EEPROM_SUFFIX _4433
00326 #elif defined (__AVR_AT90S4414__)
00327 # define _EEPROM_SUFFIX _4414
00328 #elif defined (__AVR_ATtiny22__)
00329 # define _EEPROM_SUFFIX _tn22
00330 #elif defined (__AVR_ATtiny26__)
00331 # define _EEPROM_SUFFIX _tn26
00332 #elif defined (__AVR_AT90S2343__)
00333 # define _EEPROM_SUFFIX _2343
00334 #elif defined (__AVR_AT90S2333__)
00335 # define _EEPROM_SUFFIX _2333
00336 #elif defined (__AVR_AT90S2323__)
00337 # define _EEPROM_SUFFIX _2323
00338 #elif defined (__AVR_AT90S2313__)
00339 # define _EEPROM_SUFFIX _2313
00340 #elif defined (__AVR_ATtiny2313__)
00341 # define _EEPROM_SUFFIX _tn2313
00342 #elif defined (__AVR_ATtiny2313A__)
00343 # define _EEPROM_SUFFIX _tn2313a
00344 #elif defined (__AVR_ATtiny4313__)
00345 # define _EEPROM_SUFFIX _tn4313
00346 #elif defined (__AVR_ATtiny13__)
00347 # define _EEPROM_SUFFIX _tn13
00348 #elif defined (__AVR_ATtiny13A__)
00349 # define _EEPROM_SUFFIX _tn13a
00350 #elif defined (__AVR_ATtiny25__)
00351 # define _EEPROM_SUFFIX _tn25
00352 #elif defined (__AVR_ATtiny45__)
00353 # define _EEPROM_SUFFIX _tn45
00354 #elif defined (__AVR_ATtiny85__)
00355 # define _EEPROM_SUFFIX _tn85
00356 #elif defined (__AVR_ATtiny24__)
00357 # define _EEPROM_SUFFIX _tn24
00358 #elif defined (__AVR_ATtiny24A__)
00359 # define _EEPROM_SUFFIX _tn24a
00360 #elif defined (__AVR_ATtiny44__)
00361 # define _EEPROM_SUFFIX _tn44
00362 #elif defined (__AVR_ATtiny44A__)
00363 # define _EEPROM_SUFFIX _tn44a
00364 #elif defined (__AVR_ATtiny441__)
00365 # define _EEPROM_SUFFIX _tn441
00366 #elif defined (__AVR_ATtiny84__)
00367 # define _EEPROM_SUFFIX _tn84
00368 #elif defined (__AVR_ATtiny84A__)
00369 # define _EEPROM_SUFFIX _tn84a
00370 #elif defined (__AVR_ATtiny841__)
00371 # define _EEPROM_SUFFIX _tn841
00372 #elif defined (__AVR_ATtiny261__)
00373 # define _EEPROM_SUFFIX _tn261
00374 #elif defined (__AVR_ATtiny261A__)
00375 # define _EEPROM_SUFFIX _tn261a
00376 #elif defined (__AVR_ATtiny461__)
00377 # define _EEPROM_SUFFIX _tn461
00378 #elif defined (__AVR_ATtiny461A__)
00379 # define _EEPROM_SUFFIX _tn461a
00380 #elif defined (__AVR_ATtiny861__)
00381 # define _EEPROM_SUFFIX _tn861
00382 #elif defined (__AVR_ATtiny861A__)
00383 # define _EEPROM_SUFFIX _tn861a
00384 #elif defined (__AVR_ATtiny43U__)
00385 # define _EEPROM_SUFFIX _tn43u
00386 #elif defined (__AVR_ATtiny48__)
00387 # define _EEPROM_SUFFIX _tn48
00388 #elif defined (__AVR_ATtiny828__)
00389 # define _EEPROM_SUFFIX _tn828
00390 #elif defined (__AVR_ATtiny88__)
00391 # define _EEPROM_SUFFIX _tn88
00392 #elif defined (__AVR_ATtiny87__)
00393 # define _EEPROM_SUFFIX _tn87
00394 #elif defined (__AVR_ATtiny167__)
00395 # define _EEPROM_SUFFIX _tn167
00396 #elif defined (__AVR_ATtiny1634__)
00397 # define _EEPROM_SUFFIX _tn1634
00398 #elif defined (__AVR_AT90SCR100__)
00399 # define _EEPROM_SUFFIX _90scr100
00400 #elif defined (__AVR_ATxmega16A4__)
00401 # define _EEPROM_SUFFIX _x16a4
00402 #elif defined (__AVR_ATxmega16A4U__)
00403 # define _EEPROM_SUFFIX _x16a4u
00404 #elif defined (__AVR_ATxmega16C4__)
00405 # define _EEPROM_SUFFIX _x16c4
00406 #elif defined (__AVR_ATxmega16D4__)
00407 # define _EEPROM_SUFFIX _x16d4
00408 #elif defined (__AVR_ATxmega32A4__)
00409 # define _EEPROM_SUFFIX _x32a4
00410 #elif defined (__AVR_ATxmega32A4U__)
00411 # define _EEPROM_SUFFIX _x32a4u
00412 #elif defined (__AVR_ATxmega32C3__)
00413 # define _EEPROM_SUFFIX _x32c3
00414 #elif defined (__AVR_ATxmega32C4__)
00415 # define _EEPROM_SUFFIX _x32c4
00416 #elif defined (__AVR_ATxmega32D3__)
00417 # define _EEPROM_SUFFIX _x32d3
00418 #elif defined (__AVR_ATxmega32D4__)
00419 # define _EEPROM_SUFFIX _x32d4
00420 #elif defined (__AVR_ATxmega8E5__)
00421 #define _EEPROM_SUFFIX _x8e5
00422 #elif defined (__AVR_ATxmega16E5__)
00423 #define _EEPROM_SUFFIX _x16e5
00424 #elif defined (__AVR_ATxmega32E5__)
00425 # define _EEPROM_SUFFIX _x32e5
00426 #elif defined (__AVR_ATxmega64A1__)
00427 # define _EEPROM_SUFFIX _x64a1
00428 #elif defined (__AVR_ATxmega64A1U__)
00429 # define _EEPROM_SUFFIX _x64a1u
00430 #elif defined (__AVR_ATxmega64A3__)
00431 # define _EEPROM_SUFFIX _x64a3
00432 #elif defined (__AVR_ATxmega64A3U__)
00433 # define _EEPROM_SUFFIX _x64a3u
00434 #elif defined (__AVR_ATxmega64A4U__)
00435 # define _EEPROM_SUFFIX _x64a4u
00436 #elif defined (__AVR_ATxmega64B1__)
00437 # define _EEPROM_SUFFIX _x64b1
00438 #elif defined (__AVR_ATxmega64B3__)
00439 # define _EEPROM_SUFFIX _x64b3
00440 #elif defined (__AVR_ATxmega64C3__)
00441 # define _EEPROM_SUFFIX _x64c3
00442 #elif defined (__AVR_ATxmega64D3__)
00443 # define _EEPROM_SUFFIX _x64d3
00444 #elif defined (__AVR_ATxmega64D4__)
00445 # define _EEPROM_SUFFIX _x64d4
00446 #elif defined (__AVR_ATxmega128A1__)
00447 # define _EEPROM_SUFFIX _x128a1
00448 #elif defined (__AVR_ATxmega128A1U__)
00449 # define _EEPROM_SUFFIX _x128a1u
00450 #elif defined (__AVR_ATxmega128A4U__)
00451 # define _EEPROM_SUFFIX _x128a4u
00452 #elif defined (__AVR_ATxmega128A3__)
00453 # define _EEPROM_SUFFIX _x128a3
00454 #elif defined (__AVR_ATxmega128A3U__)
00455 # define _EEPROM_SUFFIX _x128a3u
00456 #elif defined (__AVR_ATxmega128B1__)
00457 # define _EEPROM_SUFFIX _x128b1
00458 #elif defined (__AVR_ATxmega128B3__)
00459 # define _EEPROM_SUFFIX _x128b3
00460 #elif defined (__AVR_ATxmega128C3__)
00461 # define _EEPROM_SUFFIX _x128c3
00462 #elif defined (__AVR_ATxmega128D3__)
00463 # define _EEPROM_SUFFIX _x128d3
00464 #elif defined (__AVR_ATxmega128D4__)
00465 # define _EEPROM_SUFFIX _x128d4
00466 #elif defined (__AVR_ATxmega192A3__)
00467 # define _EEPROM_SUFFIX _x192a3
00468 #elif defined (__AVR_ATxmega192A3U__)
00469 # define _EEPROM_SUFFIX _x192a3u
00470 #elif defined (__AVR_ATxmega192C3__)
00471 # define _EEPROM_SUFFIX _x192c3
00472 #elif defined (__AVR_ATxmega192D3__)
00473 # define _EEPROM_SUFFIX _x192d3
00474 #elif defined (__AVR_ATxmega256A3__)
00475 # define _EEPROM_SUFFIX _x256a3
00476 #elif defined (__AVR_ATxmega256A3U__)
00477 # define _EEPROM_SUFFIX _x256a3u
00478 #elif defined (__AVR_ATxmega256A3B__)
00479 # define _EEPROM_SUFFIX _x256a3b
00480 #elif defined (__AVR_ATxmega256A3BU__)
00481 # define _EEPROM_SUFFIX _x256a3bu
00482 #elif defined (__AVR_ATxmega256C3__)
00483 # define _EEPROM_SUFFIX _x256c3
00484 #elif defined (__AVR_ATxmega256D3__)
00485 # define _EEPROM_SUFFIX _x256d3
00486 #elif defined (__AVR_ATxmega384C3__)
00487 # define _EEPROM_SUFFIX _x384c3
00488 #elif defined (__AVR_ATxmega384D3__)
00489 # define _EEPROM_SUFFIX _x384d3
00490 #elif defined (__AVR_ATA5505__)
00491 # define _EEPROM_SUFFIX _a5505
00492 #elif defined (__AVR_ATA5272__)
00493 # define _EEPROM_SUFFIX _a5272
00494 #elif defined (__AVR_ATA6285__)
00495 # define _EEPROM_SUFFIX _a6285
00496 #elif defined (__AVR_ATA6286__)
00497 # define _EEPROM_SUFFIX _a6286
00498 #elif defined (__AVR_ATA6289__)
00499 # define _EEPROM_SUFFIX _a6289
00500 #elif defined (__AVR_ATA5790__)
00501 # define _EEPROM_SUFFIX _a5790
00502 #elif defined (__AVR_ATA5790N__)
00503 # define _EEPROM_SUFFIX _a5790n
00504 #elif defined (__AVR_ATA5795__)
00505 # define _EEPROM_SUFFIX _a5795
00506 #elif defined (__AVR_ATA5702M322__)
00507 # define _EEPROM_SUFFIX _a5702m322
00508 #elif defined (__AVR_ATA5782__)
00509 # define _EEPROM_SUFFIX _a5782
00510 #elif defined (__AVR_ATA5831__)
00511 # define _EEPROM_SUFFIX _a5831
00512 #elif defined (__AVR_ATA6612C__)
00513 # define _EEPROM_SUFFIX _a6612c
00514 #elif defined (__AVR_ATA6613C__)
00515 # define _EEPROM_SUFFIX _a6613c
00516 #elif defined (__AVR_ATA6614Q__)
00517 # define _EEPROM_SUFFIX _a6614q
00518 #elif defined (__AVR_ATA6616C__)
00519 # define _EEPROM_SUFFIX _a6616c
00520 #elif defined (__AVR_ATA6617C__)
00521 # define _EEPROM_SUFFIX _a6617c
00522 #elif defined (__AVR_ATA664251__)
00523 # define _EEPROM_SUFFIX _a664251
00524
00525 #elif defined (__AVR_ATtiny28__)
00526 # define _EEPROM_SUFFIX _tn28
00527 #elif defined (__AVR_AT90S1200__)
00528 # define _EEPROM_SUFFIX _1200
00529 #elif defined (__AVR_ATtiny15__)
00530 # define _EEPROM_SUFFIX _tn15
00531 #elif defined (__AVR_ATtiny12__)
00532 # define _EEPROM_SUFFIX _tn12
00533 #elif defined (__AVR_ATtiny11__)
00534 # define _EEPROM_SUFFIX _tn11
00535 #else
00536 # define _EEPROM_SUFFIX _UNKNOWN
00537 #endif
00538
00539 #define _EEPROM_CONCAT1(s1, s2) s1 ## s2
00540 #define _EEPROM_CONCAT2(s1, s2) _EEPROM_CONCAT1 (s1, s2)
00541
00542 #define eeprom_read_byte _EEPROM_CONCAT2 (__eerd_byte, _EEPROM_SUFFIX)
00543 #define eeprom_read_word _EEPROM_CONCAT2 (__eerd_word, _EEPROM_SUFFIX)
00544 #define eeprom_read_dword _EEPROM_CONCAT2 (__eerd_dword, _EEPROM_SUFFIX)
00545 #define eeprom_read_float _EEPROM_CONCAT2 (__eerd_float, _EEPROM_SUFFIX)
00546 #define eeprom_read_block _EEPROM_CONCAT2 (__eerd_block, _EEPROM_SUFFIX)
00547
00548 #define eeprom_write_byte _EEPROM_CONCAT2 (__eewr_byte, _EEPROM_SUFFIX)
00549 #define eeprom_write_word _EEPROM_CONCAT2 (__eewr_word, _EEPROM_SUFFIX)
00550 #define eeprom_write_dword _EEPROM_CONCAT2 (__eewr_dword, _EEPROM_SUFFIX)
00551 #define eeprom_write_float _EEPROM_CONCAT2 (__eewr_float, _EEPROM_SUFFIX)
00552 #define eeprom_write_block _EEPROM_CONCAT2 (__eewr_block, _EEPROM_SUFFIX)
00553
00554 #define eeprom_update_byte _EEPROM_CONCAT2 (__eeupd_byte, _EEPROM_SUFFIX)
00555 #define eeprom_update_word _EEPROM_CONCAT2 (__eeupd_word, _EEPROM_SUFFIX)
00556 #define eeprom_update_dword _EEPROM_CONCAT2 (__eeupd_dword, _EEPROM_SUFFIX)
00557 #define eeprom_update_float _EEPROM_CONCAT2 (__eeupd_float, _EEPROM_SUFFIX)
00558 #define eeprom_update_block _EEPROM_CONCAT2 (__eeupd_block, _EEPROM_SUFFIX)
00559
00560 #endif
00561
00562 #ifndef __ASSEMBLER__
00563
00564 #include <stddef.h>
00565 #include <stdint.h>
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605 #ifdef __cplusplus
00606 extern "C" {
00607 #endif
00608
00609 #ifndef __ATTR_PURE__
00610 # ifdef __DOXYGEN__
00611 # define __ATTR_PURE__
00612 # else
00613 # define __ATTR_PURE__ __attribute__((__pure__))
00614 # endif
00615 #endif
00616
00617
00618
00619
00620
00621 #define EEMEM __attribute__((section(".eeprom")))
00622
00623
00624
00625
00626
00627 #if defined (__DOXYGEN__)
00628 # define eeprom_is_ready()
00629 #elif defined (__AVR_XMEGA__) && __AVR_XMEGA__
00630 # define eeprom_is_ready() bit_is_clear (NVM_STATUS, NVM_NVMBUSY_bp)
00631 #elif defined (DEECR)
00632 # define eeprom_is_ready() bit_is_clear (DEECR, BSY)
00633 #elif defined (EEPE)
00634 # define eeprom_is_ready() bit_is_clear (EECR, EEPE)
00635 #else
00636 # define eeprom_is_ready() bit_is_clear (EECR, EEWE)
00637 #endif
00638
00639
00640
00641
00642
00643
00644
00645 #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
00646
00647
00648
00649
00650
00651 uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__;
00652
00653
00654
00655
00656 uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__;
00657
00658
00659
00660
00661 uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__;
00662
00663
00664
00665
00666 float eeprom_read_float (const float *__p) __ATTR_PURE__;
00667
00668
00669
00670
00671
00672 void eeprom_read_block (void *__dst, const void *__src, size_t __n);
00673
00674
00675
00676
00677
00678 void eeprom_write_byte (uint8_t *__p, uint8_t __value);
00679
00680
00681
00682
00683 void eeprom_write_word (uint16_t *__p, uint16_t __value);
00684
00685
00686
00687
00688 void eeprom_write_dword (uint32_t *__p, uint32_t __value);
00689
00690
00691
00692
00693 void eeprom_write_float (float *__p, float __value);
00694
00695
00696
00697
00698
00699 void eeprom_write_block (const void *__src, void *__dst, size_t __n);
00700
00701
00702
00703
00704
00705 void eeprom_update_byte (uint8_t *__p, uint8_t __value);
00706
00707
00708
00709
00710 void eeprom_update_word (uint16_t *__p, uint16_t __value);
00711
00712
00713
00714
00715 void eeprom_update_dword (uint32_t *__p, uint32_t __value);
00716
00717
00718
00719
00720 void eeprom_update_float (float *__p, float __value);
00721
00722
00723
00724
00725
00726 void eeprom_update_block (const void *__src, void *__dst, size_t __n);
00727
00728
00729
00730
00731
00732
00733
00734
00735 #define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
00736
00737
00738
00739
00740 #define __EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
00741
00742
00743
00744
00745 #define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
00746
00747
00748
00749
00750 #define __EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
00751
00752
00753
00754 #ifdef __cplusplus
00755 }
00756 #endif
00757
00758 #endif
00759 #endif
00760 #endif