Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_Taimernaja_podsist_obshchee_ADuC.doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
1.44 Mб
Скачать

Таймерная подсистема 10 17.11.2020

Таймерная подсистема

В состав управляющей вычислительной системы УВС обязательно входит подсистема, позволяющая выполнять измерения интервалов времени, а также другие действия со временем. Обычно в состав подсистемы входит несколько узлов, которые принято называть термином «канал таймера» или, более коротко «таймер».

Набор действий, которые можно выполнять, используя «канал таймера», может несколько отличаться для разных УВС, но и в способах реализации (как сделан таймер) и в способах использования (как и в каких ситуациях это применяют) – много общего.

Почему в УВС делают несколько таймерных каналов: а) они могут различаться свойствами и позволять выполнять различные операции со временем б) одного таймерного канала может быть недостаточно для того, чтобы выполнять все необходимые действия.

Основной счетчик

Основа таймера – многоразрядный цифровой счетчик. Он имеет специальный (счетный) вход, на который подается периодически изменяющийся логический сигнал от внутреннего генератора, частота переключений которого FВХ стабильна и известна разработчику (программисту). Каждый период входного сигнала вызывает изменение содержимого счетчика на 1. Некоторые реализации таймеров считают «на сложение», некоторые другие – «на вычитание», наконец есть реализации, в которых программист может программно выбрать направление счета.

Для проведения измерений времени и других действий, счетчик обязательно должен быть программно доступен для чтения. В дальнейшем этот счетчик будем кратко называть «таймер». Таймер последовательно проходит (при счете «на сложение») все значения от 0 до 2n‑1, где n – число разрядов в счетчике таймера, а затем возвращается в состояние 0 (пересчет по модулю 2n). Переход из максимального в нулевое состояние называют переполнением (OV). Время пересчета (между переполнениями) составляет Tп=2n , где =1/FВХ ‑ период входной частоты таймера.

Как увидим далее, бывают случаи, когда желательно (необходимо) иметь доступ к таймеру также и по записи.

Техника измерения времени (чтение счетчика)

Любые измерения времени являются «разностными», поскольку для шкалы времени отсутствует естественный ноль. В технических устройствах, говоря об измерении времени, имеют в виду измерение длительности интервала времени между двумя событиями. Одним из таких событий (начальным) может быть момент включения питания микрокомпьютера (либо момент старта программы).

Говоря далее о событиях, будем иметь в виду любое изменение в УВС.

Два примера: а) внутреннее событие: управляющая программа достигла определенной команды; б) внешнее событие: сработал датчик, подключенный ко входу параллельного порта.

Для измерения интервала времени необходимо прочитать в переменную содержимое таймера в момент первого события, затем еще раз (в другую переменную) в момент второго события, вычислить разность двух этих значений и умножить ее на длину периода входной частоты таймера. Эта техника работоспособна, если интервал времени между событиями не превышает времени пересчета таймера Tп=2n .

(Можно легко показать, что если между моментами захвата двух значений происходит переполнение таймера, то вычитание все равно дает верное значение разности.)

Отметим, что если таймер программно доступен по чтению, то схемотехника чтения таймера обеспечивает (в большинстве реализаций, но не во всех!) несовпадение моментов чтения и модификации значения счетчика, т.е. опасность прочитать нестабильное значение исключена.

При этом способе измерения момент захвата времени несколько запаздывает по отношению к (внешнему) событию, и возникает систематическая ошибка, включающая следующие составляющие: 1) время выявления внешнего события, 2) время чтения таймера. При вычислении разности двух захваченных значений эти ошибки могут частично или полностью скомпенсировать друг друга.

Таким же образом можно измерить время выполнения фрагмента кода, однако в этом случае компенсации ошибок не происходит, поскольку первый отсчет времени делается ДО начала выполнения фрагмента, а второй отчет – ПОСЛЕ завершения фрагмента, в то время как при захвате времен возникновения внешних событий оба отсчета времени делаются ПОСЛЕ наступления событий.

Отметим два момента.

  1. Пока ничего не говорилось, каким образом можно связать наступление события и выполнение команд, которые должны прочитать содержимое таймера.

  2. Задержка между моментом наступления события и моментом, когда программно считывается содержимое таймера, должна быть минимальной и стабильной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]