Столкнулся со сложностью - надо точно отследить "улет" последнего байта посылки (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\ >