AVR-LibC  2.3.0
Standard C library for AVR-GCC
 

AVR-LibC Manual

AVR-LibC Sources

Main Page

User Manual

Lib­rary Refe­rence

FAQ

Exam­ple Pro­jects

Index

Loading...
Searching...
No Matches
eeprom.h
Go to the documentation of this file.
1/* Copyright (c) 2002, 2003, 2004, 2007 Marek Michalkiewicz
2 Copyright (c) 2005, 2006 Bjoern Haase
3 Copyright (c) 2008 Atmel Corporation
4 Copyright (c) 2008 Wouter van Gulik
5 Copyright (c) 2009 Dmitry Xmelkov
6 All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11 * Redistributions of source code must retain the above copyright
12 notice, this list of conditions and the following disclaimer.
13 * Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in
15 the documentation and/or other materials provided with the
16 distribution.
17 * Neither the name of the copyright holders nor the names of
18 contributors may be used to endorse or promote products derived
19 from this software without specific prior written permission.
20
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 POSSIBILITY OF SUCH DAMAGE. */
32
33#ifndef _AVR_EEPROM_H_
34#define _AVR_EEPROM_H_ 1
35
36#include <avr/io.h>
37
38#if !E2END && !defined(__DOXYGEN__) && !defined(__COMPILING_AVR_LIBC__)
39# warning "Device does not have EEPROM available."
40#else
41
42#if defined (EEAR) && !defined (EEARL) && !defined (EEARH)
43#define EEARL EEAR
44#endif
45
46#ifndef __ASSEMBLER__
47
48#include <stddef.h> /* size_t */
49#include <stdint.h>
50
51/** \file */
52/** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
53 \code #include <avr/eeprom.h> \endcode
54
55 This header file declares the interface to some simple library
56 routines suitable for handling the data EEPROM contained in the
57 AVR microcontrollers. The implementation uses a simple polled
58 mode interface. Applications that require interrupt-controlled
59 EEPROM access to ensure that no time will be wasted in spinloops
60 will have to deploy their own implementation.
61
62 <b>Notes:</b>
63
64 - Date is stores and retrieved in little endian format and with
65 no padding bytes or alignment requirements.
66
67 - In addition to the write functions there is a set of update functions.
68 This functions read each byte first and skip the burning if the
69 old value is the same with new. The scanning direction is from
70 high address to low, to obtain quick return in common cases.
71
72 - Similar functions for fixed-point types are supplied by
73 \ref avr_stdfix "<stdfix.h>".
74
75 - All of the read/write functions first make sure the EEPROM is
76 ready to be accessed. Since this may cause long delays if a
77 write operation is still pending, time-critical applications
78 should first poll the EEPROM e. g. using eeprom_is_ready() before
79 attempting any actual I/O. But this functions does not wait until
80 SELFPRGEN in SPMCSR becomes zero. Do this manually, if your
81 software contains the Flash burning.
82
83 - As these functions modify IO registers, they are known to be
84 non-reentrant. If any of these functions are used from both,
85 standard and interrupt context, the applications must ensure
86 proper protection (e.g. by disabling interrupts before accessing
87 them).
88
89 - All write functions force erase_and_write programming mode.
90
91 - For Xmega the EEPROM start address is 0, like other architectures.
92 The reading functions add the 0x2000 value to use EEPROM mapping into
93 data space.
94 */
95
96#ifdef __cplusplus
97extern "C" {
98#endif
99
100#include <bits/attribs.h>
101
102/** \ingroup avr_eeprom
103 Attribute expression causing a variable to be allocated within the
104 .eeprom section. */
105#define EEMEM __attribute__((__section__(".eeprom")))
106
107/** \def eeprom_is_ready
108 \ingroup avr_eeprom
109 \returns 1 if EEPROM is ready for a new read/write operation, 0 if not.
110 */
111#if defined (__DOXYGEN__)
112# define eeprom_is_ready()
113#elif defined (NVM_STATUS)
114# define eeprom_is_ready() bit_is_clear (NVM_STATUS, NVM_NVMBUSY_bp)
115#elif defined (NVMCTRL_STATUS)
116# define eeprom_is_ready() bit_is_clear (NVMCTRL_STATUS, NVMCTRL_EEBUSY_bp)
117#elif defined (DEECR)
118# define eeprom_is_ready() bit_is_clear (DEECR, BSY)
119#elif defined (EEPE)
120# define eeprom_is_ready() bit_is_clear (EECR, EEPE)
121#else
122# define eeprom_is_ready() bit_is_clear (EECR, EEWE)
123#endif
124
125
126/** \ingroup avr_eeprom
127 Loops until the eeprom is no longer busy.
128 \returns Nothing. */
129#define eeprom_busy_wait() do {} while (!eeprom_is_ready())
130
131/** \name EEPROM Read Functions */
132
133/** \ingroup avr_eeprom
134 Read one byte from EEPROM address \a __p. */
135uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__;
136
137/** \ingroup avr_eeprom
138 Read a char from EEPROM address \a __p.
139 \since AVR-LibC v2.3 */
140char eeprom_read_char (const char *__p) __asm("eeprom_read_byte") __ATTR_PURE__;
141
142/** \ingroup avr_eeprom
143 Read an unsigned 8-bit integer from EEPROM address \a __p.
144 \since AVR-LibC v2.3 */
145uint8_t eeprom_read_u8 (const uint8_t *__p) __asm("eeprom_read_byte") __ATTR_PURE__;
146
147/** \ingroup avr_eeprom
148 Read a signed 8-bit integer from EEPROM address \a __p.
149 \since AVR-LibC v2.3 */
150int8_t eeprom_read_i8 (const int8_t *__p) __asm("eeprom_read_byte") __ATTR_PURE__;
151
152/** \ingroup avr_eeprom
153 Read one 16-bit word from EEPROM address \a __p. */
154uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__;
155
156/** \ingroup avr_eeprom
157 Read an unsigned 16-bit integer from EEPROM address \a __p.
158 \since AVR-LibC v2.3 */
159uint16_t eeprom_read_u16 (const uint16_t *__p) __asm("eeprom_read_word") __ATTR_PURE__;
160
161/** \ingroup avr_eeprom
162 Read a signed 16-bit integer from EEPROM address \a __p.
163 \since AVR-LibC v2.3 */
164int16_t eeprom_read_i16 (const int16_t *__p) __asm("eeprom_read_word") __ATTR_PURE__;
165
166/** \ingroup avr_eeprom
167 Read an unsigned 24-bit integer from EEPROM address \a __p.
168 \since AVR-LibC v2.3 */
169#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
170uint24_t eeprom_read_u24 (const uint24_t *__p) __ATTR_PURE__;
171#endif
172
173/** \ingroup avr_eeprom
174 Read a signed 24-bit integer from EEPROM address \a __p.
175 \since AVR-LibC v2.3 */
176#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
177int24_t eeprom_read_i24 (const int24_t *__p) __ATTR_PURE__;
178#endif
179
180/** \ingroup avr_eeprom
181 Read one 32-bit double word from EEPROM address \a __p. */
182uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__;
183
184/** \ingroup avr_eeprom
185 Read an unsigned 32-bit integer from EEPROM address \a __p.
186 \since AVR-LibC v2.3 */
187uint32_t eeprom_read_u32 (const uint32_t *__p) __asm("eeprom_read_dword") __ATTR_PURE__;
188
189/** \ingroup avr_eeprom
190 Read a signed 32-bit integer from EEPROM address \a __p.
191 \since AVR-LibC v2.3 */
192int32_t eeprom_read_i32 (const int32_t *__p) __asm("eeprom_read_dword") __ATTR_PURE__;
193
194/** \ingroup avr_eeprom
195 Read one 64-bit quad word from EEPROM address \a __p.
196 \since AVR-LibC v2.2 */
197#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
198uint64_t eeprom_read_qword (const uint64_t *__p) __ATTR_PURE__;
199#endif
200
201/** \ingroup avr_eeprom
202 Read an unsigned 64-bit integer from EEPROM address \a __p.
203 \since AVR-LibC v2.3 */
204#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
205uint64_t eeprom_read_u64 (const uint64_t *__p) __asm("eeprom_read_qword") __ATTR_PURE__;
206#endif
207
208/** \ingroup avr_eeprom
209 Read a signed 64-bit integer from EEPROM address \a __p.
210 \since AVR-LibC v2.3 */
211#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
212int64_t eeprom_read_i64 (const int64_t *__p) __asm("eeprom_read_qword") __ATTR_PURE__;
213#endif
214
215/** \ingroup avr_eeprom
216 Read one float value from EEPROM address \a __p. */
217float eeprom_read_float (const float *__p) __ATTR_PURE__;
218
219/** \ingroup avr_eeprom
220 Read one double value from EEPROM address \a __p.
221 \since AVR-LibC v2.2 */
222#if defined(__DOXYGEN__)
223double eeprom_read_double (const double *__p);
224#elif __SIZEOF_DOUBLE__ == 4
225double eeprom_read_double (const double *__p) __asm("eeprom_read_dword");
226#elif __SIZEOF_DOUBLE__ == 8
227double eeprom_read_double (const double *__p) __asm("eeprom_read_qword");
228#endif
229
230/** \ingroup avr_eeprom
231 Read one long double value from EEPROM address \a __p.
232 \since AVR-LibC v2.2 */
233#if defined(__DOXYGEN__)
234long double eeprom_read_long_double (const long double *__p);
235#elif __SIZEOF_LONG_DOUBLE__ == 4
236long double eeprom_read_long_double (const long double *__p) __asm("eeprom_read_dword");
237#elif __SIZEOF_LONG_DOUBLE__ == 8
238long double eeprom_read_long_double (const long double *__p) __asm("eeprom_read_qword");
239#endif
240
241/** \ingroup avr_eeprom
242 Read a block of \a __n bytes from EEPROM address \a __src to SRAM
243 \a __dst. */
244void eeprom_read_block (void *__dst, const void *__src, size_t __n);
245
246
247/** \name EEPROM Write Functions */
248
249/** \ingroup avr_eeprom
250 Write a byte \a __value to EEPROM address \a __p. */
251void eeprom_write_byte (uint8_t *__p, uint8_t __value);
252
253/** \ingroup avr_eeprom
254 Write a char to EEPROM address \a __p.
255 \since AVR-LibC v2.3 */
256void eeprom_write_char (char *__p, char __value) __asm("eeprom_write_byte");
257
258/** \ingroup avr_eeprom
259 Write an unsigned 8-bit integer to EEPROM address \a __p.
260 \since AVR-LibC v2.3 */
261void eeprom_write_u8 (uint8_t *__p, uint8_t __value) __asm("eeprom_write_byte");
262
263/** \ingroup avr_eeprom
264 Write a signed 8-bit integer to EEPROM address \a __p.
265 \since AVR-LibC v2.3 */
266void eeprom_write_i8 (int8_t *__p, int8_t __value) __asm("eeprom_write_byte");
267
268/** \ingroup avr_eeprom
269 Write a word \a __value to EEPROM address \a __p. */
270
272
273/** \ingroup avr_eeprom
274 Write an unsigned 16-bit integer to EEPROM address \a __p.
275 \since AVR-LibC v2.3 */
276void eeprom_write_u16 (uint16_t *__p, uint16_t __value) __asm("eeprom_write_word");
277
278/** \ingroup avr_eeprom
279 Write a signed 16-bit integer to EEPROM address \a __p.
280 \since AVR-LibC v2.3 */
281void eeprom_write_i16 (int16_t *__p, int16_t __value) __asm("eeprom_write_word");
282
283/** \ingroup avr_eeprom
284 Write an unsigned 24-bit integer to EEPROM address \a __p.
285 \since AVR-LibC v2.3 */
286#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
287void eeprom_write_u24 (uint24_t *__p, uint24_t __value);
288#endif
289
290/** \ingroup avr_eeprom
291 Write a signed 24-bit integer to EEPROM address \a __p.
292 \since AVR-LibC v2.3 */
293#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
294void eeprom_write_i24 (int24_t *__p, int24_t __value);
295#endif
296
297/** \ingroup avr_eeprom
298 Write a 32-bit double word \a __value to EEPROM address \a __p. */
300
301/** \ingroup avr_eeprom
302 Write an unsigned 32-bit integer to EEPROM address \a __p.
303 \since AVR-LibC v2.3 */
304void eeprom_write_u32 (uint32_t *__p, uint32_t __value) __asm("eeprom_write_dword");
305
306/** \ingroup avr_eeprom
307 Write a signed 32-bit integer to EEPROM address \a __p.
308 \since AVR-LibC v2.3 */
309void eeprom_write_i32 (int32_t *__p, int32_t __value) __asm("eeprom_write_dword");
310
311/** \ingroup avr_eeprom
312 Write a 64-bit quad word \a __value to EEPROM address \a __p.
313 \since AVR-LibC v2.2 */
314#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
316#endif
317
318/** \ingroup avr_eeprom
319 Write an unsigned 64-bit integer to EEPROM address \a __p.
320 \since AVR-LibC v2.3 */
321#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
322void eeprom_write_u64 (uint64_t *__p, uint64_t __value) __asm("eeprom_write_qword");
323#endif
324
325/** \ingroup avr_eeprom
326 Write a signed 64-bit integer to EEPROM address \a __p.
327 \since AVR-LibC v2.3 */
328#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
329void eeprom_write_i64 (int64_t *__p, int64_t __value) __asm("eeprom_write_qword");
330#endif
331
332/** \ingroup avr_eeprom
333 Write a float \a __value to EEPROM address \a __p. */
334void eeprom_write_float (float *__p, float __value);
335
336/** \ingroup avr_eeprom
337 Write a double \a __value to EEPROM address \a __p.
338 \since AVR-LibC v2.2 */
339#if defined(__DOXYGEN__)
340void eeprom_write_double (double *__p, double __value);
341#elif __SIZEOF_DOUBLE__ == 4
342void eeprom_write_double (double *__p, double __value) __asm("eeprom_write_dword");
343#elif __SIZEOF_DOUBLE__ == 8
344void eeprom_write_double (double *__p, double __value) __asm("eeprom_write_qword");
345#endif
346
347/** \ingroup avr_eeprom
348 Write a long double \a __value to EEPROM address \a __p.
349 \since AVR-LibC v2.2 */
350#if defined(__DOXYGEN__)
351void eeprom_write_long_double (long double *__p, long double __value);
352#elif __SIZEOF_LONG_DOUBLE__ == 4
353void eeprom_write_long_double (long double *__p, long double __value) __asm("eeprom_write_dword");
354#elif __SIZEOF_LONG_DOUBLE__ == 8
355void eeprom_write_long_double (long double *__p, long double __value) __asm("eeprom_write_qword");
356#endif
357
358/** \ingroup avr_eeprom
359 Write a block of \a __n bytes to EEPROM address \a __dst from \a __src.
360 \note The argument order is mismatch with common functions like strcpy(). */
361void eeprom_write_block (const void *__src, void *__dst, size_t __n);
362
363
364/** \name EEPROM Update Functions */
365
366/** \ingroup avr_eeprom
367 Update a byte \a __value at EEPROM address \a __p. */
368void eeprom_update_byte (uint8_t *__p, uint8_t __value);
369
370/** \ingroup avr_eeprom
371 Update a char \a at EEPROM address \a __p.
372 \since AVR-LibC v2.3 */
373void eeprom_update_char (char *__p, char __value) __asm("eeprom_update_byte");
374
375/** \ingroup avr_eeprom
376 Update an unsigned 8-bit integer \a at EEPROM address \a __p.
377 \since AVR-LibC v2.3 */
378void eeprom_update_u8 (uint8_t *__p, uint8_t __value) __asm("eeprom_update_byte");
379
380/** \ingroup avr_eeprom
381 Update a signed 8-bit integer \a at EEPROM address \a __p.
382 \since AVR-LibC v2.3 */
383void eeprom_update_i8 (int8_t *__p, int8_t __value) __asm("eeprom_update_byte");
384
385/** \ingroup avr_eeprom
386 Update a word \a __value at EEPROM address \a __p. */
388
389/** \ingroup avr_eeprom
390 Update an unsigned 16-bit integer \a at EEPROM address \a __p.
391 \since AVR-LibC v2.3 */
392void eeprom_update_u16 (uint16_t *__p, uint16_t __value) __asm("eeprom_update_word");
393
394/** \ingroup avr_eeprom
395 Update a signed 16-bit integer \a at EEPROM address \a __p.
396 \since AVR-LibC v2.3 */
397void eeprom_update_i16 (int16_t *__p, int16_t __value) __asm("eeprom_update_word");
398
399/** \ingroup avr_eeprom
400 Update an unsigned 24-bit integer \a at EEPROM address \a __p.
401 \since AVR-LibC v2.3 */
402#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
404#endif
405
406/** \ingroup avr_eeprom
407 Update a signed 24-bit integer \a at EEPROM address \a __p.
408 \since AVR-LibC v2.3 */
409#if defined(__DOXYGEN__) || defined(__INT24_MAX__)
410void eeprom_update_i24 (int24_t *__p, int24_t __value);
411#endif
412
413/** \ingroup avr_eeprom
414 Update a 32-bit double word \a __value at EEPROM address \a __p. */
416
417/** \ingroup avr_eeprom
418 Update an unsigned 32-bit integer \a at EEPROM address \a __p.
419 \since AVR-LibC v2.3 */
420void eeprom_update_u32 (uint32_t *__p, uint32_t __value) __asm("eeprom_update_dword");
421
422/** \ingroup avr_eeprom
423 Update a signed 32-bit integer \a at EEPROM address \a __p.
424 \since AVR-LibC v2.3 */
425void eeprom_update_i32 (int32_t *__p, int32_t __value) __asm("eeprom_update_dword");
426
427/** \ingroup avr_eeprom
428 Update a 64-bit quad word \a __value at EEPROM address \a __p.
429 \since AVR-LibC v2.2 */
430#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
432#endif
433
434/** \ingroup avr_eeprom
435 Update an unsigned 64-bit integer \a at EEPROM address \a __p.
436 \since AVR-LibC v2.3 */
437#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
438void eeprom_update_u64 (uint64_t *__p, uint64_t __value) __asm("eeprom_update_qword");
439#endif
440
441/** \ingroup avr_eeprom
442 Update a signed 64-bit integer \a at EEPROM address \a __p.
443 \since AVR-LibC v2.3 */
444#if defined(__DOXYGEN__) || __SIZEOF_LONG_LONG__ == 8
445void eeprom_update_i64 (int64_t *__p, int64_t __value) __asm("eeprom_update_qword");
446#endif
447
448/** \ingroup avr_eeprom
449 Update a float \a __value at EEPROM address \a __p. */
450void eeprom_update_float (float *__p, float __value);
451
452/** \ingroup avr_eeprom
453 Update a double \a __value at EEPROM address \a __p.
454 \since AVR-LibC v2.2 */
455#if defined(__DOXYGEN__)
456void eeprom_update_double (double *__p, double __value);
457#elif __SIZEOF_DOUBLE__ == 4
458void eeprom_update_double (double *__p, double __value) __asm("eeprom_update_dword");
459#elif __SIZEOF_DOUBLE__ == 8
460void eeprom_update_double (double *__p, double __value) __asm("eeprom_update_qword");
461#endif
462
463/** \ingroup avr_eeprom
464 Update a long double \a __value at EEPROM address \a __p.
465 \since AVR-LibC v2.2 */
466#if defined(__DOXYGEN__)
467void eeprom_update_long_double (long double *__p, long double __value);
468#elif __SIZEOF_LONG_DOUBLE__ == 4
469void eeprom_update_long_double (long double *__p, long double __value) __asm("eeprom_update_dword");
470#elif __SIZEOF_LONG_DOUBLE__ == 8
471void eeprom_update_long_double (long double *__p, long double __value) __asm("eeprom_update_qword");
472#endif
473
474/** \ingroup avr_eeprom
475 Update a block of \a __n bytes at EEPROM address \a __dst from \a __src.
476 \note The argument order is mismatch with common functions like strcpy(). */
477void eeprom_update_block (const void *__src, void *__dst, size_t __n);
478
479
480/** \name IAR C Compatibility Defines */
481/**@{*/
482
483/** \ingroup avr_eeprom
484 Write a byte to EEPROM. Compatibility define for IAR C. */
485#define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
486
487/** \ingroup avr_eeprom
488 Write a byte to EEPROM. Compatibility define for IAR C. */
489#define __EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
490
491/** \ingroup avr_eeprom
492 Read a byte from EEPROM. Compatibility define for IAR C. */
493#define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
494
495/** \ingroup avr_eeprom
496 Read a byte from EEPROM. Compatibility define for IAR C. */
497#define __EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr))
498
499/**@}*/
500
501#ifdef __cplusplus
502}
503#endif
504
505#endif /* !__ASSEMBLER__ */
506#endif /* E2END || defined(__DOXYGEN__) || defined(__COMPILING_AVR_LIBC__) */
507#endif /* !_AVR_EEPROM_H_ */
void eeprom_write_dword(uint32_t *__p, uint32_t __value)
int8_t eeprom_read_i8(const int8_t *__p)
int16_t eeprom_read_i16(const int16_t *__p)
void eeprom_read_block(void *__dst, const void *__src, size_t __n)
void eeprom_write_i16(int16_t *__p, int16_t __value)
void eeprom_update_float(float *__p, float __value)
void eeprom_update_word(uint16_t *__p, uint16_t __value)
void eeprom_write_long_double(long double *__p, long double __value)
void eeprom_update_i8(int8_t *__p, int8_t __value)
void eeprom_write_u16(uint16_t *__p, uint16_t __value)
void eeprom_update_i32(int32_t *__p, int32_t __value)
void eeprom_write_word(uint16_t *__p, uint16_t __value)
void eeprom_write_u8(uint8_t *__p, uint8_t __value)
void eeprom_update_i64(int64_t *__p, int64_t __value)
char eeprom_read_char(const char *__p)
void eeprom_update_u16(uint16_t *__p, uint16_t __value)
uint8_t eeprom_read_byte(const uint8_t *__p)
void eeprom_update_i24(int24_t *__p, int24_t __value)
double eeprom_read_double(const double *__p)
long double eeprom_read_long_double(const long double *__p)
void eeprom_update_u8(uint8_t *__p, uint8_t __value)
uint16_t eeprom_read_word(const uint16_t *__p)
void eeprom_update_byte(uint8_t *__p, uint8_t __value)
void eeprom_write_byte(uint8_t *__p, uint8_t __value)
void eeprom_write_i24(int24_t *__p, int24_t __value)
uint16_t eeprom_read_u16(const uint16_t *__p)
void eeprom_write_i64(int64_t *__p, int64_t __value)
void eeprom_write_i8(int8_t *__p, int8_t __value)
uint64_t eeprom_read_u64(const uint64_t *__p)
void eeprom_update_double(double *__p, double __value)
uint24_t eeprom_read_u24(const uint24_t *__p)
void eeprom_update_long_double(long double *__p, long double __value)
void eeprom_update_qword(uint64_t *__p, uint64_t __value)
void eeprom_write_char(char *__p, char __value)
void eeprom_update_char(char *__p, char __value)
int32_t eeprom_read_i32(const int32_t *__p)
void eeprom_update_block(const void *__src, void *__dst, size_t __n)
void eeprom_write_u32(uint32_t *__p, uint32_t __value)
void eeprom_update_u64(uint64_t *__p, uint64_t __value)
void eeprom_update_dword(uint32_t *__p, uint32_t __value)
void eeprom_write_qword(uint64_t *__p, uint64_t __value)
void eeprom_update_u24(uint24_t *__p, uint24_t __value)
void eeprom_update_u32(uint32_t *__p, uint32_t __value)
float eeprom_read_float(const float *__p)
void eeprom_write_block(const void *__src, void *__dst, size_t __n)
void eeprom_write_float(float *__p, float __value)
uint8_t eeprom_read_u8(const uint8_t *__p)
void eeprom_write_double(double *__p, double __value)
uint64_t eeprom_read_qword(const uint64_t *__p)
void eeprom_update_i16(int16_t *__p, int16_t __value)
uint32_t eeprom_read_dword(const uint32_t *__p)
uint32_t eeprom_read_u32(const uint32_t *__p)
int64_t eeprom_read_i64(const int64_t *__p)
void eeprom_write_u64(uint64_t *__p, uint64_t __value)
void eeprom_write_u24(uint24_t *__p, uint24_t __value)
int24_t eeprom_read_i24(const int24_t *__p)
void eeprom_write_i32(int32_t *__p, int32_t __value)
unsigned int uint16_t
Definition: stdint.h:96
unsigned long int uint32_t
Definition: stdint.h:114
__int24 int24_t
Definition: stdint.h:101
signed long long int int64_t
Definition: stdint.h:120
signed int int16_t
Definition: stdint.h:92
unsigned char uint8_t
Definition: stdint.h:88
unsigned long long int uint64_t
Definition: stdint.h:126
__uint24 uint24_t
Definition: stdint.h:106
signed long int int32_t
Definition: stdint.h:110
signed char int8_t
Definition: stdint.h:84