こんにちは、井田です。 現在設定データの保存用に24LC256(MICROCHIP)のEEPROMを使用しています。 H8/3069でポート6の0〜1bitを使用して、EEPROMを制御しようとしています。 bit0:SDA bit1:SCL 過去ログで 小島 央さんのFlight Feather HP ttp://www008.upp.so-net.ne.jp/funfly/index.html を見つけ、 H8/3048用に書かれたEEPROM用プログラムを仕様させていただいています。 書込み処理を行った後に、読み込み処理を行うと0xffとしか値が返ってきません。 書込みデータ アドレス 1 0 2 1 3 2 4 3 読込みデータ アドレス 0xff 0 0xff 1 0xff 2 0xff 3 また、 H8から"h"を出力するとき、ポートは入力モードとして、プルアップ抵抗で"h"を 保証します。 "L"を出力するときはポートを出力モードにします。 つまり、データ送信時にはポートに書くデータは常に0にしておいて、たとえば010とデータ ビットを制御したい場合、クロックに同期させながら、 0 出力モード設定(0が書かれているから"L"が出る) 1 入力モード設定(プルアップ抵抗によって"h"になる) 0 出力モード設定 : と制御します。 これによってメモリ側から出力されるack(="L")信号と干渉せずにackを 読みとることができます。 というのを見つけ、 下記のように試してみたところ // P6DR.BYTE &= ~0x01; P6DDR |= 0x01; //出力モードでLow 0xffでなくて0が返ってきました。 書込み処理が悪いのか、読み込み処理が悪いのかが、現在わかっていません。 どのように検証していけば良いのか助言いただけましたら幸いです。 オシロを繋いでSDAとSCLの波形を見ていますが、波形は綺麗なので、干渉している様子は見受けれませんでした。