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

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

Модули таймеров служат для приема информации о времени наступ­ления тех или иных событий от внешних датчиков событий, а также для формирования управляющих воздействий во времени.


Модуль таймера 8-разрядного МК представляет собой 8-ми или 16-разрядный счетчик со схемой управления. Схемотехникой МК обычно предусматривается возможность использования таймера в режиме счетчика внешних событий, поэтому его часто называют таймером/счетчиком. Структура типичного 16-разрядного таймера/счетчика в составе МК приведена на рис. 9.2.

 

 

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

 

В памяти МК 16-разрядный счетчик отображается двумя регистрами:

ТН — старший байт счетчика, ТL — младший байт.счетчика

Регистры доступны для чтения и для записи. Направление счета — только прямое, то есть при поступлении входных импульсов содержимое счетчика инкрементируется. В зависимости от настройки счетчик может использовать один из источников входных сигналов:

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

• сигналы внешних событий, поступающие на вход ТОСК1 контроллера.

 

В первом случае говорят, что счетчик работает в режиме таймера, во втором — в режиме счетчика событий. При переполнении счетчика устанавливается в «единицу» триггер переполнения ТF, который генерирует запрос на прерывание, если прерывания от таймера разрешены. Пуск и останов таймера могут осуществляться только под управлением программы. Программным способом можно также установить старший и младший биты счетчика в произвольное состояние или прочитать текущий код счетчика.

Рассмотренный «классический» модуль таймера/счетчика широко при­меняется в различных моделях относительно простых МК. Он может ис­пользоваться для измерения временных интервалов и формирования пос­ледовательности импульсов. Основными недостатками «классического» таймера/счетчика являются:

• потери времени на выполнение команд пуска и останова таймера,
приводящие к появлению ошибки при измерении временных интервалов и ограничивающие минимальную длительность измеряе­мых интервалов времени единицами мс;

• сложности при формировании временных интервалов (меток времени), отличных от периода полного коэффициента счета, равного (Kдел/fbus) • 2'6;

• невозможность одновременного обслуживания (измерения или формирования импульсного сигнала) сразу нескольких каналов.

 

Первые их двух перечисленных недостатков были устранены в усовер­шенствованном модуле таймера/счетчика, используемом в МК семейства МСS-51 (Intel). Дополнительная логика счетного входа позволяет такто­вым импульсам поступать на вход счетчика, если уровень сигнала на од­ной из линий ввода равен «1». Такое решение повышает точность измере­ния временных интервалов, так как пуск и останов таймера производится аппаратно. Также в усовершенствованном таймере реализован режим пе­резагрузки счетчика произвольным кодом в момент переполнения. Это позволяет формировать временные последовательности с периодом, от­личным от периода полного коэффициента счета.

Однако эти усовершенствования не устраняют главного недостатка мо­дуля «классического» таймера — одноканального режима работы. Совер­шенствование подсистемы реального времени МК ведется по следующим направлениям:

• увеличение числа модулей таймеров/счетчиков. Этот путь характерен для фирм, выпускающих МК со структурой МСS-51, а также для МК компаний Мitsubishi и Нitachi;

• модификация структуры модуля таймера/счетчика, при которой уве­личение числа каналов достигается не за счет увеличения числа счет­чиков, а за счет введения дополнительных аппаратных средств вход­ного захвата (input capture — IС) и выходного сравнения (output соmраге — ОС). Такой подход используется, в частности, в МК ком­пании Моtoгоlа.

Принцип действия канала входного захвата таймера/счетчика иллюс­трирует рис. 9.3.

Рис. 9.3.Структурная схема канала входного захвата таймера.

 

Схема детектора события «наблюдает» за уровнем напряжения на одном из входов МК. Чаще всего это одна из линий порта ввода/вывода. При изменении уровня логического сигнала с «О» на «1» и наоборот вырабатывается строб записи, и текущее состояние счетчика таймера записывается в 16-разрядный регистр входного захвата. Описанное действие в микропроцессорной технике называют событием захвата. Предусмотрена возможность выбора типа сигнала на входе, и это воспринимается как событие:

• положительный (передний) фронт сигнала;

• отрицательный (задний) фронт сигнала;

• любое изменение логического уровня сигнала.

 

Выбор типа события захвата устанавливается в процессе инициализа­ции таймера и может неоднократно изменяться в ходе выполнения про­граммы. Каждое событие захвата приводит к установке в «1» триггера вход­ного захвата и появлению на его выходе флага (признака) входного захвата IСF. Состояние триггера входного захвата может быть считано программ­но, а если прерывания по событию захвата разрешены — формируется зап­рос на прерывание INT IС.

Использование режима входного захвата позволяет исключить ошибки измерения входного интервала времени, связанные со временем перехода к подпрограмме обработки прерывания, так как копирование текущего состояния счетчика осуществляется аппаратными, а не программными средствами. Однако время перехода на подпрограмму обработки преры­вания накладывает ограничение на длительность измеряемого интервала времени, так как предполагается, что второе событие захвата произойдет позже, чем код первого события будет считан МК.

Структура аппаратных средств канала выходного сравнения представ­лена на рис. 9.4.

 

Рис.9.4. Структурная схема канала выходного сравнения таймера.

 

Цифровой компаратор непрерывно сравнивает текущий код счетчика таймера с кодом, который записан в 16-разрядном регистре выходного сравнения. В момент равенства кодов на одном из выходов МК (Рхj на рис. 9.4) устанавливается заданный уровень логического сигнала. Обычно предусмотрено три типа изменения сигнала на выходе Рхj в момент события выходного сравнения:

• установка высокого логического уровня;

• установка низкого логического уровня;

• инвертирование сигнала на выходе.

При наступлении события сравнения устанавливаются в «1» триггер выходного сравнения и соответствующий ему признак выходного сравне­ния ОСЕ Аналогично режиму входного захвата состояние триггера вы­ходного сравнения может быть считано программно, а если прерывания по событию сравнения разрешены — формируется запрос на прерывание INT ОС.

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

Модули усовершенствованного таймера используются в составе МК в различных модификациях. При этом число каналов входного захвата и исходного сравнения в модуле может быть различным. Так, в МК семейства НС05 фирмы Моtогоlа типовыми решениями являются модули 1IC+1ОС или 2IС+2ОС, а модуль таймера в составе МК только один. В ряде модулей каналы могут быть произвольно настроены на функцию вход­ного захвата или выходного сравнения посредством инициализации. Счет­чик модуля усовершенствованного таймера может не иметь функции про­граммного останова. В этом случае состояние счетчика нельзя синхронизировать с каким-либо моментом работы МК, и такой счетчик характеризуется как свободно считающий (fгее соunter).

Аппаратные средства усовершенствованного таймера позволяют ре­шить многие задачи управления в реальном времени. Однако по мере роста сложности алгоритмов управления отчетливо проявляются ограничения модулей усовершенствованного таймера, а именно:

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

• однозначно определенная конфигурация канала (или захват или
сравнение) часто не удовлетворяет потребностям решаемой задачи;

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

 

Поэтому следующим этапом развития модулей подсистемы реального времени МК стали модули процессоров событий. Впервые модули про­цессоров событий были использованы компанией Intel в МК семейства 8хС51Fх. Этот модуль получил название программируемого счетного мас­сива (Ргоgгаmmаblе Соutег Аггау — РСА).

РСА обеспечивает более широкие возможности работы в реальном мас­штабе времени и в меньшей степени расходует ресурсы центрального про­цессора, чем стандартный и усовершенствованный таймеры/счетчики. К преимуществам РСА также можно отнести более простое программирова­ние и более высокую точность. К примеру, РСА может обеспечить лучшее временное разрешение, чем таймеры 0, 1 и 2 МК семейства МСS -51, так как счетчик РСА способен работать с тактовой частотой, втрое большей, чем у этих таймеров. РСА также может решать многие задачи, выполнение которых с использованием таймеров требует дополнительных аппаратных затрат (например, определение фазового сдвига между импульсами или генерация ШИМ-сигнала). РСА состоит из 16-битного таймера-счетчика и пяти 16-битных модулей сравнения-защелки, как показано на рис. 9.5.

Таймер-счетчик РСА используется в качестве базового таймера для функционирования всех пяти модулей сравнения-защелки. Вход тайме­ра-счетчика РСА может быть запрограммирован на счет сигналов от сле­дующих источников

· выход делителя на 12 тактового генератора МК;

· выход делителя на 4 тактового генератора МК;

· сигнал переполнения таймера 0;

· внешний входной сигнал на выходе ЕСI(H1.2).

Рис. 9.5.Структура процессора событий МК семейства Intel 8хС51Fх.

 

Любой из модулей сравнения-защелки может быть запрограммирован для работы в следующих режимах:

• защелкивания по фронту и/или спаду импульса на входе СЕХi;

• программируемого таймера;

• высокоскоростного выхода;

• широтно-импульсного модулятора.

 

Модуль 4 может быть также запрограммирован как сторожевой таймер (Watchdog Time - WTD).

Режим защелкивания по импульсу на входе МК эквивалентен режиму входного захвата (1С) усовершенствованного таймера. Режимы программируемого таймера и высокоскоростного выхода близки по своим функ­циональным возможностям к режиму выходного сравнения (ОС).

В режиме ШИМ на соответствующем выводе МК формируется последовательность импульсов с периодом, равным периоду базового таймера/счётчика РСА. Значение 8-разрядного кода, записанное в младший байт регистра-защелки соответствующего модуля задает скважность формиру­емого сигнала. При изменении кода от 0 до 255 скважность меняется от 100% до 0,4%.

Режим ШИМ очень прост с точки зрения программного обслужива­ния. Если изменения скважности не предполагается, то достаточно один раз занести соответствующий код в регистр данных модуля, проинициализировать режим ШИМ, и импульсная последовательность будет вос­производиться с заданными параметрами без вмешательства программы.

Назначение и особенности работы сторожевого таймера будут рассмот­рены далее отдельно.

При работе модуля сравнения-защелки в режиме защелки, программиру­емого таймера или высокоскоростного выхода модуль может сформировать сигнал прерывания. Сигналы от всех пяти модулей сравнения-защелки и сиг­нал переполнения таймера РСА разделяют один вектор прерывания. Иными словами, если прерывания разрешены, то и сигнал переполнения таймера РСА и сигнал от любого из модулей вызывают одну и ту же подпрограмму прерываний, которая должна сама идентифицировать источник, вызвавший ее.

Для работы с внешними устройствами таймер-счетчик РСА и модули сравнения-защелки используют выводы Р1 порта МК. Если какой-либо вывод порта не используется при работе РСА, или РСА не задействован, порт может применяться стандартным образом.

Реализованный в 8хС51FХ РСА оказался настолько удачным, что ар­хитектура данных МК стала промышленным стандартом де-факто, а сам РСА многократно воспроизводился в различных модификациях микро­контроллеров разных фирм.

Тенденция развития подсистемы реального времени современных МК находит свое отражение в увеличении числа каналов процессоров собы­тий и расширении их функциональных возможностей.