Цитата(MALLOY2 @ Feb 21 2007, 17:43)

Вот кривизна, одно растройство, придется драйвер переписывать

, а что их привело к такому кривому решению ?
К какому кривому?
Мой примерный перевод (ускоренным ПРОМПТом)
Цитата
UART0 THRE прерывание (U0IIR [3:1] = 001) - прерывание третьего уровня (приоритета), оно активизируется когда UART0 THR FIFO пуст и выполнены определенные условия.
Эти условия предназначены, чтобы дать UART0 THR FIFO шанс заполниться данными, чтобы устранить много прерываний THRE при запуске передачи.
Прерываний THRE имеет задержку на один символ минус СТОП-бит всякий раз, когда THRE=1 и не было по крайней мере двух символов в U0THR единовременно начиная с последнего THRE = 1 события. Эта задержка создана, чтобы дать время ЦПУ на запись данных в U0THR без прерывания THRE.
Прерывание THRE активизируется немедленно, если UART0 THR FIFO содержал как минимум два символа единовременно, а в настоящее время U0THR пуст.
Если плюёте пачками (в идеале по 16 байт) то прерывание когда очередь пуста, но ещё передаётся последний байт. Т.е. можно ещё 16 байт в ФИФО загонять.
Если шлёте по одному байту то прерывание когда передаётся стоповый бит.
Вот отсутствие прерывания по TEMP многие кто реализовывал 485 считают более существенным недостатком.
Но... Во времена создания 16550 считали каждый транзистор в чипе.