A worry was I2C reliability since Photon is not known to be the best.
Plus I wanted to test the core SW, and I2C I/O speed.
Each loop in my test does 4000 write + read tests to the blank slate I/O pins.
I write a value to the 8 unconnected output pins. I read the pins back and check.
A lot has to work correctly to make that happen.
My code checks to make sure Photon stays on the cloud.
I minimized that a bit, but I wanted that overhead so that results are more
indicative of a real use case.
I also put some code into BaseModulo.cpp transfer function to report any retries.
This is with display, blank slate, and motor driver connected, so I2C does
have some loads, but nothing external. Good power supply, no noise.
That loop takes 6 seconds, so each (write + read) is 1.5 milliseconds.
Which means you can write and I/O around 1300 Hz.
Fine. Not great, but quite reasonable.
Ran test continually for several hours. Zero failures, Zero retries.
Probably 10M transfers.
And I notice some CRC checking in the library. Nice touch!