0

arduino で PCA9554 からデータを読み込もうとしています。ハードウェアのセットアップは簡単です。PCA9554 の 3 つのアドレス ラインはすべてハイ (+5 v) に接続されているため、このデバイスのアドレスは 0x27 です。値を読み取るために使用しているコードは次のとおりです。

 uint8_t i2cr8(uint8_t dev, uint8_t addr)
 {
      uint8_t val=-1;
      Wire.requestFrom(dev,(uint8_t)1);
      if(Wire.available()) {
          val = Wire.read();
       }
       return val;
  }

しかし、それは常に 0 を読み取ります。

このコードの何が問題になっていますか?

I2C バス上の他のデバイスから読み取ることができるので、ハードウェアにエラーはないと思います。

4

1 に答える 1

0

このアプローチは機能します:

//exact address depends on IC model and <A0:A2> wiring
#define dip_addr       0x38 
...

byte rdata = 0xFF;

Wire.beginTransmission(dip_addr);
Wire.send((uint8_t)0);  
Wire.endTransmission();

Wire.requestFrom(dip_addr,1);

if (Wire.available()) rdata = Wire.receive();

Serial.println ("DIP: " + String(rdata, DEC));
于 2014-09-28T13:12:20.370 に答える