На начало страницы
| Главная страница | Обмен с внешними устройствами | Системная шина ISA | Платы расширения для шины ISA |
| Пример системы сбора данных | Система виртуальной отладки | Справочная информация |
Построение систем сбора и обработки 
информации
Платы расширения для шины ISA
Состав программного обеспечения

Состав программного обеспечения (ПО), необходимого для функционирования системы сбора и обработки информации, можно и нужно формировать уже в процессе определения структуры системы. При этом уточняется сколько и с какими функциями требуется обработчиков прерываний. Затем разpабатываются алгоpитмы реализации функций для составных частей ПО системы.
Основные функции, выполняемые системами, всегда включают в себя сбор, анализ, представление данных на элементах индикации или их передачу на приемники или регистраторы сообщений. Обычно у пользователей есть две возможности для разработки ПО, реализующего все заданные функции системы:
- разработка оригинального ПО на выбранном языке,
- использование специальных средств как для разработки систем, так и для реализации отдельных функций.
Простейшим способом программирования сбора или вывода данных, а точнее способом обмена с платой расширения и внешними устройствами ПК, является программирование на Ассемблере на уровне портов ввода-вывода. Это требует большого времени, но, с другой стороны, требует детального знания аппаратной части как БИС на плате, так и стандартных устройств ПК. Именно последнее и проверяется в данном задании. Отсутствие сложных функций обработки данных также не препятствует использованию языка Ассемблера.
Программное обеспечение для любого из вариантов заданий состоит из двух частей - транзитной и резидентной.
Транзитная часть ПО осуществляет:
- считывание параметров из конфигурационного файла или из командной строки;
- проверку наличия платы расширения по указанному в конфигурационных данных адресу;
- программную инициализацию БИС на плате расширения, внешних устройств ПК, задание исходного состояния отдельных переменных и т.д;
- сохранение старых и загрузку новых векторов прерываний;
- резидентную загрузку ПО с контролем повторной загрузки.
Использование конфигурационного файла или командной строки является способом обмена конфигурационной информацией между платой расширения и ПО - таким образом программе сообщается базовый адрес платы, номер выбранной на плате линии IRQ или номер IRQ, на который плату требуется программно настроить. В случае описываемого варианта системы в файле должна быть указана и величина T. Текст файла должен быть удобен для визуального чтения. Ясно, что в программах нельзя явно указывать адреса портов платы или номера прерываний - при их изменении придется заново транслировать и отлаживать программу.
Инициализация БИС на плате выполняется только при наличии платы в слоте шины. В нашем случае должны быть настроены БИС параллельного интерфейса на нужные режимы работы и разрешена выдача ими запросов прерываний от сигналов S1 и S2. (Прерывания от синхроимпульса SYN для правильного функционирования системы должны разрешаться только после поступления сигнала S1). Также необходимо настроить БИС UART на выбранную частоту и режим передачи. Для отдельных вариантов может потребоваться, например, и инициализация последовательного порта ПК.
В программе инициализации также следует обеспечить вывод в порты платы расширения данных, которые обеспечат исходный сброс индикаторов, сброс АЦП и т.п. Стандартная "заглушка" в обработчике прерывания 1Ch (часть обработчика прерывания от системного таймера) в нашем варианте должна быть заменена. В ней должна быть сформирована переменная, позволяющая выполнять опрос АЦП с периодом T, и установлен в нулевое состояние флаг, разрешающий этот опрос.
Резидентная часть ПО может содержать один или несколько прогpамм обpаботки внешних аппаpатных пpеpываний. В нашем случае это один обработчик прерывания от платы расширения и обработчик прерывания от системного таймера.
Последовательность
разработки системы

Структурная схема платы
Состав программного
обеспечения
Варианты
реализации платы

ФУНКЦИИ ОБРАБОТЧИКОВ ПРЕРЫВАНИЙ
Прерывание от платы расширения
Плата расширения использует только одну линию запроса прерывания, поэтому в самом начале обработчика прерывания от платы должен выполняться анализ источника запроса. Последовательность опроса флагов готовности, приоритет запросов в случае их одновременного появления определяется в каждом отдельном варианте системы. В нашем случае приоритеты определить можно по-разному, например, присвоить высший приоритет запросу от сигнала 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.
Варианты
реализации платы

| На главную страницу | На начало раздела | На начало страницы | © КСиТ МИФИ, 2001 г.