Currently clock stretching is used for write/erase timing - the bus is "stopped" (by forcing SCL=low) while the AVR is writing to the flash/eeprom.
Some I2C masters (eg. BCM2835 / Raspberry Pi) do not detect SCL=low forced by the slave und continue to write data to twiboot.
Workaround could be:
start the actual write cycle only after STOP condition is received
do not acknowledge ADDR+WRITE while chip is busy writing
add a new read command to check if chip is buy writing
This will break existing applications since (fast) I2C transaction will now fail during chip write cycle.
Currently clock stretching is used for write/erase timing - the bus is "stopped" (by forcing SCL=low) while the AVR is writing to the flash/eeprom.
Some I2C masters (eg. BCM2835 / Raspberry Pi) do not detect SCL=low forced by the slave und continue to write data to twiboot.
Workaround could be:
- start the actual write cycle only after STOP condition is received
- do not acknowledge ADDR+WRITE while chip is busy writing
- add a new read command to check if chip is buy writing
This will break existing applications since (fast) I2C transaction will now fail during chip write cycle.
Currently clock stretching is used for write/erase timing - the bus is "stopped" (by forcing SCL=low) while the AVR is writing to the flash/eeprom.
Some I2C masters (eg. BCM2835 / Raspberry Pi) do not detect SCL=low forced by the slave und continue to write data to twiboot.
Workaround could be:
This will break existing applications since (fast) I2C transaction will now fail during chip write cycle.