私の仕事は、最初の 255 バイトを外部 EEPROM (24LC64) から内部 (PIC16F877) に i2c バス経由でコピーすることです。私はAN1488、すべてのデータシート、MikroCガイドを読みました(ああ、はい、私はMikroCを使用しています)が、絶望的です..私のコードはsmtngを読み取ろうとするが、プログラマーでPICのeepromを読み取ることを意味します(これは読み取ることができません24LC64なので、何が入っているかさえわかりませんが、確かにsmtngがあり、私が得ているものとは異なります)、すべてのEEPROMが「A2」または「A3」で埋められています. 私の推測では、24LC64 にアドレス指定している最初のアドレスだと思います。私のコードを調べて(かなり小さいです=))、私の間違いを指摘していただけませんか。
char i;
unsigned short Data;
void main(){
PORTB = 0;
TRISB = 0;
I2C1_Init(100000);
PORTB = 0b00000010;
for (i = 0x00; i<0xFF; i++) {
I2C1_Start();
I2C1_Wr(0xA2); //being 1010 001 0
//I'm getting full internal EE filled with what's in brackets from above
I2C1_Wr(0b00000000);
I2C1_Wr(i);
I2C1_Repeated_Start();
I2C1_Wr(0xA3); //being 1010 001 1
Data = I2C1_Rd(0);
I2C1_Stop();
EEPROM_write(i, Data); //How could that 1010 001 0 get into here???
Delay_100ms();
}
PORTB = 0b00000000;
while (1) {
}
}
PS私はシーカンシャル読み取りでこれを試しましたが、「読み取り」(再び「A2」..)最初のバイトのみ..だから私はこれを投稿しました..
PSS 私は「ハードウェア」で作業しており、Proteus は関与していません..
PSSS 重要な情報が記載された 24LC64 が 1 つしかないため、書き込みをテストできません。そのため、WP ピンで Vcc にプルアップされています...