Никак не могу наладить прием. Имеется проц с TL16C550 - подключен стандартно (разве что ADS соединен с CS).
Выставил trigger level для FIFO = 4 байта. При приеме этих 4 байт вызывается прерывание, там мы смотрим, что вызвало прерывание - если прием данных (или таймаут) - то читаем LSR (смотрим есть ли хоть один байт в FIFO), и потом читаем RBR и так до тех пор, пока LSR не покажет, что больше байт в FIFO нет (бит 0 не сбросится). Выходим из прерывания. И так далее...
Все хорошо, но такой глюк - если хотим принять больше 17 байт, то принимаем эти 17 байт, после чего прием обрывается, и прерывание не сбрасывается в районе 8 мс (скорость обмена = 115200). После этого все восстанавливается и мы опять можем принять эти 17 байт. Ошибок LSR, вроде никаких не показывает...
Такое ощущение, что заполняется полностью FIFO и что-то происходит непонятное. Но я же регулярно читаю RBR - как такое может быть? Ничего не понимаю... :-( Может кто чего подскажет?