Renesas Synergy™

FAQ 1006822 : UPD789860の内蔵EEPROM(0xF800-0xF81F)領域へのデータの書き込みがうまくできません。どのように書き込めばよいのでしょうか。

以下にRAM上のデータをEEPROMに書き込む手順を示します(なお、ここではINTEE0割り込みは使用せず、フラグ(EWST10)のポーリングで処理しています)。

(1) EEWC10レジスタの設定により、書き込みタイマの設定とERE10ビットをセット(EEPROMの動作開始)する
(2) EEWC10レジスタのEWE10ビットをセット(書き込みモードの設定)
(3) 1mS以上ウエイト(書き込み可能になるのを待つ)
(4) 1バイト書き込む。(これにより EWST10は1になる)
(5) EWST10 が0になる(1バイトの書き込みが完了する)のを待つ。
(6) 書き込みたいデータのアドレスを進める。

(4)~(6)を必要バイト数だけ繰り返す。

(7) EWE10をクリア(書き込みモードから抜ける)

以上の処理をアセンブリ言語で記述した書き込みプログラムの例を示します。
これは書き込みの場合の例です。

このプログラム例では、HLに書き込みたいEEPROMのアドレスをセット、DEに書き込みたいデータのアドレスをセット、Bに書き込みたいデータ数が既にセットされているとしたサブルーチンになっています。必要に応じて書き込んだデータを読み出して確認します。

;      
; Write EEPROM
; Input parameter
; HL Data Pointer for EEPROM
; DE Data Pointer for Read
; B Data number
;      
       
WRITE: MOV A,#4CH  
  MOV EEWC10,A ; Set ERE10 & Set Timer to 3.71mS
  SET1 EWE10 ; Set EWE10
  PUSH DE  
  MOVW DE,#279 ; 1mS
LOOP2: DECW DE  
  MOV A,D  
  OR A,E  
  BNZ $LOOP2  
  POP DE  
LOOP3: MOV A,[DE] ; Read Data
  MOV [HL],A ; Write Data to EEPROM
  INCW HL  
  INCW DE  
LOOP4: BT EWST10,$LOOP4  
  DBNZ B,$LOOP3  
  CLR1 EWE10 ; Write end
  RET    


このプログラムの考え方は、UPD789862サブシリーズでも同じです。

適用製品

UPD78986x
他にご質問がございましたら、リクエストを送信してください