pico: reset tca9555 address if read fails

This allows surviving a temporary disconnect
diff --git a/32blit-pico/input/tca9555.cpp b/32blit-pico/input/tca9555.cpp
index b3545d8..da6eb28 100644
--- a/32blit-pico/input/tca9555.cpp
+++ b/32blit-pico/input/tca9555.cpp
@@ -44,7 +44,12 @@
 
   uint16_t gpio = 0xFFFF;
 
-  i2c_read_blocking(TCA9555_I2C, TCA9555_ADDR, (uint8_t *)&gpio, 2, false);
+  if(i2c_read_blocking(TCA9555_I2C, TCA9555_ADDR, (uint8_t *)&gpio, 2, false) != 2) {
+    // attempt to reset the address if read fails
+    uint8_t port = 0;
+    i2c_write_timeout_us(TCA9555_I2C, TCA9555_ADDR, &port, 1, false, 1000);
+    return; // will try again next time
+  }
 
   if(!(gpio & (1 << TCA9555_LEFT_IO)))
     new_buttons |= blit::Button::DPAD_LEFT;