adafruit / ArduinoCore-samd

115 stars 119 forks source link

Fix hangs when transfer errors occur #367

Closed DennisErnst closed 3 weeks ago

DennisErnst commented 2 months ago

This patch fixes hangs that can occur with certain I2C devices. These where observed in a weather station running a Metro M4 Express. It uses a number of I2C sensors including HM3301 particle monitors (with 29 byte responses) and a PCA9615 bus extender. I was having hangs about once a day. Using the Watch Dog Timer, I was able to locate places where the code was not check for other error conditions while waiting for the SERCOM I2C controller. These fixes have eliminated these hangs.