Ввод данных с импульсного датчика положения
Рассмотрим случай импульсного датчика положения. В качестве выходного сигнала с такого датчика поступает последовательность импульсов, поступление каждого импульса соответствует изменению измеряемого положения на один отсчет. Для определения направления перемещения используется схема формирования импульсов (СФИ), которая имеет два выхода: с одного поступают импульсы при изменении положения в положительном направлении, с другого — в отрицательном.
Таким образом, для получения истинного значения положения необходимо вести подсчет поступающих с датчика импульсов с соответствующим знаком. Для этого используется реверсивный счетчик, на выходе которого мы всегда имеем текущее значение измеряемой величины. А для ввода данных со счетчика в МПС можно использовать
параллельный программируемый интерфейс (рис. 1).
На данном рисунке приведена схема, обеспечивающая
синхронный обмен между УСО и
ведущим устройством (так как счетчик всегда содержит текущее значение измеряемой величины, проверка готовности УСО не производится).
Если значение, измеряемое таким датчиком, изменяется нечасто, более приемлемым вариантом является
обмен по прерываниям, так как при его использовании обращение к УСО осуществляется только при условии изменения значения в счетчике, что позволяет более эффективно использовать процессорное время.
Схема УСО, работающего с использованием обмена по прерываниям, требует использования
контроллера прерываний. Пример такой схемы приведен на рис. 2.
В качестве сигнала запроса на прерывание используется собственно импульс, приходящий с импульсного датчика. Так как изменение значения счетчика происходит при приходе и "положительного" и "отрицательного" импульса, на вход IRQ контроллера подаются сигналы с обеих линий, объединенные по логике "ИЛИ".
Если измеряемое значение изменяется часто (счетные импульсы поступают с большой частотой), использование обмена по прерываниям приведет к чрезмерной загрузке процессора. В этом случае более эффективным представляется использование обмена по методу
прямого доступа в память. Сигнал, использованный в схеме рис. 2. в качестве запроса на прерывание, может быть использован как запрос на обмен по методу ПДП.
Ввод данных с импульсного датчика скорости
В качестве выходных данных с импульсного датчика скорости поступает последовательность импульсов. Количество импульсов в единицу времени пропорционально измеряемой скорости. Таким образом, задача УСО заключается в подсчете импульсов, поступающих с датчика в течение заданного интервала времени.
Задача собственно подсчета может быть решена при помощи счетчика (нереверсивного).
Задача "отмеривания" интервала времени — с помощью программируемого таймера (ПТ).
ПТ должен работать в режиме формирования одиночных импульсов с заданным интервалом. Интервал определяется частотой тактовых импульсов, поступающих на вход CLK счетного канала ПТ и начальным значением счетчика, загружаемым в ПТ на этапе программирования (рис. 3)
По окончании заданного интервала времени в счетчике будет находиться число, пропорциональное измеряемой скорости. Оно должно быть введено в МП, например, с использованием обмена по прерываниям. Однако за время, необходимое для выполнения цикла обмена, с датчика могут поступить следующие импульсы. Значение в счетчике увеличится, и не будет соответствовать количеству импульсов, подсчитанному в течение интервала времени, отмеренного таймером. Отсюда следует, что по окончании интервала подсчета значение, имеющееся в счетчике, должно быть зафиксировано в буферном регистре для последующей передачи его в
МП.
Предварительный вид УСО, построенного в соответствии с этими принципами, представлен на рис. 4.
Схема включения программируемого таймера обеспечивает доступ к нему на этапе программирования для занесения в его внутренние регистры информации, необходимой для настройки на заданный режим работы (в частности — начального значения счетчика).
Импульс, формируемый на выходе OUT, подается на вход STB буферного регистра, и по заднему фронту его происходит "фиксация" значения, находящегося в счетчике (рис. 5).
Сам буферный регистр подключается к
шине управления таким образом, чтобы к нему был возможен доступ по чтению как к
УВВ (рис. 6).
В приведенной схеме для обращения к буферному регистру на
шине адреса должен быть установлен адрес 0004h. Чтение данных из буферного регистра выполняется командой
IN AL, 0004h
Логично предположить, что после окончания подсчета и фиксации полученного значения в буферном регистре, счетчик должен быть сброшен (его значение должно быть установлено в 0). Для этой цели может быть использован второй канал программируемого таймера, работающий в режиме ждущего одновибратора с запуском по положительному фронту сигнала GATE1 (рис. 7).
Временная диаграмма работы УСО представлена на рис. 8.
Импульс с выхода первого канала ПТ (OUT0) фиксирует значение в БР (по заднему фронту) и запускает счет в канале 2 (по заднему фронту, так как OUT0 соединен со входом разрешения счета второго канала GATE1 через инвертор). По окончании счета в канале 2 на выходе OUT1 формируется единичный импульс, выполняющий сброс счетчика. В этом случае реальное время подсчета импульсов — с момента сброса счетчика по переднему фронту сигнала OUT1 до момента фиксации подсчитанного значения в БР по заднему фронту сигнала OUT0.
Время счета в канале 2 (пропорциональное

— начальному значению счетчика канала 2) должно быть как можно меньшим, обеспечивающим лишь завершение переходных процессов в буферном регистре. Приведенная временная диаграмма соответствует

. В этом случае время счета второго канала таймера равно

и сброс счетчика происходит через

после фиксации данных в буферном регистре.
Схема, представленная на рис. 7, предусматривает
синхронный обмен с МП. Так как в БР в любой момент времени хранится последнее подсчитанное количество импульсов (пропорциональное измеряемой скорости), оно может быть введено в МП также в любой момент времени путем выполнения команды ввода из УВВ
IN AL, 0004h
Проверка готовности не требуется.
В случае, когда интервал подсчета импульсов достаточно велик и значение в процессор желательно ввести немедленно по его завершению, может быть использован
обмен по прерываниям. В качестве сигнала запроса на прерывание от УСО может быть использован сигнал
OUT1 (рис. 7), так как он формируется непосредственно после фиксации значения в буферном регистре.
При необходимости непосредственного ввода значения скорости в ЗУ может быть использован метод обмена в режиме
ПДП (по аналогии с рассмотренными ранее УСО). В качестве сигнала запроса обмена по методу ПДП может быть использован все тот же сигнал
OUT1 (рис. 7).