Опубликован: 25.07.2003 | Уровень: для всех | Доступ: свободно
Лекция 7:

Организация связи микроконтроллера с внешней средой и временем

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

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

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

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

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

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

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

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

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

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

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

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

  • потери времени на выполнение команд пуска и останова таймера, приводящие к появлению ошибки при измерении временных интервалов и ограничивающие минимальную длительность измеряемых интервалов времени единицами мс;
  • сложности при формировании временных интервалов (меток времени), отличных от периода полного коэффициента счета, равного (Kдел/fBUS) · 216 ;
  • невозможность одновременного обслуживания (измерения или формирования импульсного сигнала) сразу нескольких каналов.

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

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

  • увеличение числа модулей таймеров / счетчиков. Этот путь характерен для фирм, выпускающих МК со структурой MCS-51, а также для МК компаний Mitsubishi и Hitachi;
  • модификация структуры модуля таймера / счетчика, при которой увеличение числа каналов достигается не за счет увеличения числа счетчиков, а за счет введения дополнительных аппаратных средств входного захвата (input capture — IC ) и выходного сравнения (output compare — OC ). Такой подход используется, в частности, в МК компании Motorola.

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

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

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

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

  • положительный (передний) фронт сигнала;
  • отрицательный (задний) фронт сигнала;
  • любое изменение логического уровня сигнала.

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

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

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

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

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

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

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

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

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

Модули усовершенствованного таймера используются в составе МК в различных модификациях. При этом число каналов входного захвата и выходного сравнения в модуле может быть различным. Так, в МК семейства HC05 фирмы Motorola типовыми решениями являются модули 1IC+1OC или 2IC+2OC, а модуль таймера в составе МК только один. В ряде модулей каналы могут быть произвольно настроены на функцию входного захвата или выходного сравнения посредством инициализации. Счетчик модуля усовершенствованного таймера может не иметь функции программного останова. В этом случае состояние счетчика нельзя синхронизировать с каким-либо моментом работы МК, и такой счетчик характеризуется как свободно считающий (free counter).

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

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

Поэтому следующим этапом развития модулей подсистемы реального времени МК стали модули процессоров событий. Впервые модули процессоров событий были использованы компанией Intel в МК семейства 8xC51Fx. Этот модуль получил название программируемого счетного массива (Programmable Counter Array — PCA).

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

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

  • выход делителя на 12 тактового генератора МК;
  • выход делителя на 4 тактового генератора МК;
  • сигнал переполнения таймера 0;
  • внешний входной сигнал на выводе ЕСI (P1.2).
Структура процессора событий МК семейства Intel 8xC51Fx.

Рис. 4.8. Структура процессора событий МК семейства Intel 8xC51Fx.

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

  • защелкивания по фронту и/или спаду импульса на входе CEXi;
  • программируемого таймера ;
  • высокоскоростного выхода;
  • широтно-импульсного модулятора.

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

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

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

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

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

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

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

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

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

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Татьяна Фёдорова
Татьяна Фёдорова
Какой тип обмена используется в системной магистрали ISA?
Виктор Радкевич
Виктор Радкевич
Не отображаются результаты сдачи тестов через мобильное приложение
Владитслав Голубев
Владитслав Голубев
Россия
Дмитрий Горбунов
Дмитрий Горбунов
Россия