35 #ifndef _AVR_EEPROM_H_
36 #define _AVR_EEPROM_H_ 1
40 #if !E2END && !defined(__DOXYGEN__) && !defined(__COMPILING_AVR_LIBC__)
41 # warning "Device does not have EEPROM available."
46 #if defined (__AVR_AT94K__)
47 # define _EEPROM_SUFFIX _at94k
48 #elif defined (__AVR_AT43USB320__)
49 # define _EEPROM_SUFFIX _43u320
50 #elif defined (__AVR_AT43USB355__)
51 # define _EEPROM_SUFFIX _43u355
52 #elif defined (__AVR_AT76C711__)
53 # define _EEPROM_SUFFIX _76c711
54 #elif defined (__AVR_AT86RF401__)
55 # define _EEPROM_SUFFIX _86r401
56 #elif defined (__AVR_AT90PWM1__)
57 # define _EEPROM_SUFFIX _90pwm1
58 #elif defined (__AVR_AT90PWM2__)
59 # define _EEPROM_SUFFIX _90pwm2
60 #elif defined (__AVR_AT90PWM2B__)
61 # define _EEPROM_SUFFIX _90pwm2b
62 #elif defined (__AVR_AT90PWM3__)
63 # define _EEPROM_SUFFIX _90pwm3
64 #elif defined (__AVR_AT90PWM3B__)
65 # define _EEPROM_SUFFIX _90pwm3b
66 #elif defined (__AVR_AT90PWM216__)
67 # define _EEPROM_SUFFIX _90pwm216
68 #elif defined (__AVR_AT90PWM316__)
69 # define _EEPROM_SUFFIX _90pwm316
70 #elif defined (__AVR_AT90PWM161__)
71 # define _EEPROM_SUFFIX _90pwm161
72 #elif defined (__AVR_AT90PWM81__)
73 # define _EEPROM_SUFFIX _90pwm81
74 #elif defined (__AVR_ATmega16M1__)
75 # define _EEPROM_SUFFIX _m16m1
76 #elif defined (__AVR_ATmega8U2__)
77 # define _EEPROM_SUFFIX _m8u2
78 #elif defined (__AVR_ATmega16U2__)
79 # define _EEPROM_SUFFIX _m16u2
80 #elif defined (__AVR_ATmega16U4__)
81 # define _EEPROM_SUFFIX _m16u4
82 #elif defined (__AVR_ATmega32C1__)
83 # define _EEPROM_SUFFIX _m32c1
84 #elif defined (__AVR_ATmega32M1__)
85 # define _EEPROM_SUFFIX _m32m1
86 #elif defined (__AVR_ATmega32U2__)
87 # define _EEPROM_SUFFIX _m32u2
88 #elif defined (__AVR_ATmega32U4__)
89 # define _EEPROM_SUFFIX _m32u4
90 #elif defined (__AVR_ATmega32U6__)
91 # define _EEPROM_SUFFIX _m32u6
92 #elif defined (__AVR_ATmega64C1__)
93 # define _EEPROM_SUFFIX _m64c1
94 #elif defined (__AVR_ATmega64M1__)
95 # define _EEPROM_SUFFIX _m64m1
96 #elif defined (__AVR_ATmega128__)
97 # define _EEPROM_SUFFIX _m128
98 #elif defined (__AVR_ATmega128A__)
99 # define _EEPROM_SUFFIX _m128a
100 #elif defined (__AVR_ATmega1280__)
101 # define _EEPROM_SUFFIX _m1280
102 #elif defined (__AVR_ATmega1281__)
103 # define _EEPROM_SUFFIX _m1281
104 #elif defined (__AVR_ATmega1284__)
105 # define _EEPROM_SUFFIX _m1284
106 #elif defined (__AVR_ATmega1284P__)
107 # define _EEPROM_SUFFIX _m1284p
108 #elif defined (__AVR_ATmega128RFA1__)
109 # define _EEPROM_SUFFIX _m128rfa1
110 #elif defined (__AVR_ATmega128RFR2__)
111 # define _EEPROM_SUFFIX _m128rfr2
112 #elif defined (__AVR_ATmega1284RFR2__)
113 # define _EEPROM_SUFFIX _m1284rfr2
114 #elif defined (__AVR_ATmega256RFR2__)
115 #elif defined (__AVR_ATmega2564RFR2__)
116 # define _EEPROM_SUFFIX _m2564rfr2
117 # define _EEPROM_SUFFIX _m256rfr2
118 #elif defined (__AVR_ATmega2560__)
119 # define _EEPROM_SUFFIX _m2560
120 #elif defined (__AVR_ATmega2561__)
121 # define _EEPROM_SUFFIX _m2561
122 #elif defined (__AVR_AT90CAN32__)
123 # define _EEPROM_SUFFIX _can32
124 #elif defined (__AVR_AT90CAN64__)
125 # define _EEPROM_SUFFIX _can64
126 #elif defined (__AVR_AT90CAN128__)
127 # define _EEPROM_SUFFIX _can128
128 #elif defined (__AVR_AT90USB82__)
129 # define _EEPROM_SUFFIX _usb82
130 #elif defined (__AVR_AT90USB162__)
131 # define _EEPROM_SUFFIX _usb162
132 #elif defined (__AVR_AT90USB646__)
133 # define _EEPROM_SUFFIX _usb646
134 #elif defined (__AVR_AT90USB647__)
135 # define _EEPROM_SUFFIX _usb647
136 #elif defined (__AVR_AT90USB1286__)
137 # define _EEPROM_SUFFIX _usb1286
138 #elif defined (__AVR_AT90USB1287__)
139 # define _EEPROM_SUFFIX _usb1287
140 #elif defined (__AVR_ATmega64RFR2__)
141 # define _EEPROM_SUFFIX _m64rfr2
142 #elif defined (__AVR_ATmega644RFR2__)
143 # define _EEPROM_SUFFIX _m644rfr2
144 #elif defined (__AVR_ATmega64__)
145 # define _EEPROM_SUFFIX _m64
146 #elif defined (__AVR_ATmega64A__)
147 # define _EEPROM_SUFFIX _m64a
148 #elif defined (__AVR_ATmega640__)
149 # define _EEPROM_SUFFIX _m640
150 #elif defined (__AVR_ATmega644__)
151 # define _EEPROM_SUFFIX _m644
152 #elif defined (__AVR_ATmega644A__)
153 # define _EEPROM_SUFFIX _m644a
154 #elif defined (__AVR_ATmega644P__)
155 # define _EEPROM_SUFFIX _m644p
156 #elif defined (__AVR_ATmega644PA__)
157 # define _EEPROM_SUFFIX _m644pa
158 #elif defined (__AVR_ATmega645__)
159 # define _EEPROM_SUFFIX _m645
160 #elif defined (__AVR_ATmega645A__)
161 # define _EEPROM_SUFFIX _m645a
162 #elif defined (__AVR_ATmega645P__)
163 # define _EEPROM_SUFFIX _m645p
164 #elif defined (__AVR_ATmega6450__)
165 # define _EEPROM_SUFFIX _m6450
166 #elif defined (__AVR_ATmega6450A__)
167 # define _EEPROM_SUFFIX _m6450a
168 #elif defined (__AVR_ATmega6450P__)
169 # define _EEPROM_SUFFIX _m6450p
170 #elif defined (__AVR_ATmega649__)
171 # define _EEPROM_SUFFIX _m649
172 #elif defined (__AVR_ATmega649A__)
173 # define _EEPROM_SUFFIX _m649a
174 #elif defined (__AVR_ATmega649P__)
175 # define _EEPROM_SUFFIX _m649p
176 #elif defined (__AVR_ATmega6490__)
177 # define _EEPROM_SUFFIX _m6490
178 #elif defined (__AVR_ATmega6490A__)
179 # define _EEPROM_SUFFIX _m6490a
180 #elif defined (__AVR_ATmega6490P__)
181 # define _EEPROM_SUFFIX _m6490p
182 #elif defined (__AVR_ATmega103__)
183 # define _EEPROM_SUFFIX _m103
184 #elif defined (__AVR_ATmega32__)
185 # define _EEPROM_SUFFIX _m32
186 #elif defined (__AVR_ATmega32A__)
187 # define _EEPROM_SUFFIX _m32a
188 #elif defined (__AVR_ATmega323__)
189 # define _EEPROM_SUFFIX _m323
190 #elif defined (__AVR_ATmega324A__)
191 # define _EEPROM_SUFFIX _m324a
192 #elif defined (__AVR_ATmega324P__)
193 # define _EEPROM_SUFFIX _m324p
194 #elif defined (__AVR_ATmega324PA__)
195 # define _EEPROM_SUFFIX _m324pa
196 #elif defined (__AVR_ATmega325__)
197 # define _EEPROM_SUFFIX _m325
198 #elif defined (__AVR_ATmega325A__)
199 # define _EEPROM_SUFFIX _m325a
200 #elif defined (__AVR_ATmega325P__)
201 # define _EEPROM_SUFFIX _m325p
202 #elif defined (__AVR_ATmega325PA__)
203 # define _EEPROM_SUFFIX _m325pa
204 #elif defined (__AVR_ATmega3250__)
205 # define _EEPROM_SUFFIX _m3250
206 #elif defined (__AVR_ATmega3250A__)
207 # define _EEPROM_SUFFIX _m3250a
208 #elif defined (__AVR_ATmega3250P__)
209 # define _EEPROM_SUFFIX _m3250p
210 #elif defined (__AVR_ATmega3250PA__)
211 # define _EEPROM_SUFFIX _m3250pa
212 #elif defined (__AVR_ATmega328__)
213 # define _EEPROM_SUFFIX _m328
214 #elif defined (__AVR_ATmega328P__)
215 # define _EEPROM_SUFFIX _m328p
216 #elif defined (__AVR_ATmega329__)
217 # define _EEPROM_SUFFIX _m329
218 #elif defined (__AVR_ATmega329A__)
219 # define _EEPROM_SUFFIX _m329a
220 #elif defined (__AVR_ATmega329P__)
221 # define _EEPROM_SUFFIX _m329p
222 #elif defined (__AVR_ATmega329PA__)
223 # define _EEPROM_SUFFIX _m329pa
224 #elif defined (__AVR_ATmega3290__)
225 # define _EEPROM_SUFFIX _m3290
226 #elif defined (__AVR_ATmega3290A__)
227 # define _EEPROM_SUFFIX _m3290a
228 #elif defined (__AVR_ATmega3290P__)
229 # define _EEPROM_SUFFIX _m3290p
230 #elif defined (__AVR_ATmega3290PA__)
231 # define _EEPROM_SUFFIX _m3290pa
232 #elif defined (__AVR_ATmega32HVB__)
233 # define _EEPROM_SUFFIX _m32hvb
234 #elif defined (__AVR_ATmega32HVBREVB__)
235 # define _EEPROM_SUFFIX _m32hvbrevb
236 #elif defined (__AVR_ATmega64HVE__)
237 # define _EEPROM_SUFFIX _m64hve
238 #elif defined (__AVR_ATmega64HVE2__)
239 # define _EEPROM_SUFFIX _m64hve2
240 #elif defined (__AVR_ATmega406__)
241 # define _EEPROM_SUFFIX _m406
242 #elif defined (__AVR_ATmega16__)
243 # define _EEPROM_SUFFIX _m16
244 #elif defined (__AVR_ATmega16A__)
245 # define _EEPROM_SUFFIX _m16a
246 #elif defined (__AVR_ATmega161__)
247 # define _EEPROM_SUFFIX _m161
248 #elif defined (__AVR_ATmega162__)
249 # define _EEPROM_SUFFIX _m162
250 #elif defined (__AVR_ATmega163__)
251 # define _EEPROM_SUFFIX _m163
252 #elif defined (__AVR_ATmega164__)
253 # define _EEPROM_SUFFIX _m164
254 #elif defined (__AVR_ATmega164P__)
255 # define _EEPROM_SUFFIX _m164p
256 #elif defined (__AVR_ATmega164PA__)
257 # define _EEPROM_SUFFIX _m164pa
258 #elif defined (__AVR_ATmega165__)
259 # define _EEPROM_SUFFIX _m165
260 #elif defined (__AVR_ATmega165A__)
261 # define _EEPROM_SUFFIX _m165a
262 #elif defined (__AVR_ATmega165P__)
263 # define _EEPROM_SUFFIX _m165p
264 #elif defined (__AVR_ATmega165PA__)
265 # define _EEPROM_SUFFIX _m165pa
266 #elif defined (__AVR_ATmega168__)
267 # define _EEPROM_SUFFIX _m168
268 #elif defined (__AVR_ATmega168A__)
269 # define _EEPROM_SUFFIX _m168a
270 #elif defined (__AVR_ATmega168P__)
271 # define _EEPROM_SUFFIX _m168p
272 #elif defined (__AVR_ATmega168PA__)
273 # define _EEPROM_SUFFIX _m168pa
274 #elif defined (__AVR_ATmega168PB__)
275 # define _EEPROM_SUFFIX _m168pb
276 #elif defined (__AVR_ATmega169__)
277 # define _EEPROM_SUFFIX _m169
278 #elif defined (__AVR_ATmega169A__)
279 # define _EEPROM_SUFFIX _m169a
280 #elif defined (__AVR_ATmega169P__)
281 # define _EEPROM_SUFFIX _m169p
282 #elif defined (__AVR_ATmega169PA__)
283 # define _EEPROM_SUFFIX _m169pa
284 #elif defined (__AVR_ATmega8HVA__)
285 # define _EEPROM_SUFFIX _m8hva
286 #elif defined (__AVR_ATmega16HVA__)
287 # define _EEPROM_SUFFIX _m16hva
288 #elif defined (__AVR_ATmega16HVA2__)
289 # define _EEPROM_SUFFIX _m16hva2
290 #elif defined (__AVR_ATmega16HVB__)
291 # define _EEPROM_SUFFIX _m16hvb
292 #elif defined (__AVR_ATmega16HVBREVB__)
293 # define _EEPROM_SUFFIX _m16hvbrevb
294 #elif defined (__AVR_ATmega8__)
295 # define _EEPROM_SUFFIX _m8
296 #elif defined (__AVR_ATmega8A__)
297 # define _EEPROM_SUFFIX _m8a
298 #elif defined (__AVR_ATmega48__)
299 # define _EEPROM_SUFFIX _m48
300 #elif defined (__AVR_ATmega48A__)
301 # define _EEPROM_SUFFIX _m48a
302 #elif defined (__AVR_ATmega48PA__)
303 # define _EEPROM_SUFFIX _m48pa
304 #elif defined (__AVR_ATmega48PB__)
305 # define _EEPROM_SUFFIX _m48pb
306 #elif defined (__AVR_ATmega48P__)
307 # define _EEPROM_SUFFIX _m48p
308 #elif defined (__AVR_ATmega88__)
309 # define _EEPROM_SUFFIX _m88
310 #elif defined (__AVR_ATmega88A__)
311 # define _EEPROM_SUFFIX _m88a
312 #elif defined (__AVR_ATmega88P__)
313 # define _EEPROM_SUFFIX _m88p
314 #elif defined (__AVR_ATmega88PA__)
315 # define _EEPROM_SUFFIX _m88pa
316 #elif defined (__AVR_ATmega88PB__)
317 # define _EEPROM_SUFFIX _m88pb
318 #elif defined (__AVR_ATmega8515__)
319 # define _EEPROM_SUFFIX _m8515
320 #elif defined (__AVR_ATmega8535__)
321 # define _EEPROM_SUFFIX _m8535
322 #elif defined (__AVR_AT90S8535__)
323 # define _EEPROM_SUFFIX _8535
324 #elif defined (__AVR_AT90C8534__)
325 # define _EEPROM_SUFFIX _8534
326 #elif defined (__AVR_AT90S8515__)
327 # define _EEPROM_SUFFIX _8515
328 #elif defined (__AVR_AT90S4434__)
329 # define _EEPROM_SUFFIX _4434
330 #elif defined (__AVR_AT90S4433__)
331 # define _EEPROM_SUFFIX _4433
332 #elif defined (__AVR_AT90S4414__)
333 # define _EEPROM_SUFFIX _4414
334 #elif defined (__AVR_ATtiny22__)
335 # define _EEPROM_SUFFIX _tn22
336 #elif defined (__AVR_ATtiny26__)
337 # define _EEPROM_SUFFIX _tn26
338 #elif defined (__AVR_AT90S2343__)
339 # define _EEPROM_SUFFIX _2343
340 #elif defined (__AVR_AT90S2333__)
341 # define _EEPROM_SUFFIX _2333
342 #elif defined (__AVR_AT90S2323__)
343 # define _EEPROM_SUFFIX _2323
344 #elif defined (__AVR_AT90S2313__)
345 # define _EEPROM_SUFFIX _2313
346 #elif defined (__AVR_ATtiny2313__)
347 # define _EEPROM_SUFFIX _tn2313
348 #elif defined (__AVR_ATtiny2313A__)
349 # define _EEPROM_SUFFIX _tn2313a
350 #elif defined (__AVR_ATtiny4313__)
351 # define _EEPROM_SUFFIX _tn4313
352 #elif defined (__AVR_ATtiny13__)
353 # define _EEPROM_SUFFIX _tn13
354 #elif defined (__AVR_ATtiny13A__)
355 # define _EEPROM_SUFFIX _tn13a
356 #elif defined (__AVR_ATtiny25__)
357 # define _EEPROM_SUFFIX _tn25
358 #elif defined (__AVR_ATtiny45__)
359 # define _EEPROM_SUFFIX _tn45
360 #elif defined (__AVR_ATtiny85__)
361 # define _EEPROM_SUFFIX _tn85
362 #elif defined (__AVR_ATtiny24__)
363 # define _EEPROM_SUFFIX _tn24
364 #elif defined (__AVR_ATtiny24A__)
365 # define _EEPROM_SUFFIX _tn24a
366 #elif defined (__AVR_ATtiny44__)
367 # define _EEPROM_SUFFIX _tn44
368 #elif defined (__AVR_ATtiny44A__)
369 # define _EEPROM_SUFFIX _tn44a
370 #elif defined (__AVR_ATtiny441__)
371 # define _EEPROM_SUFFIX _tn441
372 #elif defined (__AVR_ATtiny84__)
373 # define _EEPROM_SUFFIX _tn84
374 #elif defined (__AVR_ATtiny84A__)
375 # define _EEPROM_SUFFIX _tn84a
376 #elif defined (__AVR_ATtiny841__)
377 # define _EEPROM_SUFFIX _tn841
378 #elif defined (__AVR_ATtiny261__)
379 # define _EEPROM_SUFFIX _tn261
380 #elif defined (__AVR_ATtiny261A__)
381 # define _EEPROM_SUFFIX _tn261a
382 #elif defined (__AVR_ATtiny461__)
383 # define _EEPROM_SUFFIX _tn461
384 #elif defined (__AVR_ATtiny461A__)
385 # define _EEPROM_SUFFIX _tn461a
386 #elif defined (__AVR_ATtiny861__)
387 # define _EEPROM_SUFFIX _tn861
388 #elif defined (__AVR_ATtiny861A__)
389 # define _EEPROM_SUFFIX _tn861a
390 #elif defined (__AVR_ATtiny43U__)
391 # define _EEPROM_SUFFIX _tn43u
392 #elif defined (__AVR_ATtiny48__)
393 # define _EEPROM_SUFFIX _tn48
394 #elif defined (__AVR_ATtiny828__)
395 # define _EEPROM_SUFFIX _tn828
396 #elif defined (__AVR_ATtiny88__)
397 # define _EEPROM_SUFFIX _tn88
398 #elif defined (__AVR_ATtiny87__)
399 # define _EEPROM_SUFFIX _tn87
400 #elif defined (__AVR_ATtiny167__)
401 # define _EEPROM_SUFFIX _tn167
402 #elif defined (__AVR_ATtiny1634__)
403 # define _EEPROM_SUFFIX _tn1634
404 #elif defined (__AVR_AT90SCR100__)
405 # define _EEPROM_SUFFIX _90scr100
406 #elif defined (__AVR_ATxmega16A4__)
407 # define _EEPROM_SUFFIX _x16a4
408 #elif defined (__AVR_ATxmega16A4U__)
409 # define _EEPROM_SUFFIX _x16a4u
410 #elif defined (__AVR_ATxmega16C4__)
411 # define _EEPROM_SUFFIX _x16c4
412 #elif defined (__AVR_ATxmega16D4__)
413 # define _EEPROM_SUFFIX _x16d4
414 #elif defined (__AVR_ATxmega32A4__)
415 # define _EEPROM_SUFFIX _x32a4
416 #elif defined (__AVR_ATxmega32A4U__)
417 # define _EEPROM_SUFFIX _x32a4u
418 #elif defined (__AVR_ATxmega32C3__)
419 # define _EEPROM_SUFFIX _x32c3
420 #elif defined (__AVR_ATxmega32C4__)
421 # define _EEPROM_SUFFIX _x32c4
422 #elif defined (__AVR_ATxmega32D3__)
423 # define _EEPROM_SUFFIX _x32d3
424 #elif defined (__AVR_ATxmega32D4__)
425 # define _EEPROM_SUFFIX _x32d4
426 #elif defined (__AVR_ATxmega8E5__)
427 #define _EEPROM_SUFFIX _x8e5
428 #elif defined (__AVR_ATxmega16E5__)
429 #define _EEPROM_SUFFIX _x16e5
430 #elif defined (__AVR_ATxmega32E5__)
431 # define _EEPROM_SUFFIX _x32e5
432 #elif defined (__AVR_ATxmega64A1__)
433 # define _EEPROM_SUFFIX _x64a1
434 #elif defined (__AVR_ATxmega64A1U__)
435 # define _EEPROM_SUFFIX _x64a1u
436 #elif defined (__AVR_ATxmega64A3__)
437 # define _EEPROM_SUFFIX _x64a3
438 #elif defined (__AVR_ATxmega64A3U__)
439 # define _EEPROM_SUFFIX _x64a3u
440 #elif defined (__AVR_ATxmega64A4U__)
441 # define _EEPROM_SUFFIX _x64a4u
442 #elif defined (__AVR_ATxmega64B1__)
443 # define _EEPROM_SUFFIX _x64b1
444 #elif defined (__AVR_ATxmega64B3__)
445 # define _EEPROM_SUFFIX _x64b3
446 #elif defined (__AVR_ATxmega64C3__)
447 # define _EEPROM_SUFFIX _x64c3
448 #elif defined (__AVR_ATxmega64D3__)
449 # define _EEPROM_SUFFIX _x64d3
450 #elif defined (__AVR_ATxmega64D4__)
451 # define _EEPROM_SUFFIX _x64d4
452 #elif defined (__AVR_ATxmega128A1__)
453 # define _EEPROM_SUFFIX _x128a1
454 #elif defined (__AVR_ATxmega128A1U__)
455 # define _EEPROM_SUFFIX _x128a1u
456 #elif defined (__AVR_ATxmega128A4U__)
457 # define _EEPROM_SUFFIX _x128a4u
458 #elif defined (__AVR_ATxmega128A3__)
459 # define _EEPROM_SUFFIX _x128a3
460 #elif defined (__AVR_ATxmega128A3U__)
461 # define _EEPROM_SUFFIX _x128a3u
462 #elif defined (__AVR_ATxmega128B1__)
463 # define _EEPROM_SUFFIX _x128b1
464 #elif defined (__AVR_ATxmega128B3__)
465 # define _EEPROM_SUFFIX _x128b3
466 #elif defined (__AVR_ATxmega128C3__)
467 # define _EEPROM_SUFFIX _x128c3
468 #elif defined (__AVR_ATxmega128D3__)
469 # define _EEPROM_SUFFIX _x128d3
470 #elif defined (__AVR_ATxmega128D4__)
471 # define _EEPROM_SUFFIX _x128d4
472 #elif defined (__AVR_ATxmega192A3__)
473 # define _EEPROM_SUFFIX _x192a3
474 #elif defined (__AVR_ATxmega192A3U__)
475 # define _EEPROM_SUFFIX _x192a3u
476 #elif defined (__AVR_ATxmega192C3__)
477 # define _EEPROM_SUFFIX _x192c3
478 #elif defined (__AVR_ATxmega192D3__)
479 # define _EEPROM_SUFFIX _x192d3
480 #elif defined (__AVR_ATxmega256A3__)
481 # define _EEPROM_SUFFIX _x256a3
482 #elif defined (__AVR_ATxmega256A3U__)
483 # define _EEPROM_SUFFIX _x256a3u
484 #elif defined (__AVR_ATxmega256A3B__)
485 # define _EEPROM_SUFFIX _x256a3b
486 #elif defined (__AVR_ATxmega256A3BU__)
487 # define _EEPROM_SUFFIX _x256a3bu
488 #elif defined (__AVR_ATxmega256C3__)
489 # define _EEPROM_SUFFIX _x256c3
490 #elif defined (__AVR_ATxmega256D3__)
491 # define _EEPROM_SUFFIX _x256d3
492 #elif defined (__AVR_ATxmega384C3__)
493 # define _EEPROM_SUFFIX _x384c3
494 #elif defined (__AVR_ATxmega384D3__)
495 # define _EEPROM_SUFFIX _x384d3
496 #elif defined (__AVR_ATA5505__)
497 # define _EEPROM_SUFFIX _a5505
498 #elif defined (__AVR_ATA5272__)
499 # define _EEPROM_SUFFIX _a5272
500 #elif defined (__AVR_ATA6285__)
501 # define _EEPROM_SUFFIX _a6285
502 #elif defined (__AVR_ATA6286__)
503 # define _EEPROM_SUFFIX _a6286
504 #elif defined (__AVR_ATA6289__)
505 # define _EEPROM_SUFFIX _a6289
506 #elif defined (__AVR_ATA5790__)
507 # define _EEPROM_SUFFIX _a5790
508 #elif defined (__AVR_ATA5790N__)
509 # define _EEPROM_SUFFIX _a5790n
510 #elif defined (__AVR_ATA5795__)
511 # define _EEPROM_SUFFIX _a5795
512 #elif defined (__AVR_ATA5702M322__)
513 # define _EEPROM_SUFFIX _a5702m322
514 #elif defined (__AVR_ATA5782__)
515 # define _EEPROM_SUFFIX _a5782
516 #elif defined (__AVR_ATA5831__)
517 # define _EEPROM_SUFFIX _a5831
518 #elif defined (__AVR_ATA6612C__)
519 # define _EEPROM_SUFFIX _a6612c
520 #elif defined (__AVR_ATA6613C__)
521 # define _EEPROM_SUFFIX _a6613c
522 #elif defined (__AVR_ATA6614Q__)
523 # define _EEPROM_SUFFIX _a6614q
524 #elif defined (__AVR_ATA6616C__)
525 # define _EEPROM_SUFFIX _a6616c
526 #elif defined (__AVR_ATA6617C__)
527 # define _EEPROM_SUFFIX _a6617c
528 #elif defined (__AVR_ATA664251__)
529 # define _EEPROM_SUFFIX _a664251
531 #elif defined (__AVR_ATtiny28__)
532 # define _EEPROM_SUFFIX _tn28
533 #elif defined (__AVR_AT90S1200__)
534 # define _EEPROM_SUFFIX _1200
535 #elif defined (__AVR_ATtiny15__)
536 # define _EEPROM_SUFFIX _tn15
537 #elif defined (__AVR_ATtiny12__)
538 # define _EEPROM_SUFFIX _tn12
539 #elif defined (__AVR_ATtiny11__)
540 # define _EEPROM_SUFFIX _tn11
542 # define _EEPROM_SUFFIX _UNKNOWN
545 #define _EEPROM_CONCAT1(s1, s2) s1 ## s2
546 #define _EEPROM_CONCAT2(s1, s2) _EEPROM_CONCAT1 (s1, s2)
548 #define eeprom_read_byte _EEPROM_CONCAT2 (__eerd_byte, _EEPROM_SUFFIX)
549 #define eeprom_read_word _EEPROM_CONCAT2 (__eerd_word, _EEPROM_SUFFIX)
550 #define eeprom_read_dword _EEPROM_CONCAT2 (__eerd_dword, _EEPROM_SUFFIX)
551 #define eeprom_read_float _EEPROM_CONCAT2 (__eerd_float, _EEPROM_SUFFIX)
552 #define eeprom_read_block _EEPROM_CONCAT2 (__eerd_block, _EEPROM_SUFFIX)
554 #define eeprom_write_byte _EEPROM_CONCAT2 (__eewr_byte, _EEPROM_SUFFIX)
555 #define eeprom_write_word _EEPROM_CONCAT2 (__eewr_word, _EEPROM_SUFFIX)
556 #define eeprom_write_dword _EEPROM_CONCAT2 (__eewr_dword, _EEPROM_SUFFIX)
557 #define eeprom_write_float _EEPROM_CONCAT2 (__eewr_float, _EEPROM_SUFFIX)
558 #define eeprom_write_block _EEPROM_CONCAT2 (__eewr_block, _EEPROM_SUFFIX)
560 #define eeprom_update_byte _EEPROM_CONCAT2 (__eeupd_byte, _EEPROM_SUFFIX)
561 #define eeprom_update_word _EEPROM_CONCAT2 (__eeupd_word, _EEPROM_SUFFIX)
562 #define eeprom_update_dword _EEPROM_CONCAT2 (__eeupd_dword, _EEPROM_SUFFIX)
563 #define eeprom_update_float _EEPROM_CONCAT2 (__eeupd_float, _EEPROM_SUFFIX)
564 #define eeprom_update_block _EEPROM_CONCAT2 (__eeupd_block, _EEPROM_SUFFIX)
568 #ifndef __ASSEMBLER__
615 #ifndef __ATTR_PURE__
617 # define __ATTR_PURE__
619 # define __ATTR_PURE__ __attribute__((__pure__))
627 #define EEMEM __attribute__((section(".eeprom")))
633 #if defined (__DOXYGEN__)
634 # define eeprom_is_ready()
635 #elif defined (__AVR_XMEGA__) && __AVR_XMEGA__
636 # define eeprom_is_ready() bit_is_clear (NVM_STATUS, NVM_NVMBUSY_bp)
637 #elif defined (DEECR)
638 # define eeprom_is_ready() bit_is_clear (DEECR, BSY)
640 # define eeprom_is_ready() bit_is_clear (EECR, EEPE)
642 # define eeprom_is_ready() bit_is_clear (EECR, EEWE)
651 #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
741 #define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
746 #define __EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
751 #define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
756 #define __EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
void eeprom_update_block(const void *__src, void *__dst, size_t __n)
void eeprom_write_block(const void *__src, void *__dst, size_t __n)
void eeprom_update_word(uint16_t *__p, uint16_t __value)
void eeprom_write_byte(uint8_t *__p, uint8_t __value)
void eeprom_read_block(void *__dst, const void *__src, size_t __n)
void eeprom_write_dword(uint32_t *__p, uint32_t __value)
float eeprom_read_float(const float *__p) __ATTR_PURE__
void eeprom_update_dword(uint32_t *__p, uint32_t __value)
void eeprom_write_float(float *__p, float __value)
void eeprom_update_byte(uint8_t *__p, uint8_t __value)
unsigned char uint8_t
Definition: stdint.h:79
unsigned long int uint32_t
Definition: stdint.h:99
uint32_t eeprom_read_dword(const uint32_t *__p) __ATTR_PURE__
void eeprom_write_word(uint16_t *__p, uint16_t __value)
void eeprom_update_float(float *__p, float __value)
uint8_t eeprom_read_byte(const uint8_t *__p) __ATTR_PURE__
uint16_t eeprom_read_word(const uint16_t *__p) __ATTR_PURE__
unsigned int uint16_t
Definition: stdint.h:89