東浦です。 > これは、「書き込んですぐ読み返そうとする」とでるトラブルでは > ないですか? > I2Cを使ったNVRAMは書き込みI2Cストップコンディションを検出すると > 内部でメモリセルへの書き込みシーケンスを実行し、実行している > 間はバスに反応しなくなります。 それにぶつかっているのでは? > 24シリーズのEEPROMは内部メモリセルの前段にページレジスタを持っており > I2C駆動中ははこのページレジスタに書き込むだけで、内部メモリセル > への書き込みは実行されず、ストップコンディション検出後にページ > レジスタからメモリセルへ書き込み動作します。この書き込み時間は > ものによってはms単位でかかります。 廣田様 うーん。書き込みを行っているのはEEPROM内部のアドレスレジスタへ ですので、上記の理由では無いと思います。 基本的に書き込んだ後のストップコンディションの後、データシート 記載の待ち時間の間、読み込みも書き込みも行っておりません。 トラブルを起こした読み込み処理は、 1)スタートコンディション 2)読み込みたいアドレスをアドレスレジスタへ書き込む 3)またまたスタートコンディション 4)好きなだけデータを読み出す 5)ストップコンディション の順になっていました。 トラブルが発生したのは、2)と3)の間か、3)と4)の間だったと記憶して います。 日立のマニュアルには、スタートコンディションのあと、次のスタート コンディションまでには、必ずストップコンディションになっていた (はず)ので、原因がデバイス側かH8側か悩みました。 トライ&エラーでウェイトを入れて何とか動作するようになりました。 私は、基本的にマニュアルを読まずに、問題が発生した時点で読むタ イプなので、書かれてあることを読み飛ばしている可能性もあります。 (おかげでそのためのトラブルは後を絶ちません) ウェイトを入れて動作確認後、原因究明をしていないので、どれかの レジスタで監視していれば、上記トラブルは起こらなかったかな? (とはいっても、IICは初めてだったので、一応は日立のマニュアル 記載のフロー通りに作ったつもりなんですけどね)