Если речь про MODBUS: Переключать на передачу непосредственно в тот момент, когда ясно что последует выдача пакета. Для Master это момент фиксации приема ответа по таймауту, для Slave - после правильного приема пакета со своим адресом.
Переключать на прием по прерыванию TXC + 1байтовый интервал. Или по прерыванию по IDLE (если такой есть в МК).
Это мое ИМХО. PS: Про IDLE не уверен, надо смотреть как оно работает. Это вроде индикация IDLE на RxD, но если включить по схеме HalfDuplex (как в примере у Лагунова), то IDLE вроде должно срабатывать.
Насколько я помню при HalfDuplex передаваемые данные так-же идут на прием, поэтому отсчет 1байта по IDLE должен сработать.