Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Народ, помогите пожалуйста разобраться с TL16C550... (+)
Отправлено
DarkGhost 14 февраля 2008 г. 10:50
Никак не могу наладить прием. Имеется DSP с TL16C550 - подключен стандартно (разве что ADS соединен с CS).
Выставил trigger level для FIFO = 4 байта. При приеме этих 4 байт вызывается прерывание, там мы смотрим, что вызвало прерывание - если прием данных (или таймаут) - то читаем LSR (смотрим есть ли хоть один байт в FIFO), и потом читаем RBR и так до тех пор, пока LSR не покажет, что больше байт в FIFO нет (бит 0 не сбросится). Выходим из прерывания. И так далее...
Все хорошо, но такой глюк - если хотим принять больше 17 байт, то принимаем эти 17 байт, после чего прием обрывается, и прерывание не сбрасывается в районе 8 мс (скорость обмена = 115200). После этого все восстанавливается и мы опять можем принять эти 17 байт. Ошибок LSR, вроде никаких не показывает...
Такое ощущение, что заполняется полностью FIFO и что-то происходит непонятное. Но я же регулярно читаю RBR - как такое может быть? Ничего не понимаю... :-( Может кто чего подскажет?
Составить ответ | Вернуться на конференцию
Ответы