Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Я вроде как знаю ;-) 12.03.04 15:56 Число просмотров: 1906
Автор: HandleX <Александр М.> Статус: The Elderman
|
Когда два порта сидят на одном прерывани, система не может определить, сколько и от какого устройства пришло прерывание, если их активировали два устройства одновременно. Вот контроллер прерываний можно настроить на два метода работы с линиями прерываний — LEVEL и EDGE. Первый метод (самый старый) работает по уровню — т.е. если он активен, то прерывание пришло. Теперь представим, что в этот момент другое устройство, которое "сидит" на этой линии IRQ, тоже хочет поднять прерывание. Но обламывается, т.е. оно думает, что оно его подняло, но на самом деле оно не будет "замечено" системой, поскольку уровень линии IRQ уже был активен. А второй тип (EDGE) работает по изменению уровня. Т.е. если устройство хочет поднять прерывание, оно инвертирует состояние линии, это замечается контроллером прерываний на 100%.
Короче шина ISA использует использует тип прерываний LEVEL, и, соответственно, контроллеры com-портов, будучи на этой шине, глючат, если пытаться использовать одновременно два com-порта на одном прерывании.
|
|
|