Цитата(zltigo @ Mar 19 2008, 10:42)

Предлагаете по приведенному куску не толко догадатся ЧТО Вы хотите сделать, но и правилльно-ли Вы это сделали? Если речь идет о заполнении всего FIFO, то просто тупо забиваете его в прерывании на всю его глубину, посколько известно, что FIFO на данный момент совсем пустое.
Вопрос в том как заполнить FIFO отсылки в одном прерывании.
Для приемного FIFO все понятно если в LineStatusRegister бит Data Ready != 0 в FIFO есть данные можно забирать.
Код
while (U1LSR_bit.DR != 0)
InQueue.Put(U1RBR);
В обслуживании прерывания по причине THRE (UART THR FIFO is empty) есть ли какой либо флаг указывающий что можно писать в Transmit Holding Register? Или писать не более 16 байт (или склолько там размер FIFO)?
Тот же вопрос при запуске посылки. Что бы запустить передачу на до записать в Transmit Holding Register данные. Опять же, если используется FIFO можно записать сразу больше одного байта.
Одну неточность я у себя нашел, чего то запутался с уровнями и приорететами THRE третьй уровень но наиболее важное, соотв в приведенном коде обработчика надо поменять порядок обработки причин наооборот.