개별 장치의 EEPROM에 동작을 구성하려면 장치에 쓰기를 시도하고 Arduino Uno로 장치를 제어하고 있습니다. this webpage 따른SPI를 사용하여 외부 EEPROM에 쓰기
로 내 SCK 13 핀에 접속되고, 내 SDA 내가 this example 찍은 두 가지 기능과 i2c_eeprom_write_byte
i2c_eeprom_read_byte
를 가지고 11
핀에 연결된다.
void i2c_eeprom_write_byte(int deviceaddress, unsigned int eeaddress, byte data) {
Wire.begin(deviceaddress); // MUST INCLUDE, otherwise Wire.endTransmission hangs
// called once, in setup
int rdata = data;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(rdata);
Wire.endTransmission(false);
}
byte i2c_eeprom_read_byte(int deviceaddress, unsigned int eeaddress) {
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
delay(10);
Wire.requestFrom(deviceaddress,1);
int avail = Wire.available();
Serial.println(avail);
if (Wire.available()) rdata = Wire.read();
// there's a bug here with Wire.available. It's returning 0 (ie, 0 bytes to be read),
// when it should be returning 1, since I want 1 byte.
return rdata;
}
내 문제는 Wire.available()
항상 슬레이브 장치는 마스터 장치, 아두 이노에 아무 것도 전송되지 않는다는 것을 의미하는 0을 반환한다는 것입니다.
슬레이브 장치에서 읽는 방법은 무엇입니까?