Hi i use RTS pin for this too. At first You can use HW_UARTAPP_STAT and check BUSY bit in SL_TxIntrHandler(). (The BUSY signal goes HIGH as soon as the data is written to the transmit FIFO (that is, the FIFO is non-empty) and remains asserted HIGH while data is being transmitted. BUSY is negated only when the transmit FIFO is empty, and the last character has been transmitted from the shift register, including the stop bits. BUSY can be asserted HIGH, even though the Application UART might no longer be enabled). like this //wait until fifo emty while((HW_UARTAPPSTAT_RD(pHWHead->dwIndex) & BM_UARTAPPSTAT_TXFE)==0) Sleep(0); // <<<<< EAI MAY BE HERE need remove Sleep and set just; //then FIFO all empty need poling BUSY flag antil TSR and THR not empty //CeSetThreadQuantum (CurHandle[pHWHead->dwIndex], 0); while((HW_UARTAPPSTAT_RD(pHWHead->dwIndex) & BM_UARTAPPSTAT_BUSY)!=0); // i AM use BUSY bit now!!! for TSR empty //manualy set RTS to 0 Volt for put in receive mode external transiver HW_UARTAPPCTRL2_CLR(pHWHead->dwIndex, BM_UARTAPPCTRL2_RTS); //CeSetThreadQuantum (CurHandle[pHWHead->dwIndex], 100); //100 ms this is default qauntum i have inverted RTS in Sl_INIT // if(pSerHead->RS485 == 1) { // HW_UARTAPPCTRL2_SET(pHWHead->dwIndex,BM_UARTAPPCTRL2_INVERT_RTS); // DEBUGMSG(1,(TEXT("_____SL_Reset pSerHead->RS485 == 1 \r\n"))); // } BUT! If you have very very fast answered slave device on rs485(answerede in 1-2 msec) you need put this code in OEMInterruptHandler () i do it by this : //eai addon // If IRQ_AUART1_TX_DMA interrupt if (irq == IRQ_AUART0_TX_DMA) { if(AUART0_LIKE_RS485==1) // set rts to 0 volt HW_UARTAPPCTRL2_CLR(pv_HWregUARTAPP0,BM_UARTAPPCTRL2_RTS); } else if (irq == IRQ_AUART1_TX_DMA) { if(AUART1_LIKE_RS485==1) // set rts to 0 volt HW_UARTAPPCTRL2_CLR(pv_HWregUARTAPP1,BM_UARTAPPCTRL2_RTS); } else if (irq == IRQ_AUART2_TX_DMA) { if(AUART2_LIKE_RS485==1) // set rts to 0 volt HW_UARTAPPCTRL2_CLR(pv_HWregUARTAPP2,BM_UARTAPPCTRL2_RTS); } else if (irq == IRQ_AUART3_TX_DMA) { if(AUART3_LIKE_RS485==1) // set rts to 0 volt HW_UARTAPPCTRL2_CLR(pv_HWregUARTAPP3,BM_UARTAPPCTRL2_RTS); } else if (irq == IRQ_AUART4_TX_DMA) { if(AUART4_LIKE_RS485==1) // set rts to 0 volt HW_UARTAPPCTRL2_CLR(pv_HWregUARTAPP4,BM_UARTAPPCTRL2_RTS); } //eai addon AUARTx_LIKE_RS485 - my globals for control=)