PIC - как точно отследить отправку последнего байта посылки в UART (485)?

Столкнулся со сложностью - надо точно отследить "улет" последнего байта посылки (485). Прерывание (TXIF) не дает такой инфо. TRMT не дает прерываний :-() работает в фоновом режиме - запустил передачу и забыл, пока счетчик байт не обнулится (конвейер в обработчике прерываний). Проблема возникла с необходимостью закрыть передачу (TXEN в 0) - чтобы постоянно не "тарахтели" TXIF и переключить 485 на прием.

Я работаю с 2мя UART (8720). В одном после отправки последнего байта я по прерыванию (TXIF)анализирую в обработчике TRMT на "пустоту" - как только он освободился, TXEN в 0. Но во втором UART это не проходит - после записи в TXREG последнего байта (в обработчике прерываний)посылки TXIF поднимается, по выходу из обработчика проц из-за TXIF=1 снова в него впадает, но TRMT еще не успевает обнулиться (показать занятость) - в рез. режется последний байт (TXEN в 0). Обработка этого UARTа производится на выходе из обработчика прерываний, первого - на входе. Все по high priority. Мне приходится увеличивать принудительно счетчик байтов на 1. Неужели достаточно разного кол-ва команд после загрузки в TXREG, чтобы это повлияло на установку TRMT в 0? Все испытывалось на 9600.

-- Rifkat < Team /Grave\ >

Reply to
Rifkat Abdulin
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.