avr-libc  2.0.0
Standard C library for AVR-GCC

AVR Libc Home Page

AVRs

AVR Libc Development Pages

Main Page

User Manual

Library Reference

FAQ

Example Projects

マクロ | 関数
<avr/eeprom.h>: EEPROM操作

マクロ

#define EEMEM   __attribute__((section(".eeprom")))
 
#define eeprom_is_ready()
 
#define eeprom_busy_wait()   do {} while (!eeprom_is_ready())
 

関数

uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__
 
uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__
 
uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__
 
float eeprom_read_float (const float *__p) __ATTR_PURE__
 
void eeprom_read_block (void *__dst, const void *__src, size_t __n)
 
void eeprom_write_byte (uint8_t *__p, uint8_t __value)
 
void eeprom_write_word (uint16_t *__p, uint16_t __value)
 
void eeprom_write_dword (uint32_t *__p, uint32_t __value)
 
void eeprom_write_float (float *__p, float __value)
 
void eeprom_write_block (const void *__src, void *__dst, size_t __n)
 
void eeprom_update_byte (uint8_t *__p, uint8_t __value)
 
void eeprom_update_word (uint16_t *__p, uint16_t __value)
 
void eeprom_update_dword (uint32_t *__p, uint32_t __value)
 
void eeprom_update_float (float *__p, float __value)
 
void eeprom_update_block (const void *__src, void *__dst, size_t __n)
 

IAR C互換定義

#define _EEPUT(addr, val)   eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
 
#define __EEPUT(addr, val)   eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
 
#define _EEGET(var, addr)   (var) = eeprom_read_byte ((const uint8_t *)(addr))
 
#define __EEGET(var, addr)   (var) = eeprom_read_byte ((const uint8_t *)(addr))
 

説明詳細

#include <avr/eeprom.h>

このヘッダファイルは、AVRマイコン内にEEPROMを含むデータの取り扱いに適した単純なライブラリルーチンのインタフェースを宣言しています。この実装は、単純な待機モード(ポーリングモード)インタフェースを使用しています。時間がスピンループで無駄にならないよう、割込み制御されたEEPROMアクセスを要求するアプリケーションは、自分で実装しなければなりません。

注意点:

マクロ定義説明

#define __EEGET (   var,
  addr 
)    (var) = eeprom_read_byte ((const uint8_t *)(addr))

EEPROMから1バイト読出し。IAR Cとの互換のために定義。

#define __EEPUT (   addr,
  val 
)    eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))

EEPROMへ1バイト書込み。IAR Cとの互換のために定義。

#define _EEGET (   var,
  addr 
)    (var) = eeprom_read_byte ((const uint8_t *)(addr))

EEPROMから1バイト読出し。IAR Cとの互換のために定義。

#define _EEPUT (   addr,
  val 
)    eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))

EEPROMへ1バイト書込み。IAR Cとの互換のために定義。

#define EEMEM   __attribute__((section(".eeprom")))

変数を .eeprom セクション内へ割り当てるようにする属性表記。

#define eeprom_busy_wait ( )    do {} while (!eeprom_is_ready())

EEPROMが使用中でなくなるまでループ

返値
なし
#define eeprom_is_ready ( )
返値
1:EEPROMが新しく読み書き操作できる状態。0:読み書きできない状態

関数説明

void eeprom_read_block ( void *  __dst,
const void *  __src,
size_t  __n 
)

EEPROMアドレス__srcから、SRAM __dst__nバイトのブロックを読み出す。

uint8_t eeprom_read_byte ( const uint8_t __p)

EEPROMアドレス__pから1バイト読み出す。

uint32_t eeprom_read_dword ( const uint32_t __p)

EEPROMアドレス __p から32-bitダブルバイト(リトルエンディアン)で1つの読み出す。

float eeprom_read_float ( const float *  __p)

EEPROMアドレス __p からfloat(リトルエンディアン)で1つの読み出す。

uint16_t eeprom_read_word ( const uint16_t __p)

EEPROMアドレス__pから16-bit ワード(リトルエンディアン)で1つの読み出す。

void eeprom_update_block ( const void *  __src,
void *  __dst,
size_t  __n 
)

__srcからEEPROMアドレス__dstへ、__nバイトのブロックを更新する。

注意
引数順序が、strcpy()の一般的な関数と違っています。
void eeprom_update_byte ( uint8_t __p,
uint8_t  __value 
)

EEPROMアドレス__pへ、1バイト(byte)の__valueで更新する。

void eeprom_update_dword ( uint32_t __p,
uint32_t  __value 
)

EEPROMアドレス__pへ、32-bitダブルワードの__valueで更新する。

void eeprom_update_float ( float *  __p,
float  __value 
)

EEPROMアドレス__pへ、浮動小数(float)の__valueで更新する。

void eeprom_update_word ( uint16_t __p,
uint16_t  __value 
)

EEPROMアドレス__valueへ、ワード(word)の__valueで更新する。

void eeprom_write_block ( const void *  __src,
void *  __dst,
size_t  __n 
)

__srcからEEPROMアドレス__dstへ、__nバイトのブロックを書き込む。

注意
引数順序が、strcpy()の一般的な関数と違っています。
void eeprom_write_byte ( uint8_t __p,
uint8_t  __value 
)

EEPROMアドレス__pへ、1バイト(byte)の__valueで書き込む。

void eeprom_write_dword ( uint32_t __p,
uint32_t  __value 
)

EEPROMアドレス__pへ、32-bitダブルワードの__valueで書き込む。

void eeprom_write_float ( float *  __p,
float  __value 
)

EEPROMアドレス__pへ、浮動小数(float)の__valueで書き込む。

void eeprom_write_word ( uint16_t __p,
uint16_t  __value 
)

EEPROMアドレス__pへ、ワード(word)の__valueで書き込む。