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_AT90PWM81__)
00071 # define _EEPROM_SUFFIX _90pwm81
00072 #elif defined (__AVR_ATmega16M1__)
00073 # define _EEPROM_SUFFIX _m16m1
00074 #elif defined (__AVR_ATmega8U2__)
00075 # define _EEPROM_SUFFIX _m8u2
00076 #elif defined (__AVR_ATmega16U2__)
00077 # define _EEPROM_SUFFIX _m16u2
00078 #elif defined (__AVR_ATmega16U4__)
00079 # define _EEPROM_SUFFIX _m16u4
00080 #elif defined (__AVR_ATmega32C1__)
00081 # define _EEPROM_SUFFIX _m32c1
00082 #elif defined (__AVR_ATmega32M1__)
00083 # define _EEPROM_SUFFIX _m32m1
00084 #elif defined (__AVR_ATmega32U2__)
00085 # define _EEPROM_SUFFIX _m32u2
00086 #elif defined (__AVR_ATmega32U4__)
00087 # define _EEPROM_SUFFIX _m32u4
00088 #elif defined (__AVR_ATmega32U6__)
00089 # define _EEPROM_SUFFIX _m32u6
00090 #elif defined (__AVR_ATmega64C1__)
00091 # define _EEPROM_SUFFIX _m64c1
00092 #elif defined (__AVR_ATmega64M1__)
00093 # define _EEPROM_SUFFIX _m64m1
00094 #elif defined (__AVR_ATmega128__)
00095 # define _EEPROM_SUFFIX _m128
00096 #elif defined (__AVR_ATmega1280__)
00097 # define _EEPROM_SUFFIX _m1280
00098 #elif defined (__AVR_ATmega1281__)
00099 # define _EEPROM_SUFFIX _m1281
00100 #elif defined (__AVR_ATmega1284P__)
00101 # define _EEPROM_SUFFIX _m1284p
00102 #elif defined (__AVR_ATmega128RFA1__)
00103 # define _EEPROM_SUFFIX _m128rfa1
00104 #elif defined (__AVR_ATmega2560__)
00105 # define _EEPROM_SUFFIX _m2560
00106 #elif defined (__AVR_ATmega2561__)
00107 # define _EEPROM_SUFFIX _m2561
00108 #elif defined (__AVR_AT90CAN32__)
00109 # define _EEPROM_SUFFIX _can32
00110 #elif defined (__AVR_AT90CAN64__)
00111 # define _EEPROM_SUFFIX _can64
00112 #elif defined (__AVR_AT90CAN128__)
00113 # define _EEPROM_SUFFIX _can128
00114 #elif defined (__AVR_AT90USB82__)
00115 # define _EEPROM_SUFFIX _usb82
00116 #elif defined (__AVR_AT90USB162__)
00117 # define _EEPROM_SUFFIX _usb162
00118 #elif defined (__AVR_AT90USB646__)
00119 # define _EEPROM_SUFFIX _usb646
00120 #elif defined (__AVR_AT90USB647__)
00121 # define _EEPROM_SUFFIX _usb647
00122 #elif defined (__AVR_AT90USB1286__)
00123 # define _EEPROM_SUFFIX _usb1286
00124 #elif defined (__AVR_AT90USB1287__)
00125 # define _EEPROM_SUFFIX _usb1287
00126 #elif defined (__AVR_ATmega64__)
00127 # define _EEPROM_SUFFIX _m64
00128 #elif defined (__AVR_ATmega640__)
00129 # define _EEPROM_SUFFIX _m640
00130 #elif defined (__AVR_ATmega644__)
00131 # define _EEPROM_SUFFIX _m644
00132 #elif defined (__AVR_ATmega644A__)
00133 # define _EEPROM_SUFFIX _m644a
00134 #elif defined (__AVR_ATmega644P__)
00135 # define _EEPROM_SUFFIX _m644p
00136 #elif defined (__AVR_ATmega644PA__)
00137 # define _EEPROM_SUFFIX _m644pa
00138 #elif defined (__AVR_ATmega645__)
00139 # define _EEPROM_SUFFIX _m645
00140 #elif defined (__AVR_ATmega645A__)
00141 # define _EEPROM_SUFFIX _m645a
00142 #elif defined (__AVR_ATmega645P__)
00143 # define _EEPROM_SUFFIX _m645p
00144 #elif defined (__AVR_ATmega6450__)
00145 # define _EEPROM_SUFFIX _m6450
00146 #elif defined (__AVR_ATmega6450A__)
00147 # define _EEPROM_SUFFIX _m6450a
00148 #elif defined (__AVR_ATmega6450P__)
00149 # define _EEPROM_SUFFIX _m6450p
00150 #elif defined (__AVR_ATmega649__)
00151 # define _EEPROM_SUFFIX _m649
00152 #elif defined (__AVR_ATmega649A__)
00153 # define _EEPROM_SUFFIX _m649a
00154 #elif defined (__AVR_ATmega649P__)
00155 # define _EEPROM_SUFFIX _m649p
00156 #elif defined (__AVR_ATmega6490__)
00157 # define _EEPROM_SUFFIX _m6490
00158 #elif defined (__AVR_ATmega6490A__)
00159 # define _EEPROM_SUFFIX _m6490a
00160 #elif defined (__AVR_ATmega6490P__)
00161 # define _EEPROM_SUFFIX _m6490p
00162 #elif defined (__AVR_ATmega103__)
00163 # define _EEPROM_SUFFIX _m103
00164 #elif defined (__AVR_ATmega32__)
00165 # define _EEPROM_SUFFIX _m32
00166 #elif defined (__AVR_ATmega323__)
00167 # define _EEPROM_SUFFIX _m323
00168 #elif defined (__AVR_ATmega324A__)
00169 # define _EEPROM_SUFFIX _m324a
00170 #elif defined (__AVR_ATmega324P__)
00171 # define _EEPROM_SUFFIX _m324p
00172 #elif defined (__AVR_ATmega324PA__)
00173 # define _EEPROM_SUFFIX _m324pa
00174 #elif defined (__AVR_ATmega325__)
00175 # define _EEPROM_SUFFIX _m325
00176 #elif defined (__AVR_ATmega325A__)
00177 # define _EEPROM_SUFFIX _m325a
00178 #elif defined (__AVR_ATmega325P__)
00179 # define _EEPROM_SUFFIX _m325p
00180 #elif defined (__AVR_ATmega3250__)
00181 # define _EEPROM_SUFFIX _m3250
00182 #elif defined (__AVR_ATmega3250A__)
00183 # define _EEPROM_SUFFIX _m3250a
00184 #elif defined (__AVR_ATmega3250P__)
00185 # define _EEPROM_SUFFIX _m3250p
00186 #elif defined (__AVR_ATmega328__)
00187 # define _EEPROM_SUFFIX _m328
00188 #elif defined (__AVR_ATmega328P__)
00189 # define _EEPROM_SUFFIX _m328p
00190 #elif defined (__AVR_ATmega329__)
00191 # define _EEPROM_SUFFIX _m329
00192 #elif defined (__AVR_ATmega329A__)
00193 # define _EEPROM_SUFFIX _m329a
00194 #elif defined (__AVR_ATmega329P__)
00195 # define _EEPROM_SUFFIX _m329p
00196 #elif defined (__AVR_ATmega329PA__)
00197 # define _EEPROM_SUFFIX _m329pa
00198 #elif defined (__AVR_ATmega3290__)
00199 # define _EEPROM_SUFFIX _m3290
00200 #elif defined (__AVR_ATmega3290A__)
00201 # define _EEPROM_SUFFIX _m3290a
00202 #elif defined (__AVR_ATmega3290P__)
00203 # define _EEPROM_SUFFIX _m3290p
00204 #elif defined (__AVR_ATmega32HVB__)
00205 # define _EEPROM_SUFFIX _m32hvb
00206 #elif defined (__AVR_ATmega32HVBREVB__)
00207 # define _EEPROM_SUFFIX _m32hvbrevb
00208 #elif defined (__AVR_ATmega64HVE__)
00209 # define _EEPROM_SUFFIX _m64hve
00210 #elif defined (__AVR_ATmega406__)
00211 # define _EEPROM_SUFFIX _m406
00212 #elif defined (__AVR_ATmega16__)
00213 # define _EEPROM_SUFFIX _m16
00214 #elif defined (__AVR_ATmega16A__)
00215 # define _EEPROM_SUFFIX _m16a
00216 #elif defined (__AVR_ATmega161__)
00217 # define _EEPROM_SUFFIX _m161
00218 #elif defined (__AVR_ATmega162__)
00219 # define _EEPROM_SUFFIX _m162
00220 #elif defined (__AVR_ATmega163__)
00221 # define _EEPROM_SUFFIX _m163
00222 #elif defined (__AVR_ATmega164__)
00223 # define _EEPROM_SUFFIX _m164
00224 #elif defined (__AVR_ATmega164P__)
00225 # define _EEPROM_SUFFIX _m164p
00226 #elif defined (__AVR_ATmega165__)
00227 # define _EEPROM_SUFFIX _m165
00228 #elif defined (__AVR_ATmega165A__)
00229 # define _EEPROM_SUFFIX _m165a
00230 #elif defined (__AVR_ATmega165P__)
00231 # define _EEPROM_SUFFIX _m165p
00232 #elif defined (__AVR_ATmega168__)
00233 # define _EEPROM_SUFFIX _m168
00234 #elif defined (__AVR_ATmega168A__)
00235 # define _EEPROM_SUFFIX _m168a
00236 #elif defined (__AVR_ATmega168P__)
00237 # define _EEPROM_SUFFIX _m168p
00238 #elif defined (__AVR_ATmega169__)
00239 # define _EEPROM_SUFFIX _m169
00240 #elif defined (__AVR_ATmega169A__)
00241 # define _EEPROM_SUFFIX _m169a
00242 #elif defined (__AVR_ATmega169P__)
00243 # define _EEPROM_SUFFIX _m169p
00244 #elif defined (__AVR_ATmega169PA__)
00245 # define _EEPROM_SUFFIX _m169pa
00246 #elif defined (__AVR_ATmega8HVA__)
00247 # define _EEPROM_SUFFIX _m8hva
00248 #elif defined (__AVR_ATmega16HVA__)
00249 # define _EEPROM_SUFFIX _m16hva
00250 #elif defined (__AVR_ATmega16HVA2__)
00251 # define _EEPROM_SUFFIX _m16hva2
00252 #elif defined (__AVR_ATmega16HVB__)
00253 # define _EEPROM_SUFFIX _m16hvb
00254 #elif defined (__AVR_ATmega16HVBREVB__)
00255 # define _EEPROM_SUFFIX _m16hvbrevb
00256 #elif defined (__AVR_ATmega8__)
00257 # define _EEPROM_SUFFIX _m8
00258 #elif defined (__AVR_ATmega48__)
00259 # define _EEPROM_SUFFIX _m48
00260 #elif defined (__AVR_ATmega48A__)
00261 # define _EEPROM_SUFFIX _m48a
00262 #elif defined (__AVR_ATmega48P__)
00263 # define _EEPROM_SUFFIX _m48p
00264 #elif defined (__AVR_ATmega88__)
00265 # define _EEPROM_SUFFIX _m88
00266 #elif defined (__AVR_ATmega88A__)
00267 # define _EEPROM_SUFFIX _m88a
00268 #elif defined (__AVR_ATmega88P__)
00269 # define _EEPROM_SUFFIX _m88p
00270 #elif defined (__AVR_ATmega88PA__)
00271 # define _EEPROM_SUFFIX _m88pa
00272 #elif defined (__AVR_ATmega8515__)
00273 # define _EEPROM_SUFFIX _m8515
00274 #elif defined (__AVR_ATmega8535__)
00275 # define _EEPROM_SUFFIX _m8535
00276 #elif defined (__AVR_AT90S8535__)
00277 # define _EEPROM_SUFFIX _8535
00278 #elif defined (__AVR_AT90C8534__)
00279 # define _EEPROM_SUFFIX _8534
00280 #elif defined (__AVR_AT90S8515__)
00281 # define _EEPROM_SUFFIX _8515
00282 #elif defined (__AVR_AT90S4434__)
00283 # define _EEPROM_SUFFIX _4434
00284 #elif defined (__AVR_AT90S4433__)
00285 # define _EEPROM_SUFFIX _4433
00286 #elif defined (__AVR_AT90S4414__)
00287 # define _EEPROM_SUFFIX _4414
00288 #elif defined (__AVR_ATtiny22__)
00289 # define _EEPROM_SUFFIX _tn22
00290 #elif defined (__AVR_ATtiny26__)
00291 # define _EEPROM_SUFFIX _tn26
00292 #elif defined (__AVR_AT90S2343__)
00293 # define _EEPROM_SUFFIX _2343
00294 #elif defined (__AVR_AT90S2333__)
00295 # define _EEPROM_SUFFIX _2333
00296 #elif defined (__AVR_AT90S2323__)
00297 # define _EEPROM_SUFFIX _2323
00298 #elif defined (__AVR_AT90S2313__)
00299 # define _EEPROM_SUFFIX _2313
00300 #elif defined (__AVR_ATtiny2313__)
00301 # define _EEPROM_SUFFIX _tn2313
00302 #elif defined (__AVR_ATtiny2313A__)
00303 # define _EEPROM_SUFFIX _tn2313a
00304 #elif defined (__AVR_ATtiny4313__)
00305 # define _EEPROM_SUFFIX _tn4313
00306 #elif defined (__AVR_ATtiny13__)
00307 # define _EEPROM_SUFFIX _tn13
00308 #elif defined (__AVR_ATtiny13A__)
00309 # define _EEPROM_SUFFIX _tn13a
00310 #elif defined (__AVR_ATtiny25__)
00311 # define _EEPROM_SUFFIX _tn25
00312 #elif defined (__AVR_ATtiny45__)
00313 # define _EEPROM_SUFFIX _tn45
00314 #elif defined (__AVR_ATtiny85__)
00315 # define _EEPROM_SUFFIX _tn85
00316 #elif defined (__AVR_ATtiny24__)
00317 # define _EEPROM_SUFFIX _tn24
00318 #elif defined (__AVR_ATtiny24A__)
00319 # define _EEPROM_SUFFIX _tn24a
00320 #elif defined (__AVR_ATtiny44__)
00321 # define _EEPROM_SUFFIX _tn44
00322 #elif defined (__AVR_ATtiny44A__)
00323 # define _EEPROM_SUFFIX _tn44a
00324 #elif defined (__AVR_ATtiny84__)
00325 # define _EEPROM_SUFFIX _tn84
00326 #elif defined (__AVR_ATtiny84A__)
00327 # define _EEPROM_SUFFIX _tn84a
00328 #elif defined (__AVR_ATtiny261__)
00329 # define _EEPROM_SUFFIX _tn261
00330 #elif defined (__AVR_ATtiny261A__)
00331 # define _EEPROM_SUFFIX _tn261a
00332 #elif defined (__AVR_ATtiny461__)
00333 # define _EEPROM_SUFFIX _tn461
00334 #elif defined (__AVR_ATtiny461A__)
00335 # define _EEPROM_SUFFIX _tn461a
00336 #elif defined (__AVR_ATtiny861__)
00337 # define _EEPROM_SUFFIX _tn861
00338 #elif defined (__AVR_ATtiny861A__)
00339 # define _EEPROM_SUFFIX _tn861a
00340 #elif defined (__AVR_ATtiny43U__)
00341 # define _EEPROM_SUFFIX _tn43u
00342 #elif defined (__AVR_ATtiny48__)
00343 # define _EEPROM_SUFFIX _tn48
00344 #elif defined (__AVR_ATtiny88__)
00345 # define _EEPROM_SUFFIX _tn88
00346 #elif defined (__AVR_ATtiny87__)
00347 # define _EEPROM_SUFFIX _tn87
00348 #elif defined (__AVR_ATtiny167__)
00349 # define _EEPROM_SUFFIX _tn167
00350 #elif defined (__AVR_AT90SCR100__)
00351 # define _EEPROM_SUFFIX _90scr100
00352 #elif defined (__AVR_ATxmega16A4__)
00353 # define _EEPROM_SUFFIX _x16a4
00354 #elif defined (__AVR_ATxmega16D4__)
00355 # define _EEPROM_SUFFIX _x16d4
00356 #elif defined (__AVR_ATxmega32A4__)
00357 # define _EEPROM_SUFFIX _x32a4
00358 #elif defined (__AVR_ATxmega32D4__)
00359 # define _EEPROM_SUFFIX _x32d4
00360 #elif defined (__AVR_ATxmega64A1__)
00361 # define _EEPROM_SUFFIX _x64a1
00362 #elif defined (__AVR_ATxmega64A1U__)
00363 # define _EEPROM_SUFFIX _x64a1u
00364 #elif defined (__AVR_ATxmega64A3__)
00365 # define _EEPROM_SUFFIX _x64a3
00366 #elif defined (__AVR_ATxmega64D3__)
00367 # define _EEPROM_SUFFIX _x64d3
00368 #elif defined (__AVR_ATxmega128A1__)
00369 # define _EEPROM_SUFFIX _x128a1
00370 #elif defined (__AVR_ATxmega128A1U__)
00371 # define _EEPROM_SUFFIX _x128a1u
00372 #elif defined (__AVR_ATxmega128A3__)
00373 # define _EEPROM_SUFFIX _x128a3
00374 #elif defined (__AVR_ATxmega128D3__)
00375 # define _EEPROM_SUFFIX _x128d3
00376 #elif defined (__AVR_ATxmega192A3__)
00377 # define _EEPROM_SUFFIX _x192a3
00378 #elif defined (__AVR_ATxmega192D3__)
00379 # define _EEPROM_SUFFIX _x192d3
00380 #elif defined (__AVR_ATxmega256A3__)
00381 # define _EEPROM_SUFFIX _x256a3
00382 #elif defined (__AVR_ATxmega256A3B__)
00383 # define _EEPROM_SUFFIX _x256a3b
00384 #elif defined (__AVR_ATxmega256D3__)
00385 # define _EEPROM_SUFFIX _x256d3
00386 #elif defined (__AVR_ATA6289__)
00387 # define _EEPROM_SUFFIX _a6289
00388
00389 #elif defined (__AVR_ATtiny28__)
00390 # define _EEPROM_SUFFIX _tn28
00391 #elif defined (__AVR_AT90S1200__)
00392 # define _EEPROM_SUFFIX _1200
00393 #elif defined (__AVR_ATtiny15__)
00394 # define _EEPROM_SUFFIX _tn15
00395 #elif defined (__AVR_ATtiny12__)
00396 # define _EEPROM_SUFFIX _tn12
00397 #elif defined (__AVR_ATtiny11__)
00398 # define _EEPROM_SUFFIX _tn11
00399 #else
00400 # define _EEPROM_SUFFIX _UNKNOWN
00401 #endif
00402
00403 #define _EEPROM_CONCAT1(s1, s2) s1 ## s2
00404 #define _EEPROM_CONCAT2(s1, s2) _EEPROM_CONCAT1 (s1, s2)
00405
00406 #define eeprom_read_byte _EEPROM_CONCAT2 (__eerd_byte, _EEPROM_SUFFIX)
00407 #define eeprom_read_word _EEPROM_CONCAT2 (__eerd_word, _EEPROM_SUFFIX)
00408 #define eeprom_read_dword _EEPROM_CONCAT2 (__eerd_dword, _EEPROM_SUFFIX)
00409 #define eeprom_read_float _EEPROM_CONCAT2 (__eerd_float, _EEPROM_SUFFIX)
00410 #define eeprom_read_block _EEPROM_CONCAT2 (__eerd_block, _EEPROM_SUFFIX)
00411
00412 #define eeprom_write_byte _EEPROM_CONCAT2 (__eewr_byte, _EEPROM_SUFFIX)
00413 #define eeprom_write_word _EEPROM_CONCAT2 (__eewr_word, _EEPROM_SUFFIX)
00414 #define eeprom_write_dword _EEPROM_CONCAT2 (__eewr_dword, _EEPROM_SUFFIX)
00415 #define eeprom_write_float _EEPROM_CONCAT2 (__eewr_float, _EEPROM_SUFFIX)
00416 #define eeprom_write_block _EEPROM_CONCAT2 (__eewr_block, _EEPROM_SUFFIX)
00417
00418 #define eeprom_update_byte _EEPROM_CONCAT2 (__eeupd_byte, _EEPROM_SUFFIX)
00419 #define eeprom_update_word _EEPROM_CONCAT2 (__eeupd_word, _EEPROM_SUFFIX)
00420 #define eeprom_update_dword _EEPROM_CONCAT2 (__eeupd_dword, _EEPROM_SUFFIX)
00421 #define eeprom_update_float _EEPROM_CONCAT2 (__eeupd_float, _EEPROM_SUFFIX)
00422 #define eeprom_update_block _EEPROM_CONCAT2 (__eeupd_block, _EEPROM_SUFFIX)
00423
00424 #endif
00425
00426 #ifndef __ASSEMBLER__
00427
00428 #include <stddef.h>
00429 #include <stdint.h>
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469 #ifdef __cplusplus
00470 extern "C" {
00471 #endif
00472
00473 #ifndef __ATTR_PURE__
00474 # ifdef __DOXYGEN__
00475 # define __ATTR_PURE__
00476 # else
00477 # define __ATTR_PURE__ __attribute__((__pure__))
00478 # endif
00479 #endif
00480
00481
00482
00483
00484
00485 #define EEMEM __attribute__((section(".eeprom")))
00486
00487
00488
00489
00490
00491 #if defined (__DOXYGEN__)
00492 # define eeprom_is_ready()
00493 #elif defined (__AVR_XMEGA__) && __AVR_XMEGA__
00494 # define eeprom_is_ready() bit_is_clear (NVM_STATUS, NVM_NVMBUSY_bp)
00495 #elif defined (DEECR)
00496 # define eeprom_is_ready() bit_is_clear (DEECR, BSY)
00497 #elif defined (EEPE)
00498 # define eeprom_is_ready() bit_is_clear (EECR, EEPE)
00499 #else
00500 # define eeprom_is_ready() bit_is_clear (EECR, EEWE)
00501 #endif
00502
00503
00504
00505
00506
00507
00508
00509 #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
00510
00511
00512
00513
00514
00515 uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__;
00516
00517
00518
00519
00520 uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__;
00521
00522
00523
00524
00525 uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__;
00526
00527
00528
00529
00530 float eeprom_read_float (const float *__p) __ATTR_PURE__;
00531
00532
00533
00534
00535
00536 void eeprom_read_block (void *__dst, const void *__src, size_t __n);
00537
00538
00539
00540
00541
00542 void eeprom_write_byte (uint8_t *__p, uint8_t __value);
00543
00544
00545
00546
00547 void eeprom_write_word (uint16_t *__p, uint16_t __value);
00548
00549
00550
00551
00552 void eeprom_write_dword (uint32_t *__p, uint32_t __value);
00553
00554
00555
00556
00557 void eeprom_write_float (float *__p, float __value);
00558
00559
00560
00561
00562
00563 void eeprom_write_block (const void *__src, void *__dst, size_t __n);
00564
00565
00566
00567
00568
00569 void eeprom_update_byte (uint8_t *__p, uint8_t __value);
00570
00571
00572
00573
00574 void eeprom_update_word (uint16_t *__p, uint16_t __value);
00575
00576
00577
00578
00579 void eeprom_update_dword (uint32_t *__p, uint32_t __value);
00580
00581
00582
00583
00584 void eeprom_update_float (float *__p, float __value);
00585
00586
00587
00588
00589
00590 void eeprom_update_block (const void *__src, void *__dst, size_t __n);
00591
00592
00593
00594
00595
00596
00597
00598
00599 #define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
00600
00601
00602
00603
00604 #define __EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
00605
00606
00607
00608
00609 #define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
00610
00611
00612
00613
00614 #define __EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
00615
00616
00617
00618 #ifdef __cplusplus
00619 }
00620 #endif
00621
00622 #endif
00623 #endif
00624 #endif