Таймеры и процессоры событийОбщие сведения. Для эффективного управления устройствами в реальном времени микропроцессорные системы должны обеспечить выполнение таких функций как:

●     формирование импульсов (меток реального времени) через заданные интер­валы времени;

●     подсчет количества импульсов внешнего сигнала на заданном временном ин­тервале;

●     контроль состояния линий ввода и измерение длительности входного сигна­ла с заданным логическим уровнем;

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

●     формирование сигнала заданного логического уровня с программируемой задержкой относительно времени изменения уровня входного сигнала. Один из возможных способов реализации функций управления в реальном времени состоит в использовании надлежащих команд с привлечением централь­ного процессора для их выполнения, т. е. осуществлять реализацию функций уп­равления только программными средствами. Например, для формирования ме­ток реального времени можно использовать подпрограмму, включающую коман­ды загрузки регистра, инкрементации, логическую операцию с флагом перепол­нения регистра и др. Существенный недостаток этого способа — отвлечение центрального процессора от выполнения основной программы на второстепен­ную работу. Поэтому выполнение функций, связанных с управлением устройства­ми в реальном времени, возлагается на специальные аппаратные средства, кото­рые называются таймером. В современных микроконтроллерах таймер выполня­ется в виде отдельного модуля.

 

рис. 4.8.1

Структурно–функциональные особенности. Схема простейшего модуля тай­мера изображена на рис. 4.8.1. В его состав входят:

●     суммирующий счетчик таймера, доступный для чтения и записи. При исполь­зовании 16–разрядного счетчика он отображается на карте памяти двумя ре­гистрами для старшего и младшего байтов;

    делитель частоты с переменным управляемым коэффициентом деления (К = 2, 4, 8, ...). Делитель предназначен для увеличения длительности времен­ного интервала, формируемого таймером, путем инкрементирования содер­жимого счетчика после поступления определенного числа тактовых импульсов;

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

Путем выбора источника тактирования счётчик может быть настроен:

●     на последовательность импульсов, поступающих с выхода управляемого де­лителя частоты. В этом случае модуль таймера работает как таймер (режим таймера);

●     на внешние импульсы тактирования, поступающие на один из входов микро­контроллера. В этом случае модуль таймера работает как счетчик событий (режим счетчика событий).

Обычно пуск и останов счетчика выполняются только под управлением про­граммы посредством установки/сброса соответствующего бита. После перепол­нения работа счетчика продолжается. 16–разрядный счетчик генерирует следу­ющую периодическую последовательность кодов: ...FEh, FFh, 00h, 01h, 02h, ..., FEh, FFh, ... Программным способом производится загрузка (установкой старше­го и младшего байтов счетчика в требуемое состояние) и чтение текущего кода счетчика. Эти операции можно выполнять в процессе счета, если длительность операций записи и чтения меньше длительности периода следования импульсов тактирования счетчика.

рис. 4.8.2

Способы измерения временного интервала. Классический способ. Рассмотрим особенности использования модуля таймера для измерения времен­ного интервала Тх (рис. 4.8.2). Для этого необходимо:

●     прервать выполнение текущей программы в момент времени t0—>1, когда про­исходит изменение импульса на выводе Вход с 0 на 1, с помощью подпро­граммы прерывания произвести сброс счетчика в нулевое состояние и разре­шить счет;

●     повторно прервать выполнение текущей программы в момент времени t1—>0, когда происходит изменение импульса на выводе Вход с 1 на 0, и с помощью подпрограммы прерывания остановить счет. Содержимое счетчика будет со­ответствовать длительности интервала Тх, выраженной в двоичной форме числом периодов входных импульсов тактирования.

Процесс измерения временного интервала представлен временными диа­граммами на рис. 4.8.2, где t0—>1, t1—>0 — моменты времени, инициирующие начало и завершение счета; t1, t2 — время задержки начала и окончания работы счетчика, обусловленное вызовом, выполнением и завершением подпрограмм, обслужива­ющих прерывания. Ошибка счета равна | t1t2 |.

Рассмотренный способ может быть использован для измерения сигналов сравнительно большой длительности (единицы миллисекунд и более). Его глав­ный недостаток — невозможность одновременного обслуживания нескольких ка­налов. Для устранения указанного недостатка используется два пути:

●     простое увеличение числа модулей таймеров (микроконтроллеры компаний Philips, Atmel, Mitsubishi, Hitachi);

●     модификация структуры модуля таймера путем введения дополнительных ап­паратных средств с использованием способов входного захвата и выходного сравнения (микроконтроллеры фирм Motorola, Microchip, Philips). Эти сред­ства принято называть каналом входного захвата (Input CaptureIС) и вы­ходного сравнения (Output Compare — ОС).

рис. 4.8.3

Способ входного захвата. Для пояснения способа воспользуемся схе­мой канала входного захвата, изображенной рис. 4.8.3. Помимо счетчика тайме­ра, делителя частоты и триггера переполнения в схему канала дополнительно введены:

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

    детектор событий, предназначенный для фиксации изменения логического уровня сигнала на входе канала (обычно входом является один из выводов порта) и выдачи строба по факту этого события для записи текущего состоя­ния счетчика таймера в регистр входного захвата. Три вида изменения логи­ческого уровня входного сигнала воспринимаются детектором как событие захвата: с 0 на 1 (фронт), с 1 на 0 (срез) и любое изменение логического уровня сигнала. Вид события захвата устанавливается в процессе инициали­зации модуля таймера и может многократно изменяться по ходу выполнения программы;

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

рис. 4.8.4

Рассмотрим сущность способа на примере измерения длительности Тх вход­ного сигнала прямоугольной формы (рис. 4.8.4). В этом случае должен быть уста­новлен вид события — «любое изменение логического уровня сигнала». Счетчик таймера постоянно изменяет свое состояние. Детектор событий следит за уров­нем напряжения на входе канала.

В момент времени t0–1, происходит изменение логического уровня входного сигнала с 0 на 1. На выходе детектора событий вырабатывается строб записи, по которому:

●     текущее состояние счетчика таймера записывается в виде кода К1 в регистр входного захвата;

●     триггер входного захвата устанавливается в единичное состояние;

●     формируется запрос на прерывание, который информирует микроконтроллер о начале измерения интервала;

●     с задержкой времени t1, по отношению к t0–1 микроконтроллер считывает код К1 из регистра входного захвата, сбрасывает триггер входного захвата и ини­циализирует детектор события на формирование строба по срезу входного сигнала.

В момент времени t1–0, когда происходит изменение логического уровня сигна­ла на входе детектора с 1 на 0, на выходе детектора событий также вырабатыва­ется строб записи, по которому:

●     текущее состояние счетчика таймера записывается в виде кода К2 в регистр входного захвата;

●     триггер входного захвата устанавливается в единичное состояние;

●     формируется запрос на прерывание, который информирует микроконтроллер об окончании измерения интервала;

●     с задержкой времени t2 по отношению к t1_0 микроконтроллер считывает код К2 из регистра входного захвата и сбрасывает триггер входного захвата.

Приведенные временные диаграммы отражают процесс измерения временно­го интервала при отсутствии переполнения счетчика (рис. 4.8.4, а) и при перепол­нении счетчика (рис. 4.8.4, б) и относятся к случаю, когда длительность измеря­емого интервала Тх меньше длительности полного цикла тактирования счетчика таймера NТ, где N — количество импульсов за цикл тактирования; Т — период им­пульсов тактирования.

Длительность измеряемого временного интервала определяется следующими соотношениями:

●     Тх = (К2 – К1)10 х Т — при отсутствии переполнения счетчика (К2 > К1);

●     Тх = NT – (К1 – К2)10 х Т — при переполнении счетчика (К1 > К2),

где (К2 – К1)10, N – (К1 – К2)10 — число импульсов тактирования, поступивших на

вход счетчика таймера за время измерения.

Время перехода к подпрограммам прерывания t1 и t2, не влияет на точность измерения, так как задержка при записи текущего состояния счетчика, реализу­емой аппаратными средствами, одна и та же.

Использование запросов на прерывание по событию переполнения счетчика для контроля переполнений, возникающих между фронтом и срезом импульса на входе канала, позволяет измерять длительности импульсов при Тх >> NT.

рис. 4.8.5

Способ выходного сравнения. Для организации канала выходного сравнения простейший модуль таймера дополняется следующими функциональ­ными узлами (рис. 4.8.5):

●     регистром выходного сравнения, в который заносятся двоичные коды К1, и К2, определяющие требуемую длительность формируемого выходного импульса;

    схемой сравнения (цифровым компаратором), предназначенной для фикса­ции события сравнения — равенства непрерывно изменяющегося во времени кода счетчика таймера с кодом, хранящимся в регистре выходного сравнения;

    триггером выходного сравнения, используемым для установки в единичное состояние сигнала на своем выходе при каждом срабатывании схемы срав­нения;

    формирователем уровня, предназначенным для установки логического уров­ня сигнала на выходе канала (обычно выходом является один из выводов порта) по факту события выходного сравнения. Возможны три вида установки: установка уровня логического 0, уровня логической 1 или перевод выхода в инверсное состояние. Вид события выходного сравнения устанавливается в процессе инициализации модуля таймера и может многократно изменяться по ходу выполнения программы.

Рассмотрим процесс формирования выходного прямоугольного импульса, длительность которого определяется разностью кодов К2 – К1 (рис. 4.8.6, а). Циф­ровой компаратор непрерывно сравнивает изменяющийся во времени код счет­чика таймера с предварительно установленным кодом К1 регистра. В момент t0_1, равенства кодов на выводе «Выход» микроконтроллера и выходе триггера выход­ного сравнения устанавливается уровень логической 1. Одновременно генериру­ется запрос на прерывание микроконтроллера, и в подпрограмме прерывания происходит загрузка нового кода сравнения К2. В момент t1_0 наступает второе событие сравнения, и на выводе «Выход» устанавливается уровень логического 0. Таким образом, длительность сформированного временного интервала Tx опре­деляется разностью кодов и не зависит от особенностей программного обеспе­чения микроконтроллера.

рис. 4.8.6

Временные диаграммы рис. 4.8.6, б иллюстрируют возможность использова­ния способа выходного сравнения для К12.

Отметим характерные особенности модулей таймеров, построенных с исполь­зованием рассмотренных способов:

●     счетчик модуля таймера часто не имеет:

•      функции программного останова, т. е. он работает в режиме постоянного счета. В этом режиме состояние счетчика нельзя синхронизировать с ка­ким–либо моментом работы микропроцессорной системы;

•      опции тактирования внешним сигналом, т. е. он не может работать в режиме счетчика событий;

●     число каналов входного захвата (IС) и выходного сравнения (ОС) модулей таймера микроконтроллеров может быть различным. Например, в семействе НС05 микроконтроллеров Motorola типовыми решением является использова­ние одного модуля таймера с каналами 2IC+2OC или 1IC+1OC, а в семействе НС11 — 4IC+5OC. Микроконтроллеры PIC16 Microchip содержат до трех мо­дулей таймеров со структурой 1IC+1OC (обозначается IC/ОС);

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

Модули процессоров событий. Следующим этапом в развитии подсистемы реального времени микроконтроллеров стали модули процессоров событий. Впервые такой модуль был предложен фирмой Intel.

рис. 4.8.7

Модуль процессора событий содержит (рис. 4.8.7):

●     счетный модуль (счетчик и регистр периода), тактируемый импульсной последо­вательностью с выхода программируемого делителя частоты fBUS или внешнего генератора. Счетчик имеет опции пуска/останова и сброса в 0. В некоторых модулях счетчик доступен для чтения «на лету» — автоматического копирования содержимого счетчика в специальные буферные регистры. В наиболее совершен­ных счетных модулях возможно изменение коэффициента счета счетчика, реали­зуемого с помощью дополнительного программно доступного регистра периода и многоразрядного цифрового компаратора. При совпадении текущего кода счетчика с кодом регистра периода счетчик автоматически сбрасываются в 0;

●     универсальные каналы захвата/сравнения, обеспечивающие работу процес­сора событий в режимах входного захвата, выходного сравнения и широтно–импульсной модуляции (ШИМ). Для реализации первых двух режимов про­граммно–логическая модель каждого канала включает регистр данных канала и триггер события. В зависимости от выбранного режима регистр данных ка­нала используется для записи кода счетчика в момент наступления входного захвата или для хранения кода выходного сравнения. Триггер устанавливает­ся в 1 при наступлении любого из этих событий. В режиме широтно–импульсной модуляции (рис. 4.8.8) на выводе «Вход/Выход» микроконтроллера фор­мируется последовательность импульсов с периодом, равным периоду Т работы счетчика. Длительность Tи импульса прямо пропорциональна коду в регистре данных канала. Отметим, что режим ШИМ в различных моделях процессоров событий имеет существенные отличия.

рис. 4.8.8

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

 

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


Рекомендуйте эту статью другим!



рис. 3.25
дек 29, 2016 554

Особенности выходных каскадов цифровых микросхем

Часто возникает необходимость подключения выходов нескольких цифровых микросхем к одной…
Микроконтроллеры MCS51
дек 01, 2015 1125

Микроконтроллеры MCS–51. Блок последовательного интерфейса, блок таймеров, блок прерываний. Часть 2.

Блок последовательного интерфейса. Назначение и состав блока. Блок последовательного…
Электропроводка в подвалах и чердаках 2
дек 09, 2013 1399

Электропроводка в подвалах и чердаках

В первую очередь, следует отметить, что подвальные и чердачные помещения принадлежат к…
рис. 2.78 а
дек 02, 2016 621

Сглаживающие фильтры

Выпрямленное напряжение имеет существенные пульсации, поэтому широко используют…
янв 31, 2013 4718

Муфты силовых кабелей, соединительные, концевые, марки, конструкция муфт

Для оконцевания кабелей, а также для соединения строительных длин кабелей применяются…