EEPROMアクセス
汎用レジスタやS-RAMと異なり、EEPROMへのアクセスはI/Oレジスターを介して1バイトづつ行う。
使用するI/Oレジスタは、①EEPROMアドレスレジスタ(EEARH, EEARL),②EEPROMデータレジスタ(EEDR),③EEPRO制御レジスタ(EECR)の3つ。
○ EEPROMアドレスレジスタ(EEARH,EEARL)
bit0~bit9 でEEPROM空間のアドレスを指定
○ EEPROMデータレジスタ(EEDR)
EEPROMへの読み込み・書き込みはこのレジスタを介して行われる。
○ EEPROM制御レジスタ(EECR)
bit4,5:EEPM1、EEPM0:EEPROMプログラミング種別
EEPM1 EEPM0
プログラミング時間 動作
0
0
3.4ms
1操作で消去と書き込み
0
1
1.8ms
消去のみ
1
0
1.8ms
書き込みのみ
1
1
予約
bit3:EERIE:EEPROM操作可割り込み許可
bit2:EEMPE:EEPROMマスタプログラム許可
bit1:EEPE:EEPROMプログラム許可
bit0:EERE:EEPROM読み込み許可
書き込み手順
- EEPE=0まで待機
- EEPROMアドレスをEEARH, EEARLに設定する
- EEPROMデータをEEDRに設定する
- EEMPM1,0ビットにプログラミング種別をセットする。
- EEMPEビット設定後4クロック以内にEEPEビットをセット(1)する
読み出し手順
- EEPE=0を確認する
- EEPROMアドレスをEEARにセットする
- EEREビットをセット(1)する
- EEDRからデータを読み出す
※EEPROM書き込み動作中にEEPROM I/Oレジスタにデータを書き込むと書き込み結果は不定となるので読み込み動作前にEEPEのポーリング(チェック)を行うこと
[ 例題 ] INT1の例題( int1.asm )を拡張し、電源ON時に、前回のカウント値を初期値とする。初期値はEEPROMから読み込む。カウントアップ時にEEPROMへも値を記録する。
プログラム: eeprom.asm
-------------------------------------------------------
アセンブルには avrae.bat(win), avrae(Mac/Linux)、
書き込みには avrpe.bat(win), avrpe(Mac/Linux)
を新しくダウンロードして使ってください。
Mac, Linux の場合は「リンク先を名前を付けて保存」で
~/bin の下に保存し、実行パミッションを設定する
chmod +x ~/bin/avra
chmod +x ~/bin/avrp
-------------------------------------------------------
回路図(INT1の例題と同じ):