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

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

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

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

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

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

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

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

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

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

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

Модуль таймера 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-разрядный счетчик с триггером переполнения и программируемый делитель частоты. Такие таймеры могут формировать лишь метки реального времени с периодом следования, который определяется набором коэффициентов деления программируемого делителя частоты.

2.4 Ввод/вывод аналоговых сигналов

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

Для подключения одного из источников аналоговых сигналов (РТх0...РТх7; обычно порт А) ко входу АЦП служит многоканальный аналоговый коммутатор. Выбор источника сигнала для измерения осуществляется записью номера канала коммутатора в регистр управления АЦП. В модулях АЦП предусмотрена только программная установка номера канала, режим автоматического последовательного сканирования каналов с записью результата в индивидуальную ячейку памяти не реализуется.

Диапазон измеряемых значений напряжения аналоговых входов определяется величиной опорного напряжения UREF. Разрешающая способность АЦП составляет UREF/2n, где n – число двоичных разрядов в слове результата. Максимальное значение опорного напряжения равно напряжению питания МК. Обычно два вывода модуля АЦП используются для задания диапазона опорного напряжения: – верхнего и нижнего пределов. Собственно аналого-цифровой преобразователь чаще всего выполнен по способу последовательного приближения. В случае, если требуется повышенная точность преобразования при малых аппаратных затратах, но при большом допустимом времени преобразования – используется АЦП двойного интегрирования. В специализированных МК с высоким значением потока входных аналоговых данных применяется АЦП параллельного типа (считывания).

Обычно в МК число каналов преобразования – от 4 до 12, время преобразования – от1 до 30 мкс (при использовании АЦП поразрядного уравновешивания) при разрядности АЦП – 10…12.

Структурная схема типового модуля АЦП

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

Модули цифро- аналоговых преобразователей (ЦАП) в микроконтроллерах встречаются реже, чем модули АЦП. Наиболее часто функция цифро- аналогового преобразователя реализуется средствами программируемого таймера в режиме ШИМ.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: