Problema Lettura risposta modbus

Nei tuoi sketch non vedo la gestione del cambio di stato dei chip 65176, cioè non li commuti da RX e TX per scelta o perché li imposti via hardware?

Io ho usato il bus 485 per il progetto congiunto con Menniti della centralina programmabile che è stata pubblicata sullo scorso numero di Elettronica In. Ho però avuto dei problemi nel gestire i dati durante la commutazione RX/TX, non so se può esere anche il tuo caso. In pratica dovevo materialmente svuotare i registri del buffer hardware della seriale. Ho notato infatti che anche se il buffer seriale software veniva dato per vuoto, in realtà l'ultimo byte poteva essere spedito in ritardo restando nel registro interno del microcontrollore. E questo dava noia perché avevo sempre dati non trasmessi. E questi dati spesso mi confondevano il programma.

Questo è il pezzo di codice che ho messo prima di iniziare la ricezione, che uso per svuotare il buffer:

    if (RS485) { //passo in RX
        while (!(UCSR0A & (1 << TXC0))); //attendo che il buffer TX si svuoti
        flushSerial(); //svuoto il buffer RX
        digitalWrite(RXTX_RS485, RS485RX);
    }

La digitalWrite comanda il pin a cui sono agganciati i piedini RX/TX del Max485 (identico al 65176/75176).
Mentre questo è il codice usato per tornare in TX.

    if (RS485) { //torno in TX
        UCSR0A |= (1 << TXC0); //imposto il buffer TX come vuoto (1-->resetta il bit)
        digitalWrite(RXTX_RS485, RS485TX);
    }

flushSerial è questo:

//svuoto il buffer in ricezione della seriale
void flushSerial() {
    while (Serial.available()) {
        byte temp = Serial.read();
    }
}

ripristino cioè il vecchio comportamento della Serial.flush fino all'IDE 1.0.