diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index 4bf1518..8b9247c 100644 Binary files a/Production/Firmware/chu_pico.uf2 and b/Production/Firmware/chu_pico.uf2 differ diff --git a/firmware/src/gp2y0e.h b/firmware/src/gp2y0e.h index d483112..9aa9612 100644 --- a/firmware/src/gp2y0e.h +++ b/firmware/src/gp2y0e.h @@ -14,15 +14,15 @@ static inline uint16_t gp2y0e_write(i2c_inst_t *i2c_port, uint8_t addr, uint8_t val) { uint8_t cmd[] = {addr, val}; - i2c_write_blocking(i2c_port, GP2Y0E_DEF_ADDR, cmd, 2, false); + i2c_write_blocking_until(i2c_port, GP2Y0E_DEF_ADDR, cmd, 2, false, time_us_64() + 1000); } static inline uint8_t gp2y0e_dist(i2c_inst_t *i2c_port) { uint8_t cmd[] = {0x5e}; - i2c_write_blocking(i2c_port, GP2Y0E_DEF_ADDR, cmd, 1, true); + i2c_write_blocking_until(i2c_port, GP2Y0E_DEF_ADDR, cmd, 1, true, time_us_64() + 1000); uint8_t data; - i2c_read_blocking(i2c_port, GP2Y0E_DEF_ADDR, &data, 1, false); + i2c_read_blocking_until(i2c_port, GP2Y0E_DEF_ADDR, &data, 1, false, time_us_64() + 1000); return data; } @@ -31,9 +31,9 @@ static inline uint8_t gp2y0e_dist(i2c_inst_t *i2c_port) static inline uint16_t gp2y0e_dist16(i2c_inst_t *i2c_port) { uint8_t cmd[] = {0x5e}; - i2c_write_blocking(i2c_port, GP2Y0E_DEF_ADDR, cmd, 1, true); + i2c_write_blocking_until(i2c_port, GP2Y0E_DEF_ADDR, cmd, 1, true, time_us_64() + 1000); uint8_t data[2]; - i2c_read_blocking(i2c_port, GP2Y0E_DEF_ADDR, data, 2, false); + i2c_read_blocking_until(i2c_port, GP2Y0E_DEF_ADDR, data, 2, false, time_us_64() + 1000); return (data[0] << 4) | data[1]; } diff --git a/firmware/src/i2c_hub.h b/firmware/src/i2c_hub.h index f6cd988..ab4e90e 100644 --- a/firmware/src/i2c_hub.h +++ b/firmware/src/i2c_hub.h @@ -22,7 +22,7 @@ static inline void i2c_hub_init() static inline void i2c_select(i2c_inst_t *i2c_port, uint8_t chn) { sleep_us(10); - i2c_write_blocking(i2c_port, I2C_HUB_ADDR, &chn, 1, false); + i2c_write_blocking_until(i2c_port, I2C_HUB_ADDR, &chn, 1, false, time_us_64() + 1000); sleep_us(10); }