MichaelMeissner
Senior Member+
I tend to think that a lot of the Arduino code that assumes there is only one i2c bus needs to be rewritten so the i2c object used is an argument to the initial constructor (with the default being Wire if not passed).
Arduino library code that assumes if you are not on an AVR, you must be on a Due, and always use Wire1 is just as broken (of course in the case of the Due, choosing to put Wire1 on the common SDA/SCL on the shield was a poor design choice).
And it is unfortunate that i2c_t3.h is not upwards compatible with Wire either, and you have to go and change all of the code to include i2c_t3.h instead. Ditto for the ATtiny85, where you need to use TinyWireM.h and/or TinyWireS.h.
Arduino library code that assumes if you are not on an AVR, you must be on a Due, and always use Wire1 is just as broken (of course in the case of the Due, choosing to put Wire1 on the common SDA/SCL on the shield was a poor design choice).
And it is unfortunate that i2c_t3.h is not upwards compatible with Wire either, and you have to go and change all of the code to include i2c_t3.h instead. Ditto for the ATtiny85, where you need to use TinyWireM.h and/or TinyWireS.h.

