Problema con MAX485 e DE/RE

Boh, non parlava di quali distanze stesse gestendo.
Comunque mi sono accorto di una cosa per un progetto in cui ho usato la RS485.
Invertendo la modalità di trasmissione, un Atmega in standalone ho avuto un sacco di problemi.
In pratica ho risolto attendendo che i buffer hardware del chip si svuotassero prima di switchare da una modalità all'altra.
Attenzione!! Parlo di buffer hardware, il registro del chip, non il buffer software.

Ti passo il codice che usavo per switchare il chip transceiver:

//passaggio da TX a RX
while (!(UCSR0A & (1 << TXC0))); //attendo che il buffer TX si svuoti
while (Serial.available()) {
  byte temp = Serial.read();
}
digitalWrite(RXTX_RS485, RS485RX); //qui faccio il passaggio a RX

Mentre per l'inverso:

//passaggio da RX a TX
UCSR0A |= (1 << TXC0); //imposto il buffer TX come vuoto (1-->resetta il bit)
 digitalWrite(RXTX_RS485, RS485TX);

Non so se può servirti. Io ci sono diventato matto dei giorni interi.