EEPROMにI2Cで読み書きするテスト。
ご多分にもれず、先人の知恵の焼き直し。
ブレッドボード上に組んだ回路は以下の通り。
I2Cなので、EEPROMとの接続は紫色の線で示した2本だけだ。
一番面倒なのがSC1602Bとの接続だが、読み書きの経過の確認に必要なので仕方ない。
本当に読み書きできてるんかいなという確認は以下の手順で行うことにした。
1.PIC内蔵のEEPROMと外付けI2C接続のEEPROMに同じランダムなデータを256バイト分同時に書き込む。
相変わらずC言語があやしいが、たぶんこんな感じ。
for(c=0; c<255; c++){
d = rand()%0xFF;
int_EEPROM_putc(c, d);
I2C_snd_char(EE_P0_0, 0x00, c, d);
}
2.PIC内蔵のEEPROMのデータをPICKit 3 + PICKit 3 Programmerで読み込んでPCに保存しておく。
手持ちで唯一PIC内蔵のEEPROMの内容を目で見て確認できるのがPICKit 3 Programmerなのでこれを活用するわけだ。
3.PIC内蔵のEEPROMのデータをPICKit3 Programmerでクリアする。
4.外付けI2C接続のEEPROMのデータを読み込んでPIC内蔵のEEPROMに書き込む。
for(c=0; c<255; c++){
d = I2C_rcv_char(EE_P0_0, 0x00, c);
int_EEPROM_putc(c, d);
}
5.PIC内蔵のEEPROMのデータをPICKit 3 Programmerで読み込んでPCに保存する。
6.2と5のデータを比較する。
自分でやっててなんだが、いまひとつ確認方法がピンと来ない感じは拭えない。
でも、ぴったり一致するにはする。
ちなみに、乱数の種を
srand((unsigned)time(NULL));
のように書いて変更しようとしたらエラーになった。
PICのというかXC8での扱いは普通のC言語のそれと違うらしい。
まだちゃんと読んでないが、ここ(http://www.geocities.jp/zattouka/GarageHouse/micon/Sample/pic_rand.htm)とかを参照のこと。
あとでじっくり読ませていただこう。
「PIC18F14K50 + AT24C256B -> USB -> Tera Term」へ続く