Я пытаюсь записать в EEPROM отдельного устройства, чтобы настроить поведение устройства и управлять устройством с помощью Arduino Uno.Запись на внешнюю EEPROM с помощью SPI
В соответствии с this webpage, мой SCK подключен к контакту 13 и мой СДА подключен к контакту 11.
У меня есть две функции, i2c_eeprom_write_byte
и i2c_eeprom_read_byte
, взятые из this example.
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, это означает, что ведомое устройство не посылает ничего к ведущему устройству, на Arduino.
Как читать с ведомого устройства?