Skip to content
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

I2CEEBlockDevice cannot read more than one page at a time in some circumstances. #94

Open
multiplemonomials opened this issue Nov 7, 2022 · 1 comment
Labels
Bug Dis is broken

Comments

@multiplemonomials
Copy link
Collaborator

multiplemonomials commented Nov 7, 2022

This issue manifests in the following situation:

  • You have an EEPROM device that is larger than 256 bytes, but does not use 16-bit addressing (so the upper three bits of the read address are sent through the I2C address byte)
  • You try to read across a page boundary (e.g. read addresses 0-511, or address 255-256)

In order to do this type of read, the current I2C transaction needs to be ended, and a new one needs to be started for the desired page. Strangely, the program() method has logic to do this, but the read() method does not. This means that doing a read that crosses page boundaries will just end up looping back to the start of the first page instead of returning correct data.

@multiplemonomials multiplemonomials added the Bug Dis is broken label Nov 7, 2022
@multiplemonomials
Copy link
Collaborator Author

Looks like it actually used to have this code and then it was removed??
440fa49

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Dis is broken
Projects
None yet
Development

No branches or pull requests

1 participant