diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 1b98ebc96..00233ab4d 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -477,8 +477,8 @@ uint8_t TwoWire::read_from(uint8_t address, uint8_t* data, uint8_t length, unsig err = m_read(&m_i2c_ctrl,data,length,!sendStop); } } - timeout_ms = millis() + timeout_ms; - while(millis() < timeout_ms && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + uint32_t const start = millis(); + while(((millis() - start) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { } } @@ -505,8 +505,8 @@ uint8_t TwoWire::write_to(uint8_t address, uint8_t* data, uint8_t length, unsign err = m_write(&m_i2c_ctrl,data,length,!sendStop); } } - timeout_ms = millis() + timeout_ms; - while(millis() < timeout_ms && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { + uint32_t const start = millis(); + while(((millis() - start) < timeout_ms) && bus_status == WIRE_STATUS_UNSET && err == FSP_SUCCESS) { }