From a0daf69db937bbae5080eeb67ebcebd805b5fa54 Mon Sep 17 00:00:00 2001 From: Leon Stankowski Date: Thu, 11 May 2023 04:42:19 -0400 Subject: [PATCH] Update eeprom_i2c.py _getaddr(self, addr, nbytes) was assuming a block size of 128 bytes. Corrected to use the self._nbits, the block size passed in when the eeprom object was initialized. --- eeprom/i2c/eeprom_i2c.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eeprom/i2c/eeprom_i2c.py b/eeprom/i2c/eeprom_i2c.py index cf16bcb..6fcdef0 100644 --- a/eeprom/i2c/eeprom_i2c.py +++ b/eeprom/i2c/eeprom_i2c.py @@ -67,7 +67,11 @@ class EEPROM(BlockDevice): self._addrbuf[0] = (la >> 8) & 0xFF self._addrbuf[1] = la & 0xFF self._i2c_addr = self._min_chip_address + ca - pe = (addr & ~0x7F) + 0x80 # byte 0 of next page + + # pe = (addr & ~0x7F) + 0x80 # byte 0 of next page + # original code was assuming 128 byte block size, corrected to use the block size passed in when initialized + pe = ((addr >> self._nbits) + 1) << self._nbits + return min(nbytes, pe - la) # Read or write multiple bytes at an arbitrary address