RTEMS CPU Kit with SuperCore
score/cpu/avr/avr/eeprom.h
Go to the documentation of this file.
1 
41 /*
42  * Copyright (c) 2002, 2003, 2004, 2007 Marek Michalkiewicz
43  * Copyright (c) 2005, 2006 Bjoern Haase
44  * Copyright (c) 2008 Atmel Corporation
45  * Copyright (c) 2008 Wouter van Gulik
46  * Copyright (c) 2009 Dmitry Xmelkov
47  * All rights reserved.
48  *
49  * Redistribution and use in source and binary forms, with or without
50  * modification, are permitted provided that the following conditions are met:
51  *
52  * * Redistributions of source code must retain the above copyright
53  * notice, this list of conditions and the following disclaimer.
54  *
55  * * Redistributions in binary form must reproduce the above copyright
56  * notice, this list of conditions and the following disclaimer in
57  * the documentation and/or other materials provided with the
58  * distribution.
59  *
60  * * Neither the name of the copyright holders nor the names of
61  * contributors may be used to endorse or promote products derived
62  * from this software without specific prior written permission.
63  *
64  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
65  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
66  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
67  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
68  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
69  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
70  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
71  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
72  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
73  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
74  * POSSIBILITY OF SUCH DAMAGE.
75  */
76 
77 
78 #ifndef _AVR_EEPROM_H_
79 #define _AVR_EEPROM_H_ 1
80 
81 #include <avr/io.h>
82 
83 #if !E2END && !defined(__DOXYGEN__) && !defined(__COMPILING_AVR_LIBC__)
84 # warning "Device does not have EEPROM available."
85 #else
86 
87 #ifndef __DOXYGEN__
88 
89 #if defined (__AVR_AT94K__)
90 # define _EEPROM_SUFFIX _at94k
91 #elif defined (__AVR_AT43USB320__)
92 # define _EEPROM_SUFFIX _43u320
93 #elif defined (__AVR_AT43USB355__)
94 # define _EEPROM_SUFFIX _43u355
95 #elif defined (__AVR_AT76C711__)
96 # define _EEPROM_SUFFIX _76c711
97 #elif defined (__AVR_AT86RF401__)
98 # define _EEPROM_SUFFIX _86r401
99 #elif defined (__AVR_AT90PWM1__)
100 # define _EEPROM_SUFFIX _90pwm1
101 #elif defined (__AVR_AT90PWM2__)
102 # define _EEPROM_SUFFIX _90pwm2
103 #elif defined (__AVR_AT90PWM2B__)
104 # define _EEPROM_SUFFIX _90pwm2b
105 #elif defined (__AVR_AT90PWM3__)
106 # define _EEPROM_SUFFIX _90pwm3
107 #elif defined (__AVR_AT90PWM3B__)
108 # define _EEPROM_SUFFIX _90pwm3b
109 #elif defined (__AVR_AT90PWM216__)
110 # define _EEPROM_SUFFIX _90pwm216
111 #elif defined (__AVR_AT90PWM316__)
112 # define _EEPROM_SUFFIX _90pwm316
113 #elif defined (__AVR_AT90PWM81__)
114 # define _EEPROM_SUFFIX _90pwm81
115 #elif defined (__AVR_ATmega16M1__)
116 # define _EEPROM_SUFFIX _m16m1
117 #elif defined (__AVR_ATmega8U2__)
118 # define _EEPROM_SUFFIX _m8u2
119 #elif defined (__AVR_ATmega16U2__)
120 # define _EEPROM_SUFFIX _m16u2
121 #elif defined (__AVR_ATmega16U4__)
122 # define _EEPROM_SUFFIX _m16u4
123 #elif defined (__AVR_ATmega32C1__)
124 # define _EEPROM_SUFFIX _m32c1
125 #elif defined (__AVR_ATmega32M1__)
126 # define _EEPROM_SUFFIX _m32m1
127 #elif defined (__AVR_ATmega32U2__)
128 # define _EEPROM_SUFFIX _m32u2
129 #elif defined (__AVR_ATmega32U4__)
130 # define _EEPROM_SUFFIX _m32u4
131 #elif defined (__AVR_ATmega32U6__)
132 # define _EEPROM_SUFFIX _m32u6
133 #elif defined (__AVR_ATmega64C1__)
134 # define _EEPROM_SUFFIX _m64c1
135 #elif defined (__AVR_ATmega64M1__)
136 # define _EEPROM_SUFFIX _m64m1
137 #elif defined (__AVR_ATmega128__)
138 # define _EEPROM_SUFFIX _m128
139 #elif defined (__AVR_ATmega1280__)
140 # define _EEPROM_SUFFIX _m1280
141 #elif defined (__AVR_ATmega1281__)
142 # define _EEPROM_SUFFIX _m1281
143 #elif defined (__AVR_ATmega1284P__)
144 # define _EEPROM_SUFFIX _m1284p
145 #elif defined (__AVR_ATmega128RFA1__)
146 # define _EEPROM_SUFFIX _m128rfa1
147 #elif defined (__AVR_ATmega2560__)
148 # define _EEPROM_SUFFIX _m2560
149 #elif defined (__AVR_ATmega2561__)
150 # define _EEPROM_SUFFIX _m2561
151 #elif defined (__AVR_AT90CAN32__)
152 # define _EEPROM_SUFFIX _can32
153 #elif defined (__AVR_AT90CAN64__)
154 # define _EEPROM_SUFFIX _can64
155 #elif defined (__AVR_AT90CAN128__)
156 # define _EEPROM_SUFFIX _can128
157 #elif defined (__AVR_AT90USB82__)
158 # define _EEPROM_SUFFIX _usb82
159 #elif defined (__AVR_AT90USB162__)
160 # define _EEPROM_SUFFIX _usb162
161 #elif defined (__AVR_AT90USB646__)
162 # define _EEPROM_SUFFIX _usb646
163 #elif defined (__AVR_AT90USB647__)
164 # define _EEPROM_SUFFIX _usb647
165 #elif defined (__AVR_AT90USB1286__)
166 # define _EEPROM_SUFFIX _usb1286
167 #elif defined (__AVR_AT90USB1287__)
168 # define _EEPROM_SUFFIX _usb1287
169 #elif defined (__AVR_ATmega64__)
170 # define _EEPROM_SUFFIX _m64
171 #elif defined (__AVR_ATmega640__)
172 # define _EEPROM_SUFFIX _m640
173 #elif defined (__AVR_ATmega644__)
174 # define _EEPROM_SUFFIX _m644
175 #elif defined (__AVR_ATmega644A__)
176 # define _EEPROM_SUFFIX _m644a
177 #elif defined (__AVR_ATmega644P__)
178 # define _EEPROM_SUFFIX _m644p
179 #elif defined (__AVR_ATmega644PA__)
180 # define _EEPROM_SUFFIX _m644pa
181 #elif defined (__AVR_ATmega645__)
182 # define _EEPROM_SUFFIX _m645
183 #elif defined (__AVR_ATmega645A__)
184 # define _EEPROM_SUFFIX _m645a
185 #elif defined (__AVR_ATmega645P__)
186 # define _EEPROM_SUFFIX _m645p
187 #elif defined (__AVR_ATmega6450__)
188 # define _EEPROM_SUFFIX _m6450
189 #elif defined (__AVR_ATmega6450A__)
190 # define _EEPROM_SUFFIX _m6450a
191 #elif defined (__AVR_ATmega6450P__)
192 # define _EEPROM_SUFFIX _m6450p
193 #elif defined (__AVR_ATmega649__)
194 # define _EEPROM_SUFFIX _m649
195 #elif defined (__AVR_ATmega649A__)
196 # define _EEPROM_SUFFIX _m649a
197 #elif defined (__AVR_ATmega649P__)
198 # define _EEPROM_SUFFIX _m649p
199 #elif defined (__AVR_ATmega6490__)
200 # define _EEPROM_SUFFIX _m6490
201 #elif defined (__AVR_ATmega6490A__)
202 # define _EEPROM_SUFFIX _m6490a
203 #elif defined (__AVR_ATmega6490P__)
204 # define _EEPROM_SUFFIX _m6490p
205 #elif defined (__AVR_ATmega103__)
206 # define _EEPROM_SUFFIX _m103
207 #elif defined (__AVR_ATmega32__)
208 # define _EEPROM_SUFFIX _m32
209 #elif defined (__AVR_ATmega323__)
210 # define _EEPROM_SUFFIX _m323
211 #elif defined (__AVR_ATmega324A__)
212 # define _EEPROM_SUFFIX _m324a
213 #elif defined (__AVR_ATmega324P__)
214 # define _EEPROM_SUFFIX _m324p
215 #elif defined (__AVR_ATmega324PA__)
216 # define _EEPROM_SUFFIX _m324pa
217 #elif defined (__AVR_ATmega325__)
218 # define _EEPROM_SUFFIX _m325
219 #elif defined (__AVR_ATmega325P__)
220 # define _EEPROM_SUFFIX _m325p
221 #elif defined (__AVR_ATmega3250__)
222 # define _EEPROM_SUFFIX _m3250
223 #elif defined (__AVR_ATmega3250P__)
224 # define _EEPROM_SUFFIX _m3250p
225 #elif defined (__AVR_ATmega328__)
226 # define _EEPROM_SUFFIX _m328
227 #elif defined (__AVR_ATmega328P__)
228 # define _EEPROM_SUFFIX _m328p
229 #elif defined (__AVR_ATmega329__)
230 # define _EEPROM_SUFFIX _m329
231 #elif defined (__AVR_ATmega329P__)
232 # define _EEPROM_SUFFIX _m329p
233 #elif defined (__AVR_ATmega329PA__)
234 # define _EEPROM_SUFFIX _m329pa
235 #elif defined (__AVR_ATmega3290__)
236 # define _EEPROM_SUFFIX _m3290
237 #elif defined (__AVR_ATmega3290P__)
238 # define _EEPROM_SUFFIX _m3290p
239 #elif defined (__AVR_ATmega32HVB__)
240 # define _EEPROM_SUFFIX _m32hvb
241 #elif defined (__AVR_ATmega64HVE__)
242 # define _EEPROM_SUFFIX _m64hve
243 #elif defined (__AVR_ATmega406__)
244 # define _EEPROM_SUFFIX _m406
245 #elif defined (__AVR_ATmega16__)
246 # define _EEPROM_SUFFIX _m16
247 #elif defined (__AVR_ATmega16A__)
248 # define _EEPROM_SUFFIX _m16a
249 #elif defined (__AVR_ATmega161__)
250 # define _EEPROM_SUFFIX _m161
251 #elif defined (__AVR_ATmega162__)
252 # define _EEPROM_SUFFIX _m162
253 #elif defined (__AVR_ATmega163__)
254 # define _EEPROM_SUFFIX _m163
255 #elif defined (__AVR_ATmega164__)
256 # define _EEPROM_SUFFIX _m164
257 #elif defined (__AVR_ATmega164P__)
258 # define _EEPROM_SUFFIX _m164p
259 #elif defined (__AVR_ATmega165__)
260 # define _EEPROM_SUFFIX _m165
261 #elif defined (__AVR_ATmega165A__)
262 # define _EEPROM_SUFFIX _m165a
263 #elif defined (__AVR_ATmega165P__)
264 # define _EEPROM_SUFFIX _m165p
265 #elif defined (__AVR_ATmega168__)
266 # define _EEPROM_SUFFIX _m168
267 #elif defined (__AVR_ATmega168A__)
268 # define _EEPROM_SUFFIX _m168a
269 #elif defined (__AVR_ATmega168P__)
270 # define _EEPROM_SUFFIX _m168p
271 #elif defined (__AVR_ATmega169__)
272 # define _EEPROM_SUFFIX _m169
273 #elif defined (__AVR_ATmega169A__)
274 # define _EEPROM_SUFFIX _m169a
275 #elif defined (__AVR_ATmega169P__)
276 # define _EEPROM_SUFFIX _m169p
277 #elif defined (__AVR_ATmega169PA__)
278 # define _EEPROM_SUFFIX _m169pa
279 #elif defined (__AVR_ATmega8HVA__)
280 # define _EEPROM_SUFFIX _m8hva
281 #elif defined (__AVR_ATmega16HVA__)
282 # define _EEPROM_SUFFIX _m16hva
283 #elif defined (__AVR_ATmega16HVA2__)
284 # define _EEPROM_SUFFIX _m16hva2
285 #elif defined (__AVR_ATmega16HVB__)
286 # define _EEPROM_SUFFIX _m16hvb
287 #elif defined (__AVR_ATmega8__)
288 # define _EEPROM_SUFFIX _m8
289 #elif defined (__AVR_ATmega48__)
290 # define _EEPROM_SUFFIX _m48
291 #elif defined (__AVR_ATmega48A__)
292 # define _EEPROM_SUFFIX _m48a
293 #elif defined (__AVR_ATmega48P__)
294 # define _EEPROM_SUFFIX _m48p
295 #elif defined (__AVR_ATmega88__)
296 # define _EEPROM_SUFFIX _m88
297 #elif defined (__AVR_ATmega88A__)
298 # define _EEPROM_SUFFIX _m88a
299 #elif defined (__AVR_ATmega88P__)
300 # define _EEPROM_SUFFIX _m88p
301 #elif defined (__AVR_ATmega88PA__)
302 # define _EEPROM_SUFFIX _m88pa
303 #elif defined (__AVR_ATmega8515__)
304 # define _EEPROM_SUFFIX _m8515
305 #elif defined (__AVR_ATmega8535__)
306 # define _EEPROM_SUFFIX _m8535
307 #elif defined (__AVR_AT90S8535__)
308 # define _EEPROM_SUFFIX _8535
309 #elif defined (__AVR_AT90C8534__)
310 # define _EEPROM_SUFFIX _8534
311 #elif defined (__AVR_AT90S8515__)
312 # define _EEPROM_SUFFIX _8515
313 #elif defined (__AVR_AT90S4434__)
314 # define _EEPROM_SUFFIX _4434
315 #elif defined (__AVR_AT90S4433__)
316 # define _EEPROM_SUFFIX _4433
317 #elif defined (__AVR_AT90S4414__)
318 # define _EEPROM_SUFFIX _4414
319 #elif defined (__AVR_ATtiny22__)
320 # define _EEPROM_SUFFIX _tn22
321 #elif defined (__AVR_ATtiny26__)
322 # define _EEPROM_SUFFIX _tn26
323 #elif defined (__AVR_AT90S2343__)
324 # define _EEPROM_SUFFIX _2343
325 #elif defined (__AVR_AT90S2333__)
326 # define _EEPROM_SUFFIX _2333
327 #elif defined (__AVR_AT90S2323__)
328 # define _EEPROM_SUFFIX _2323
329 #elif defined (__AVR_AT90S2313__)
330 # define _EEPROM_SUFFIX _2313
331 #elif defined (__AVR_ATtiny2313__)
332 # define _EEPROM_SUFFIX _tn2313
333 #elif defined (__AVR_ATtiny2313A__)
334 # define _EEPROM_SUFFIX _tn2313a
335 #elif defined (__AVR_ATtiny4313__)
336 # define _EEPROM_SUFFIX _tn4313
337 #elif defined (__AVR_ATtiny13__)
338 # define _EEPROM_SUFFIX _tn13
339 #elif defined (__AVR_ATtiny13A__)
340 # define _EEPROM_SUFFIX _tn13a
341 #elif defined (__AVR_ATtiny25__)
342 # define _EEPROM_SUFFIX _tn25
343 #elif defined (__AVR_ATtiny45__)
344 # define _EEPROM_SUFFIX _tn45
345 #elif defined (__AVR_ATtiny85__)
346 # define _EEPROM_SUFFIX _tn85
347 #elif defined (__AVR_ATtiny24__)
348 # define _EEPROM_SUFFIX _tn24
349 #elif defined (__AVR_ATtiny24A__)
350 # define _EEPROM_SUFFIX _tn24a
351 #elif defined (__AVR_ATtiny44__)
352 # define _EEPROM_SUFFIX _tn44
353 #elif defined (__AVR_ATtiny44A__)
354 # define _EEPROM_SUFFIX _tn44a
355 #elif defined (__AVR_ATtiny84__)
356 # define _EEPROM_SUFFIX _tn84
357 #elif defined (__AVR_ATtiny261__)
358 # define _EEPROM_SUFFIX _tn261
359 #elif defined (__AVR_ATtiny261A__)
360 # define _EEPROM_SUFFIX _tn261a
361 #elif defined (__AVR_ATtiny461__)
362 # define _EEPROM_SUFFIX _tn461
363 #elif defined (__AVR_ATtiny461A__)
364 # define _EEPROM_SUFFIX _tn461a
365 #elif defined (__AVR_ATtiny861__)
366 # define _EEPROM_SUFFIX _tn861
367 #elif defined (__AVR_ATtiny861A__)
368 # define _EEPROM_SUFFIX _tn861a
369 #elif defined (__AVR_ATtiny43U__)
370 # define _EEPROM_SUFFIX _tn43u
371 #elif defined (__AVR_ATtiny48__)
372 # define _EEPROM_SUFFIX _tn48
373 #elif defined (__AVR_ATtiny88__)
374 # define _EEPROM_SUFFIX _tn88
375 #elif defined (__AVR_ATtiny87__)
376 # define _EEPROM_SUFFIX _tn87
377 #elif defined (__AVR_ATtiny167__)
378 # define _EEPROM_SUFFIX _tn167
379 #elif defined (__AVR_AT90SCR100__)
380 # define _EEPROM_SUFFIX _90scr100
381 #elif defined (__AVR_ATxmega16A4__)
382 # define _EEPROM_SUFFIX _x16a4
383 #elif defined (__AVR_ATxmega16D4__)
384 # define _EEPROM_SUFFIX _x16d4
385 #elif defined (__AVR_ATxmega32A4__)
386 # define _EEPROM_SUFFIX _x32a4
387 #elif defined (__AVR_ATxmega32D4__)
388 # define _EEPROM_SUFFIX _x32d4
389 #elif defined (__AVR_ATxmega64A1__)
390 # define _EEPROM_SUFFIX _x64a1
391 #elif defined (__AVR_ATxmega64A3__)
392 # define _EEPROM_SUFFIX _x64a3
393 #elif defined (__AVR_ATxmega64D3__)
394 # define _EEPROM_SUFFIX _x64d3
395 #elif defined (__AVR_ATxmega128A1__)
396 # define _EEPROM_SUFFIX _x128a1
397 #elif defined (__AVR_ATxmega128A3__)
398 # define _EEPROM_SUFFIX _x128a3
399 #elif defined (__AVR_ATxmega128D3__)
400 # define _EEPROM_SUFFIX _x128d3
401 #elif defined (__AVR_ATxmega192A3__)
402 # define _EEPROM_SUFFIX _x192a3
403 #elif defined (__AVR_ATxmega192D3__)
404 # define _EEPROM_SUFFIX _x192d3
405 #elif defined (__AVR_ATxmega256A3__)
406 # define _EEPROM_SUFFIX _x256a3
407 #elif defined (__AVR_ATxmega256A3B__)
408 # define _EEPROM_SUFFIX _x256a3b
409 #elif defined (__AVR_ATxmega256D3__)
410 # define _EEPROM_SUFFIX _x256d3
411 #elif defined (__AVR_ATA6289__)
412 # define _EEPROM_SUFFIX _a6289
413 /* avr1: the following only supported for assembler programs */
414 #elif defined (__AVR_ATtiny28__)
415 # define _EEPROM_SUFFIX _tn28
416 #elif defined (__AVR_AT90S1200__)
417 # define _EEPROM_SUFFIX _1200
418 #elif defined (__AVR_ATtiny15__)
419 # define _EEPROM_SUFFIX _tn15
420 #elif defined (__AVR_ATtiny12__)
421 # define _EEPROM_SUFFIX _tn12
422 #elif defined (__AVR_ATtiny11__)
423 # define _EEPROM_SUFFIX _tn11
424 #else
425 # define _EEPROM_SUFFIX _UNKNOWN
426 #endif
427 
428 #define _EEPROM_CONCAT1(s1, s2) s1 ## s2
429 #define _EEPROM_CONCAT2(s1, s2) _EEPROM_CONCAT1 (s1, s2)
430 
431 #define eeprom_read_byte _EEPROM_CONCAT2 (__eerd_byte, _EEPROM_SUFFIX)
432 #define eeprom_read_word _EEPROM_CONCAT2 (__eerd_word, _EEPROM_SUFFIX)
433 #define eeprom_read_dword _EEPROM_CONCAT2 (__eerd_dword, _EEPROM_SUFFIX)
434 #define eeprom_read_float _EEPROM_CONCAT2 (__eerd_float, _EEPROM_SUFFIX)
435 #define eeprom_read_block _EEPROM_CONCAT2 (__eerd_block, _EEPROM_SUFFIX)
436 
437 #define eeprom_write_byte _EEPROM_CONCAT2 (__eewr_byte, _EEPROM_SUFFIX)
438 #define eeprom_write_word _EEPROM_CONCAT2 (__eewr_word, _EEPROM_SUFFIX)
439 #define eeprom_write_dword _EEPROM_CONCAT2 (__eewr_dword, _EEPROM_SUFFIX)
440 #define eeprom_write_float _EEPROM_CONCAT2 (__eewr_float, _EEPROM_SUFFIX)
441 #define eeprom_write_block _EEPROM_CONCAT2 (__eewr_block, _EEPROM_SUFFIX)
442 
443 #define eeprom_update_byte _EEPROM_CONCAT2 (__eeupd_byte, _EEPROM_SUFFIX)
444 #define eeprom_update_word _EEPROM_CONCAT2 (__eeupd_word, _EEPROM_SUFFIX)
445 #define eeprom_update_dword _EEPROM_CONCAT2 (__eeupd_dword, _EEPROM_SUFFIX)
446 #define eeprom_update_float _EEPROM_CONCAT2 (__eeupd_float, _EEPROM_SUFFIX)
447 #define eeprom_update_block _EEPROM_CONCAT2 (__eeupd_block, _EEPROM_SUFFIX)
448 
449 #endif /* !__DOXYGEN__ */
450 
451 #ifndef __ASSEMBLER__
452 
453 #include <stddef.h> /* size_t */
454 #include <stdint.h>
455 
463 #ifdef __cplusplus
464 extern "C" {
465 #endif
466 
467 #ifndef __ATTR_PURE__
468 # ifdef __DOXYGEN__
469 # define __ATTR_PURE__
470 # else
471 # define __ATTR_PURE__ __attribute__((__pure__))
472 # endif
473 #endif
474 
479 #define EEMEM __attribute__((section(".eeprom")))
480 
485 #if defined (__DOXYGEN__)
486 # define eeprom_is_ready()
487 #elif defined (__AVR_XMEGA__) && __AVR_XMEGA__
488 # define eeprom_is_ready() bit_is_clear (NVM_STATUS, NVM_NVMBUSY_bp)
489 #elif defined (DEECR)
490 # define eeprom_is_ready() bit_is_clear (DEECR, BSY)
491 #elif defined (EEPE)
492 # define eeprom_is_ready() bit_is_clear (EECR, EEPE)
493 #else
494 # define eeprom_is_ready() bit_is_clear (EECR, EEWE)
495 #endif
496 
497 
503 #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
504 
505 
509 uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__;
510 
514 uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__;
515 
519 uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__;
520 
524 float eeprom_read_float (const float *__p) __ATTR_PURE__;
525 
530 void eeprom_read_block (void *__dst, const void *__src, size_t __n);
531 
532 
536 void eeprom_write_byte (uint8_t *__p, uint8_t __value);
537 
541 void eeprom_write_word (uint16_t *__p, uint16_t __value);
542 
546 void eeprom_write_dword (uint32_t *__p, uint32_t __value);
547 
551 void eeprom_write_float (float *__p, float __value);
552 
557 void eeprom_write_block (const void *__src, void *__dst, size_t __n);
558 
559 
563 void eeprom_update_byte (uint8_t *__p, uint8_t __value);
564 
568 void eeprom_update_word (uint16_t *__p, uint16_t __value);
569 
573 void eeprom_update_dword (uint32_t *__p, uint32_t __value);
574 
578 void eeprom_update_float (float *__p, float __value);
579 
584 void eeprom_update_block (const void *__src, void *__dst, size_t __n);
585 
586 
589 
593 #define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
594 
598 #define __EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
599 
603 #define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
604 
608 #define __EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
609 
612 #ifdef __cplusplus
613 }
614 #endif
615 
616 #endif /* !__ASSEMBLER__ */
617 #endif /* E2END || defined(__DOXYGEN__) || defined(__COMPILING_AVR_LIBC__) */
618 
620 #endif /* !_AVR_EEPROM_H_ */
AVR device-specific IO Definitions.