IRQ/К555ИД4

Aug 19, 2003 3 Replies

В каком диапазоне лежит допустимач длительность удержания картой линии IRQ ? Какова таблица истинности К555ИД4 ? В справочнике не нашёл...



Hello, Alexander!

AD> Хочешь чтобы гарантировано работало? Удерживай её до тех пор, пока AD> есть условия для запроса.

Т.е. хоть целую секунду ?

AD> После обслуживания драйвером железо должно снять запрос, а драйвер ещё AD> отчитаться контроллеру прерываний что прерывание обслужено

А вот если нет драйвера ?

Я не до такой степени подкован, чтобы писать эти самые драйвера. У меня есть прога на C++, следящая за возникновением прерывания. Я хочу сделать так: Если получено прерывание, обращаемся к карте. Карта в ответ на обращение по своему адресу снимает запрос прерывания. Покатит такой вариант или у линии IRQ есть максимальная граница длины импульса ?

VT>> Какова таблица истинности К555ИД4 ? В справочнике не нашёл...

AD> P.S. Не лез бы ты пока в прерывания...

...А надо.

With best regards, Vadim. E-mail: snipped-for-privacy@nc.ru

Hello, Vadim! You wrote to Alexander Derazhne on Wed, 20 Aug 2003 16:07:18 +0000 (UTC):

AD>> Хочешь чтобы гарантировано работало? Удерживай её до тех пор, AD>> пока есть условия для запроса.

VT> Т.е. хоть целую секунду ?

Угу. Пока у ЦП руки не дойдут до обслуживания.

AD>> После обслуживания драйвером железо должно снять запрос, а драйвер AD>> ещё отчитаться контроллеру прерываний что прерывание обслужено

VT> А вот если нет драйвера ?

Работать не будет.

VT> Я не до такой степени подкован, чтобы писать эти самые драйвера.

Тогда не дёргай их. Дёрнуть легко, обработать потом, не завесив машину - труднее. Во всяком случае для тебя (пока).

VT> У меня есть прога на C++, следящая за возникновением прерывания. Я VT> хочу сделать так: VT> Если получено прерывание, обращаемся к карте. VT> Карта в ответ на обращение по своему адресу снимает запрос VT> прерывания.

Это называется режим полинга, т.е. ты постоянно опрашиваешь некий регистр. При этом абсолютно всё равно какой регистр опрашивать - у себя на плате или в контроллере прерываний. Неписанные правила требуют иметь где-то у себя бит(ы) готовности, бит(ы) маски и общий бит разрешения прерываний. Все возможные причины запроса прерываний сводятся воедино через свои маски и потом, через общий бит выводятся на шину. Одновременно они (причины и ещё что нужно) доступны в регистре готовности. Общая идея такова: 1) драйвер инициализирует плату; 2) драйвер запоминает старый вектор прервывания и ставит свой; 3) драйвер разрешает работу с этим прерыванием в контроллере прерываний; 4) драйвер снимает (или ставит - как логика сделанна) биты масок; 5) при возникновении прерывания управление передаётся процедуре-обработчику из состава драйвера; 6) драйвер считывает регистр готовности и узнаёт чего и сколько ему предстоит обработать, решает, кто самый приоритетный из имеющихся запросов; 7) обрабатывает запрос; 8) возвращается к п.6 пока не будут исчерпаны все причины; 9) к этому моменту запрос с шины должен быть снят; 10) драйвер сообщает контроллеру прерываний, что прерывание обслужено. 11) по завершении работы драйвер выполняет п.3 и 2 в обратном направлении :-).

На этом пути прикопано немало граблей и грабелек, вроде "передатчик всегда готов", переполнения буфера и т.д. Оно тебе надо?

Более простой путь 1), 6), 7), 8) без изменений; 2)...5), 9)...11) отсутствуют

Начни с этого и добейся работы. Это не просто так - контроллеру прерываний _нужно_ сказать, что прерывание обработано, иначе можно повесить систему. Если же ты не используешь их (прерывания) по прямому назначению - лучше опрашивай свой регистр, не занимай линию, они в писишке в дефиците.

VT> Покатит такой вариант или у линии IRQ есть максимальная граница VT> длины импульса ?

Нет ограничения.

VT>>> Какова таблица истинности К555ИД4 ? В справочнике не нашёл...

AD>> P.S. Не лез бы ты пока в прерывания...

VT> ...А надо.

Так, как ты описал - абсолютно не надо.

With best regards, Alexander Derazhne.

Привет Vadim!

19 Aug 03 18:46, Vadim Tzirulnicov писал All:

VT> В каком диапазоне лежит допустимач длительность удержания картой линии VT> IRQ ?

Hа ISA? Hеограниченно. Это в смысле именно "держать", то есть выдавать низкий уровень. Тебя же, наверное, интересовала длительность "отпускания" этой линии - смотри документацию на контроллер прерываний. Это зависит от режима, на который он запрограммирован.

VT> Какова таблица истинности К555ИД4 ? В справочнике не нашёл...

Hе пользуйся микросхемами, на которые нет datasheet от производителя.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Северо-Кавказская межрегиональная ассоциация анонимных соискателей.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required