RX23TのIICを使い、EEPROMを制御

RX23TのIICを使い、EPROMを制御しました。
 使用したEEPROMは24AA64で、本「RXマイコンのすべて 応用編」の第3章のプログラムを使いました。

●実験の構成と動作

 RX23TのIICに、EEPROMを接続してサンプルソフトを実行したら、無事8バイトアクセスはできました。
 次は、2Kバイトをページアクセスしたら動きません。EEPROMが壊れたのかと思い交換したのですが、同じ様な現象で動きません。一時は、混乱してしまいました。



 


 



●不具合の調査と対策

 IICの動作状況を調べました。
 
 IIC書込みは、動作終了したら SC ,SDA が共にHighになり、正しく動作してそうです。
 IIC読出しは、動作終了しても ,SDA がLowのままです。
 何が原因か? EEPROMが悪いのか?ソフトが悪いのか?

 冷静に考えたら、ソフトに原因が有るのでしょうネ。


 



 


 次は、波形の精査です。 調べやすい様に、データ数を少なくして精査しました。

 最後のデータ読出しの後に ACK が出ています。NAK のはずです。

 



 プログラムリストを調べたら、「NAK」を出力する「ACKBT = 1」は記述されているのですが、動きません。

 「ACKBT = 1」を動かすには、プロテクト解除が必要です。追加すると動くようになりました。


 


 



 それでも可笑しな動作をします。番地が大きくなると動きがおかしくなります。
 EEPROMのデータシートとプログラムを照らし合わせると、アドレスの出し順が変です。
 EEPROMのデータシートには、制御バイト+高アドレス+低アドレスの順ですが、アドレスの順番が違っています。

 アドレスの出し順を修正したら、正常に動作しました。
 読出しデータは、Rx23tのデバッガのメモリー表示で正常を確認しました。


 本「RXマイコンのすべて 応用編」第3章のプログラムは、しっかり作られていて有りがたく使わせて頂きました。私が作ったら、まだまだ時間が掛っていたと思います。



ホームへ戻る