Skip to content

Commit

Permalink
Revert "Fix small wired EEPROM (MarlinFirmware#21337)"
Browse files Browse the repository at this point in the history
Reverting commit cc3e878 pending further investigation.
  • Loading branch information
thinkyhead committed Mar 18, 2021
1 parent deaefbf commit 560448a
Showing 1 changed file with 7 additions and 18 deletions.
25 changes: 7 additions & 18 deletions Marlin/src/HAL/shared/eeprom_if_i2c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,26 +51,16 @@ void eeprom_init() {

static constexpr uint8_t eeprom_device_address = I2C_ADDRESS(EEPROM_DEVICE_ADDRESS);

void _beginTransmission(const uint16_t memoryAddress) {
if (MARLIN_EEPROM_SIZE > 0x4000) { // Use two-byte addressing for EEPROMs >16kb
Wire.beginTransmission(eeprom_device_address);
Wire.write(memoryAddress >> 8); // Address High Byte
}
else {
const uint8_t addr = eeprom_device_address | byte((memoryAddress >> 8) & 0x07);
Wire.beginTransmission(addr);
}
Wire.write(memoryAddress & 0xFF); // Address Low Byte (or only byte for chips <= 16Kb like 24C02/04/08/16)
}

// ------------------------
// Public functions
// ------------------------

void eeprom_write_byte(uint8_t *pos, unsigned char value) {
const unsigned eeprom_address = (unsigned)pos;

_beginTransmission(eeprom_address);
Wire.beginTransmission(eeprom_device_address);
Wire.write(int(eeprom_address >> 8)); // MSB
Wire.write(int(eeprom_address & 0xFF)); // LSB
Wire.write(value);
Wire.endTransmission();

Expand All @@ -82,12 +72,11 @@ void eeprom_write_byte(uint8_t *pos, unsigned char value) {
uint8_t eeprom_read_byte(uint8_t *pos) {
const unsigned eeprom_address = (unsigned)pos;

_beginTransmission(eeprom_address);
Wire.beginTransmission(eeprom_device_address);
Wire.write(int(eeprom_address >> 8)); // MSB
Wire.write(int(eeprom_address & 0xFF)); // LSB
Wire.endTransmission();

// For EEPROMs <=16Kb the lower address bits are used for 2Kb page address
const int addr = eeprom_device_address | (MARLIN_EEPROM_SIZE <= 0x4000 ? byte((eeprom_address >> 8) & 0x07) : byte(0));
Wire.requestFrom(addr, byte(1));
Wire.requestFrom(eeprom_device_address, (byte)1);
return Wire.available() ? Wire.read() : 0xFF;
}

Expand Down

0 comments on commit 560448a

Please sign in to comment.