Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЦУ_конспект_12.docx
Скачиваний:
68
Добавлен:
14.11.2019
Размер:
5.57 Mб
Скачать

2.3 Таймеры и процессоры событий

Большинство задач управления, выполняемых МП- системами, должны выполняться в реальном времени. "Управление в реальном времени" означает способность МП- системы получить информацию о состоянии управляемого объекта, выполнить необходимые расчеты и сформировать управляющие воздействия в течение интервала времени, до истечения которого эти воздействия вызовут желаемое изменение поведения объекта.

Возможность использования МК для управления в реальном времени определяется в первую очередь производительностью процессорного ядра, т.к. МК должен успеть выполнить расчет корректирующего воздействия. Однако только высокой производительности недостаточно. Необходимо организовать прием информации с датчиков и выдачу управляющих сигналов так, чтобы при требуемой точности на эти операции расходовалось как можно меньше времени. В противном случае не останется времени для выполнения вычислений. Необходимо эффективное распределение задач управления между различными модулями МК. Для этого используются различные подсистемы МК, но в первую очередь среди них выделяют подсистему прерываний и модуль таймера. Развитая подсистема прерываний позволяет сократить время реакции МП- системы на изменения состояния объекта. Модули таймеров служат для приема информации от датчиков с времяимпульсными выходами, а также для формирования управляющих воздействий в виде последовательности импульсов с изменяющимися параметрами.

Типовые задачи, которые должен выполнять МК для эффективного управления в реальном времени:

  • Отсчет равных интервалов времени заданной длительности, повтор алгоритма управления по истечении каждого такого временного интервала. Эту функцию называют формированием меток реального времени.

  • Контроль за изменением состояния линии ввода МК, сконфигурированного как вход таймера.

  • Измерение длительности сигнала на линии ввода МК.

  • Подсчет числа импульсов внешнего сигнала на заданном временном интервале.

  • Формирование на линии вывода МК сигнала с программируемой задержкой по отношению к изменению сигнала на линии ввода.

  • Формирование на линии вывода МК импульсного сигнала с программируемой частотой и программируемым коэффициентом заполнения.

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

Модуль таймера 8- разрядного МК образован 16-разрядным счетчиком со схемой управления.

Рис. – Структура модуля таймера/счетчика

В карте памяти МК счетчик отображается двумя регистрами: ТН – старший байт счетчика, TL – младший байт. Регистры доступны для чтения и для записи. Направление счета счетчика – только прямое, т.е. при поступлении тактовых импульсов код счетчика изменяется в сторону увеличения. В зависимости от программных настроек счетчик может использовать один из двух источников тактирования:

  • Импульсную последовательность с выхода управляемого делителя частоты fBUS

  • Внешнюю импульсную последовательность.

В первом случае счетчик работает в режиме таймера, во втором –счетчика событий. При переполнении счетчика устанавливается триггер переполнения TF, который генерирует запрос на прерывание, если прерывания от таймера разрешены. После переполнения работа счетчика продолжается. Последовательность изменения кодов следующая: $FFFF, $0000, $0001 и т.д. Пуск и останов счетчика могут выполняться только под управлением программы посредством установки/сброса соответствующего бита. Программа также может установить старший (ТН) и младший (TL) байты счетчика в произвольное состояние, или прочитать текущий код счетчика. Однако эти операции не следует выполнять в процессе счета, т.к. длительность операции чтения или записи может превысить длительность периода частоты тактирования счетчика. Тогда за время чтения одного из байтов, второй успеет измениться. Так же может оказаться ошибочной операция записи. Например, пользователь записывает в регистры счетчика код $0005: сначала старший байт $00, а затем младший — $05. Если текущее состояние счетчика пользователю неизвестно, то может оказаться, что на момент завершения операции записи старшего байта младший равен $FF. Тогда в процессе записи младшего байта старший, ранее записанный, успеет измениться, и конечный код счетчика будет равен $0105.

Если таймер используется для измерения временного интервала tX, то необходимо выполнить следующую последовательность:

1. Прервать выполнение текущей программы при изменении сигнала 01 на линии РТх1. В подпрограмме прерывания установить регистры счетчика таймера в $0000 и разрешить счет.

2. При изменении сигнала на линии РТх1 с 1 на 0 еще раз прервать выполнение программы МК. В подпрограмме прерывания остановить счет. Код в регистрах ТН и TL будет равен длительности интервала tx, выраженной числом периодов частоты тактирования счетчика таймера.

Рис. Измерение временного интервала таймером

Однако такой способ измерения годится для сигналов, длительность которых составляет единицы мс и более. Моменты разрешения счета таймера t1, и его остановки t2 не совпадают с моментами изменения сигнала на входе РТх1, т.к. пуск и останов выполняются в подпрограмме прерывания. Время перехода на подпрограмму прерывания – величина случайная, которая зависит от особенностей выполнения программного обеспечения МП- системы. Так, если рассматриваемых каналов измерения несколько и изменение сигналов на входах PTxi произошло одновременно, то в первом из обслуженных по прерыванию каналов ошибка будет минимальной, а в последнем – максимальной. Эта может составить несколько десятков мкс, поэтому рассмотренный метод не может быть использован для измерения временных интервалов микросекундного диапазона. Наряду с задачей измерения временного интервала может возникнуть необходимость одновременного формирования времяимпульсных сигналов по нескольким каналам. Тогда желательно, чтобы МК имел в своем составе несколько таймеров. Увеличение числа модулей таймеров – один из путей совершенствования структуры современных МК. Другим путем является модификация структуры таймера введением дополнительных устройств входного захвата и выходного сравнения.

В режиме широтно-импульсной модуляции на выводе PTxi формируется последовательность импульсов с периодом, равным периоду работы счетчика временной базы. Длительность импульса (длительность паузы) прямо пропорциональна коду в регистре данных канала. Режим ШИМ очень удобен с точки зрения программного обслуживания. Если изменения коэффициента заполнения Y не требуется, то достаточно один раз занести код Y в регистр данных и проинициировать режим ШИМ, и импульсная последовательность будет воспроизводиться с требуемыми параметрами без дальнейшего вмешательства со стороны программы.

Режим ШИМ в МП- системах часто используется в операциях цифро- аналогового преобразования.

Модули "классических" таймеров – достаточно сложные устройства. Их функциональная гибкость в простейших системах управления часто избыточна. Поэтому в некоторых маловыводных МК реализуются упрощенные таймеры. Таймеры содержат постоянно считающий 8-разрядный счетчик с триггером переполнения и программируемый делитель частоты. Такие таймеры могут формировать лишь метки реального времени с периодом следования, который определяется набором коэффициентов деления программируемого делителя частоты.