Each node on the half-duplex RS485 bus should start transmitting only if all the other nodes are receiveing (their transmitters are all disabled).
Usually the bus is master-slave with the master sending a frame request to a single slave and the slave send back a frame answer. In this scenario, slave must be sure to start transmission of the answer after the master has disabled its transmitter. At the same time, even the master must be sure the slave have disabled tx, before sending a new frame request.
One simple solution to this problem is to use a microcontroller that automatically moves TE (Transmitter Enable) signal. For example, the USART peripheral of SAMC21 from Atmel (Cortex-M0+) has this nice feature. Of course, *all* the nodes on the bus should use such a microcontroller. This solution has no software overhead for TE signal management.
Another solution is to introduce a short delay before answering (on the slaves) and a short delay before sending the next frame request (on the master). The amount of this delay is typically short, so often it is implemented with a blocking loop (how bad!). If you are lucky, you have a free hw timer that can be used for this goal. Of course, there is some overhead in the firmware to manage the direction signal.
Another solution is to use the USART peripheral itself to implement the short delay. Before transmitting a frame, some dummy bytes can be transmitted first. During the transmission of dummy bytes, the TE signal keeps the transmitter disabled. Only when the last dummy byte has shifted out completely, the TE signal can enable the transmitter. This solution has some overhead too. A counter of dummy bytes already transmitted should be implemented.
There is another solution that is more elegant and doesn't introduce any overhead to manage TE signal. I heard about this trick somewhere (maybe here) in the past, but I never tried to implement on my projects. The trick can be applied if the frames on the bus can start with a variable number of SOF (Start of Frame) characters and the SOF character can be set to 0xFF. In this case the transmitter is able to transmit a new frame immediately after receiving the previous, adding some SOF characters at the top of the frame.
0xFF appears as a single Start Bit (short negative pulse at TTL domain). Now, if the receiver disables the transmitter between any two Start Bits (or before the Start Bit of the first SOF char) , it will see some (or no) SOF chars at the start of the frame and it will discard them silently.However I can't explain what happens if the receiver disables its transmitter *in the middle* of a Start Bit of a SOF char. In this case, I think the receiver can be confused and can see some frame errors... and this not only for the first byte, but for all the bytes in the frame if they are transmitted as a burst (with a single Stop Bit between them).