diff --git a/cores/arduino/SERCOM.cpp b/cores/arduino/SERCOM.cpp index b52049071..bac1bdbae 100644 --- a/cores/arduino/SERCOM.cpp +++ b/cores/arduino/SERCOM.cpp @@ -500,6 +500,12 @@ bool SERCOM::startTransmissionWIRE(uint8_t address, SercomWireReadWriteFlag flag { // Wait transmission complete } + // Check for loss of arbitration (multiple masters starting communication at the same time) + if(!isBusOwnerWIRE()) + { + // Restart communication + startTransmissionWIRE(address >> 1, flag); + } } else // Read mode {