Skip to content

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

Open
@multiplemonomials

Description

@multiplemonomials

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugDis is broken

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions