In a nasty EMI environment, I've found my T3.1 based gadget needed stronger pull-up resistors on its I2C bus. Turns out the I2C driver locked up regularly, resulting in the system being pulled out by the watch dog timer. The application has a 2kW switching power supply and a 1kW VHF RF source inches from the Teensy (!) Merely sticking stronger (3.3K) pullups from 5V on SDA and SCL fixed the problem, so no complaints about the hardware. I'm anxious though about a driver that can lock the CPU if it doesn't see the right signals on its bus. It should time out instead.
I see an alternative driver from nox771 (https://forum.pjrc.com/threads/21680-New-I2C-library-for-Teensy3), which might be more robust. But since Wire is used by two other libraries that I am using, it's over my experience to swap the I2C stuff out and recompile the whole thing, is that easier than I imagine? Perhaps editing the source for the [touchscreen and I/O expander chip] libraries to "simply change the #include <Wire.h> to #include <i2c_t3.h>". That easy?
Anyone else had I2C lockups?
Thanks!
I see an alternative driver from nox771 (https://forum.pjrc.com/threads/21680-New-I2C-library-for-Teensy3), which might be more robust. But since Wire is used by two other libraries that I am using, it's over my experience to swap the I2C stuff out and recompile the whole thing, is that easier than I imagine? Perhaps editing the source for the [touchscreen and I/O expander chip] libraries to "simply change the #include <Wire.h> to #include <i2c_t3.h>". That easy?
Anyone else had I2C lockups?
Thanks!