|
Прерывание
от платы расширения
Плата расширения использует только
одну линию запроса прерывания, поэтому в самом начале обработчика прерывания от платы должен
выполняться анализ источника запроса. Последовательность опроса флагов готовности, приоритет
запросов в случае их одновременного появления определяется в каждом отдельном варианте системы.
В нашем случае приоритеты определить можно по-разному, например, присвоить высший приоритет
запросу от сигнала S1, низший - от S2.
Поступление сигнала SYN в процессе обработки прерывания от S1 или S2 следует запретить.
Если прерывание вызвано сигналом
S1, то в обработчике только устанавливается флаг разрешения приема
синхроимпульсов, точнее говоря, разрешаются прерывания от сигнала SYN.
Если прерывание вызывается сигналом
SYN, то запрещаются прерывания от всех сигналов, считываются данные с
источника ВУА. После приема 5-го байта (5-го прерывания от SYN) вычисляется среднее значение. Для передачи этого значения в приемник
ВУВ через БИС UART предварительно проверяется поступление в БИС
разрешения приема. Так как для передачи используются только
3 линии
в канале связи, то сигналом подтверждения может быть посылка любого или определенного байта от
приемника. Поступление байта может определяться или по сигналу прерывания от БИС, или по чтению
регистра состояния БИС UART, что и выбрано для нашего варианта. Если вычисленное среднее
значение оказывается меньшим 60, то оно выводится через параллельный порт ПК (программирование
на уровне регистров порта с соблюдением или протокола интерфейса Centronics или любого иного
протокола, выбранного для обмена) в ПУ на индикацию с преобразованием в
двоично-десятичный код. Перед выходом из обработчика разрешаются прерывания от всех сигналов.
Прерывание от сигнала S2 запрещает прерывания от сигнала SYN и устанавливает
некоторый флаг, разрешающий опрос АЦП по сигналам прерывания от таймера.
После обработки запроса прерывания
до выхода из программы обработчика необходимо опять проверить флаги готовности, так как
возможно, что успел поступить еще один запрос. Перед выходом из обработчика прерывания от платы
оба контроллера прерывания должны быть извещены об окончании обработки прерывания посылкой
команд EOI.
Прерывание
от системного таймера
Системный таймеp, а точнее его канал
2, вызывает пpеpывание 08h c интеpвалом 55 мс и для выполнения pассматpиваемой задачи этот
канал может быть пеpепpогpаммиpован и, кpоме того, должен пеpепрогpаммиpоваться всякий pаз пpи
изменении величины Т. Этот вариант крайне нежелателен из-за несомненного
нарушения работы ПК и используется замена стандартного обработчика 1Ch.
Если флаг разрешения опроса АЦП от
таймера установлен, то в этом обработчике выполняется пересчет числа прерываний в величину
T. В каждом случае, когда общее количество прерываний достигает этой
величины, выполняется запуск АЦП, анализ его готовности, считывание данных, их накопление и
вычисление среднего значения. После 5-го цикла опроса для передачи этого значения в приемник
ВУВ через БИС UART также предварительно проверяется поступление в БИС
байта разрешения приема. Дожидаться прихода байта в одном входе в обработчик нельзя -
прерывание от таймера может занять большое время, а прервать это прерывание никто не может.
Лучше организовать анализ регистра состояния БИС при каждом входе в обработчик (18 раз в с).
Для вывода кода среднего значения
на индикатор оно преобразуется из выходного кода АЦП в двоично-десятичный код. После вывода
данных разрешаются прерывания от сигнала S1.
|
|
Варианты
реализации платы |