arduino / ArduinoCore-sam

80 stars 107 forks source link

Serial3.setTimeout(...) is not expiring with the rx line always idle. #119

Open MaurizioMalaspina opened 3 years ago

MaurizioMalaspina commented 3 years ago

The following code never ends (it loops inside the " Serial3.readString() " when and only when the rx line is always HIGH ('1' logic):

String rxReply;  

Serial3.begin(1200, SERIAL_8N1);

while(!Serial3);

Serial3.setTimeout(200); // 200 is just an example and if you print Serial3.getTimeout() you'll get the right result

rxReply = Serial3.readString();

// When the rx line stays high ('1' logic)  the execution never arrives here, as if the 200ms time-out never expired
// Conversely the code is properly executed when the rx line is low ('0' logic)

Serial.print(rxReply);

Could you take a look at this anomalous behaviour?

Thanks