mirror of
https://github.com/whowechina/chu_pico.git
synced 2025-02-21 04:16:28 +01:00
Add timeout to I2C operations, so more stable
This commit is contained in:
parent
956a86ecd8
commit
a92352c98a
Binary file not shown.
@ -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];
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user