0

私の仕事は、最初の 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 にプルアップされています...

4

1 に答える 1