Skip to content

FIX: Library does not work with small (2-16Kbits) eeprom devices #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 7, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/SparkFun_External_EEPROM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ void ExternalEEPROM::read(uint32_t eepromLocation, uint8_t *buff, uint16_t buffe
delayMicroseconds(100); //This shortens the amount of time waiting between writes but hammers the I2C bus

settings.i2cPort->beginTransmission(i2cAddress);
settings.i2cPort->write((uint8_t)((eepromLocation + received) >> 8)); // MSB
if(getMemorySize() > 2048)
settings.i2cPort->write((uint8_t)((eepromLocation + received) >> 8)); // MSB
settings.i2cPort->write((uint8_t)((eepromLocation + received) & 0xFF)); // LSB
settings.i2cPort->endTransmission();

Expand Down Expand Up @@ -225,7 +226,8 @@ void ExternalEEPROM::write(uint32_t eepromLocation, const uint8_t *dataToWrite,
delayMicroseconds(100); //This shortens the amount of time waiting between writes but hammers the I2C bus

settings.i2cPort->beginTransmission(i2cAddress);
settings.i2cPort->write((uint8_t)((eepromLocation + recorded) >> 8)); // MSB
if(getMemorySize() > 2048)
settings.i2cPort->write((uint8_t)((eepromLocation + recorded) >> 8)); // MSB
settings.i2cPort->write((uint8_t)((eepromLocation + recorded) & 0xFF)); // LSB
for (uint8_t x = 0; x < amtToWrite; x++)
settings.i2cPort->write(dataToWrite[recorded + x]);
Expand Down