Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Вроде как заработало! 23.09.03 11:00 Число просмотров: 1496
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
> Если ты его не проинициализируешь - оно работать вообще не > будет :-)
А как это ФИФО инициализировать?
Старые ДОСовские проги спокойно работают на 16550А, и даже не "догадываются" про наличие ФИФО. Они-то это ФИФО не инициализируют.
Может же моя програмка поступать так же?
> Так и есть. Чтобы проверить наличие отложенного прерывания > надо прочитать IIR еще раз. То есть делать это в цикле пока > бит 0 не станет в 1.
Попробовал вчера вечером - есть эффект!
> Приоритеты прерываний в порядке убывания следующие: RLS, > RDA, CTI, THR, MS. А теперь по русски: > > RLS - Line error > RDA - Char received > CTI - Timeout (только для FIFO) > THR - Char transmitted > MS - Modem status changed > > Как сбрасываются ты знаешь. После сброса прерывания с более > высоким приоритетом нужно проверить нет ли прерывания с > меньшим. Для этого нужно повторно прочитать IIR.
Долго погонять не удалось - времени было мало - поздно приехал. Может быть разок зависало, или мне показалось. Раньше и секунды не работало. Вчера несколько раз по минутке гонял - судя по всему помогло.
Спасибо большое за подсказку. А то я во всяких МАНах и ФАКах ковырялся - ничего об этом не было, видимо старые были, еще про 16450. В некоторых ошибки были - не было указано, что нужно OUT2 установить, чтобы прерывания шли.
Один вопрос остался - как узнать, что это именно 16550А, как установить длину очереди или запретить очередь, как после закидывания байта в передатчик понять, что туда еще один влезет (в очереди еще есть место)?
|
|
|