[H8-ML(3850)] Re: H8_3664のI2Cバスについて(横レス)
From: "T.Higashiura" <higashi@xxxxxxxxxx>
Date: 2003年09月11日(木)15時52分51秒
東浦です。

> これは、「書き込んですぐ読み返そうとする」とでるトラブルでは
> ないですか?
> I2Cを使ったNVRAMは書き込みI2Cストップコンディションを検出すると
> 内部でメモリセルへの書き込みシーケンスを実行し、実行している
> 間はバスに反応しなくなります。 それにぶつかっているのでは?
> 24シリーズのEEPROMは内部メモリセルの前段にページレジスタを持っており
> I2C駆動中ははこのページレジスタに書き込むだけで、内部メモリセル
> への書き込みは実行されず、ストップコンディション検出後にページ
> レジスタからメモリセルへ書き込み動作します。この書き込み時間は
> ものによってはms単位でかかります。
廣田様

うーん。書き込みを行っているのはEEPROM内部のアドレスレジスタへ
ですので、上記の理由では無いと思います。
基本的に書き込んだ後のストップコンディションの後、データシート
記載の待ち時間の間、読み込みも書き込みも行っておりません。


トラブルを起こした読み込み処理は、
 1)スタートコンディション
 2)読み込みたいアドレスをアドレスレジスタへ書き込む
 3)またまたスタートコンディション
 4)好きなだけデータを読み出す
 5)ストップコンディション
の順になっていました。

トラブルが発生したのは、2)と3)の間か、3)と4)の間だったと記憶して
います。

日立のマニュアルには、スタートコンディションのあと、次のスタート
コンディションまでには、必ずストップコンディションになっていた
(はず)ので、原因がデバイス側かH8側か悩みました。
トライ&エラーでウェイトを入れて何とか動作するようになりました。


私は、基本的にマニュアルを読まずに、問題が発生した時点で読むタ
イプなので、書かれてあることを読み飛ばしている可能性もあります。
(おかげでそのためのトラブルは後を絶ちません)

ウェイトを入れて動作確認後、原因究明をしていないので、どれかの
レジスタで監視していれば、上記トラブルは起こらなかったかな?
(とはいっても、IICは初めてだったので、一応は日立のマニュアル
記載のフロー通りに作ったつもりなんですけどね)
スレッド概略
[3836(R)](起点)
 └[3844(U)]
   └[表示中]
     └[3860(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]