Sembra che adesso funzioni anche in RS485. Ho rimosso i vari delay() che c'erano nelle librerie (alcuni aggiunti anche da me durante le prove) e sistematto bene i registri UCSRXA prima e dopo la ricezione e usando il vecchio flush()
//svuoto il buffer in ricezione della seriale
void flushSerial() {
while (Serial.available()) {
byte temp = Serial.read();
}
}
come suggerito da leo72. Unica cosa che mi rimane da fare, con una lettura una volta al secondo, certe volte sbaglia e ritorna errore.
Allego uno zip con le librerie funzionanti (almeno per me) e con gli sketch di test che ho usato, magari servono a qualcuno.
ModbusRS485_Test.rar (359 KB)