自己レスです。 メーカに直接質問したほうが良いと教えていただき、そのようにした結果、回答 を得ました。早い話が、3664NのEEPROMの不具合だそうです。 もうソフト80%、ハード50%ほど出来ていたのですが、デバッグの不自由さ (モニタプログラムと内蔵RAM2kで細々とデバッグ)とか、価格メリットの小さ さ(秋月で3069F+25MHzクリスタルが1750円で買えてしまう)とか考えて、3069 で作り直そうと思います。 以下、メーカ回答の抜粋です。 [回答] 大変申し仕分けありませんが、H8/3664NのEEPROMの論理に不具合があります。 内蔵EEPROMは、停止条件を検出すると書き込みモードになってしまい、10msの間、 ACK=1を返してしまいます。 そのため、開始条件発行、スレーブアドレス発行、ACKの検出、停止条件を繰り返す ようなアクノリッジポーリングの場合、停止条件によってEEPROMが書き込みモー ドとなり、10msの間ACK=1を出力します。この様なルーチンでのアクノリッジポー リングはできません。 大変申し訳ありませんが、御了承ください。 『H8/3694ご検討のお願い』 この問題以外にH8/3664のIICモジュールには色々な問題があり、ソフトの開発が 難しくなっております。 I2Cバスで通信を行うのでしたら、H8/3694のIICバスインターフェース2(IIC2)を 推奨します。 EEPROM搭載版でしたらH8/3694GNを推奨します。 H8/3694GNは今回の内蔵EEPROM論理不具合も修正済みです。 【その他の推奨理由】 (1)I2Cバスの通信プログラム開発が容易 H8/3664のIICではIIC以外の割り込み処理によりIICの処理が滞ると予期しない問 題が多く生じます。そのため、お客様の御要望の動作が得られない可能性があり ます。 また、こちらのサポートも十分対応できない可能性もあります。 この様なプログラム開発の難しさを改良するためにIIC2モジュールを新たに開発 しました。 IIC2では、I2Cバス通信中他の割込みを禁止するといった制限事項もありませ ん。 (2)開発時間の削減 IICからIIC2へのソフト互換はありませんので、ソフト開発を始めから行って頂 く事になります。ですが、プログラム上の制限事項や予期しない問題が発生しな いため、ソフト開発のトータル時間は短くなります。 実際、3664のIICでプログラム開発に手間取っていたお客様がH8/3694に切り替え たらスムーズに開発が終了した例もございます。 (3)3664とピンコンパチ H8/3694は、H8/3664とピンコンパチですのでハード的に置き換えも容易です。 (4)アプリケーションノート Tinyホームページ、アプリケーション情報の応用例にIIC2を用いた応用例も掲載 されています。 以下にTinyシリーズのホームページを示します。 http://www.renesas.com/jpn/products/mpumcu/16bit/tiny/index.html Tinyシリーズホームページから、 左側のメニュー、アプリケーション情報をカーソルでポイント 現れるメニューの中から応用例をクリックして下さい。 応用例のページ、メニューの中から基礎編 I2Cもしくは応用編 I/F、I2Cをクリッ クして下さい。 次の参考例をダウンロードして御参照願います。 基礎編 I2C No.2 I2CバスインターフェースによるMaster-Slave間通信(H8/3687) (H8/3694へも応用可能) 応用編 I/F No.10 シリアルEEPROM(I2C EEPROM)のアクセス(H8/3687) (外付けEEPROMへのリードライト、3694へも応用可能) I/F No.12 シリアルEEPROM(I2C EEPROM)のリード・ライト応用例 (H8/3687N、3694N内蔵EEPROMへのリードライト) I2C No.2 I2CバスインターフェースによるMaster-Slave間通信2(H8/3687) (H8/3694へも応用可能) I2Cバスの通信を行うのでしたらIIC2モジュールを搭載したH8/3694に切り替える ことを強く推奨します。 ぜひご検討をお願いします。 以上、よろしくお願いします。 On Wed, 07 Apr 2004 22:49:23 +0900 wacky <wacky@xxxxxxxxxxxxx> wrote: > わきだと申します。 > 3664Nに内蔵のEEPROMの動作についてなんですが。 > > 現在、データ書き込み後に10msの待ち時間を入れることで、読み書きとも問題な > く行えているのですが、アクノリッジポーリング動作が正常に行えません。 > > 1byte書き込み後、ACKポーリングすると、8ms弱でACK'0'を返してくるのですが、 > その後すぐに読み込みを行おうとするとスレーブアドレスの送信でACK'1'を返し > てきて通信できません。試しにACKポーリング後に再度ACKポーリングしてみたと > ころ、合計15.6msほどかかりました。その後の読み込みにも失敗します。 > > 並列に接続しているAT24C1024では読み書き、ACKポーリングとも正常に行えてい > ます。こちらのほうは、6.2msほどでACK'0'を返してきます。 > > どうも、たとえACKポーリングが正常動作したとしてもたいした時間短縮にはな > りそうもないのであきらめても良いのですが。 > > うまく動作させているかたおられますでしょうか? >