Skip to content

Commit 9a7f2be

Browse files
committed
Wire slave sender working with stops and with repeated starts
1 parent ab2ed90 commit 9a7f2be

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

libraries/Wire/Wire.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ void TwoWire::onService(void)
220220
if ( sercom->isSlaveWIRE() )
221221
{
222222
if(sercom->isStopDetectedWIRE() ||
223-
(sercom->isAddressMatch() && sercom->isRestartDetectedWIRE())) //Stop or Restart detected
223+
(sercom->isAddressMatch() && sercom->isRestartDetectedWIRE() && !sercom->isMasterReadOperationWIRE())) //Stop or Restart detected
224224
{
225225
sercom->prepareAckBitWIRE();
226226
sercom->prepareCommandBitsWire(0x03);
@@ -240,6 +240,10 @@ void TwoWire::onService(void)
240240

241241
if(sercom->isMasterReadOperationWIRE()) //Is a request ?
242242
{
243+
// wait for data ready flag,
244+
// before calling request callback
245+
while(!sercom->isDataReadyWIRE());
246+
243247
//Calling onRequestCallback, if exists
244248
if(onRequestCallback)
245249
{

0 commit comments

Comments
 (0)