Pис. П10.1. Подключение ИМС К580ВН59 в УОУ
Как показывает схема рис. П10.1 контроллер используется в режиме ведущего (на вход MS/SV# подан сигнал высокого уровня), но без каскадирования (выходы CAS0...CAS2) не используются. Кроме этого, задействованы два входа запросов прерывания IRQ0 (на него подается сигнал с выхода первого канала таймера OUT1) и IRQ1 (на него подается сигнал с выхода готовности приема RxRDY последовательного пользовательского интерфейса RS-232C - IOS2). Оставшиеся входы запросов прерываний соединены с контактами входного разъема Х10, через которые можно подавать запросы на прерывания от внешних источников. Элементы D1, D2, D4 используются в соответствии с рекомендациями [8] по подключению ИМС К580ВН59 к магистрали МП К580ВМ80А при отсутствии системного контроллера К580ВК82/83. Временные диаграммы, поясняющие работу узла контроллера прерываний приведены на рис. П10.2.
Pис. П10.2. Временные диаграммы работы узла контроллера прерыванний
Работа узла контроллера прерываний начинается в момент времени t0, когда на i-ый вход запроса прерываний поступает сигнал высокого уровня. С некоторой задержкой в момент времени t1 контроллер формирует сигнал запроса прерывания у микропроцессора INT. Этот сигнал подается на вход D триггера D4, поэтому системный сигнал запроса прерывания у микропроцессора INTвн# появится несколько позже - в момент времени t2, когда формируется фронт сигнала DBIN#, который тактирует триггер D4. C некоторой задержкой микропроцессор подтверждает прерывание, выдавая в момент времени t3 сигнал INTA высокого уровня. Этот сигнал потенциальный - он не изменится до тех пор пока сигнал INTвн# активен. Для правильной работы контроллера на его вход INTA# необходимо подать три сигнала низкого уровня для считывания трехбайтной команды CALL ADDR. Преобразование потенциального INTA в импульсный INTA# выполняют элементы D1, D2, позволяя микропроцессору считывать в моменты времени t5, t6, t8 соответственно код операции команды CALL (0CDH), два байта адреса подпрограммы-обработчика (ADRL, ADRH), которые записываются в контроллер при инициализации. Первым импульсом INTA# можно сбросить запрос прерывания (см. момент времени t4). Особенностью контроллера является то, что он держит активным сигнал INT только два машинных цикла (см. промежуток времени t1...t7), что явно недостаточно для ввода трехбайтной команды. Для продления сигнала запроса прерывания у микропроцессора используется триггер D4, который держит активным сигнал INTвн# еще один машинный цикл (см. промежуток времени t7...t9).
П10.2. Программное обеспечение измерителя частоты
Программное обеспечение измерителя частоты, в котором используются прерывания, состоит из двух частей: основная программа и программа обслуживания прерывания. Они обособлены друг от друга и связаны только общностью решаемой задачи, поэтому в дальнешем рассматриваются отдельно (см. блочные схемы алгоритмов на рис. рис. П10.3, П10.4).
НАЧАЛО ОБРАБОТЧИКА
|
1. Ввод содержимого счетчика канала 2 и сохранение его в
РОН или памяти
2. Задержка
3. Загрузка счетной величины в счетчик канала 2
4. Загрузка счетной величины в счетчик канала 1
5. Сообщение о конце обслуживания прерывания в контроллер
6. ei
7. ret
|
КОНЕЦ ОБРАБОТЧИКА
Рис. П10.3. Алгоритм функционирования программы обслуживания прерывания измерителя частоты
Алгоритм функционирования основной программы содержит инициализирующую часть (блоки 1...5) и бесконечный цикл, в который входят блоки 6, 7. Инициализирующая часть основной программы производит настройку канала 1 таймера на работу в нулевом режиме для формирования измерительных стробов, канала 2 таймера на работу в нулевом режиме для счета импульсов (блоки 1, 2). Последующие блоки инициализирующей части подготавливают канал 2 таймера к счету импульсов (блок 3) и запускают измерительный строб (блок 4).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.