I'm trying to avoid Arduino layer overhead and interrupts on an Uno or Nano by using direct register access and I'd like to replace a pair of 8-bit latches in an EEPROM/Flash ROM programmer project with an MCP23017 IC to drive 16 address lines.
It seems I can't drive the I2C bus much faster than 400-kHz on an Uno or Nano and I'm wondering if anyone can tell me how long it will take to perform two I2C write operations (after I've sent the I2C 'start' and I2C 'address' packets)?
The I 2 C reference design has a 7-bit address space, with a rarely used 10-bit extension. Common I 2 C bus speeds are the 100 kbit/s standard mode and the 400 kbit/s Fast mode.
I already figured 2.5-uS per bit with a 400-kHz I2C bus and I estimated ~45-uS to perform two consecutive I2C writes. It's the "overhead" I'm concerned about. I can write a byte to flash memory between incoming serial characters at 115200 baud (~86 uS intervals) with my current programmer shield (see below) and I'd like to be able to do that after replacing the two latch ICs with an MCP23017 in a new design.