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

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

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

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

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

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

 



рис. 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

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

 

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


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



Пневматические гвоздезабивные молотки. Какой лучше выбрать
июнь 07, 2014 2032

Пневматические гвоздезабивные молотки. Какой лучше выбрать?

Современная индустрия выпускает достаточно широкий ассортимент различных строительных…
Частотомеры
дек 21, 2016 1566

Частотомеры. Назначение, применение, классификация

Одним из основных параметров периодических и пульсирующих токов выступает частота,…
дек 13, 2012 9122

Шинопроводы. Определение, назначение, классификация, серии

Шинопроводом называется устройство, предназначенное для передачи и распределения…
рис. 1.66
сен 01, 2016 871

Математические модели биполярного транзистора

Рассмотрим различные математические модели биполярного транзистора. Простейший вариант…
soed provod 3
июнь 05, 2017 1251

Методы соединения проводов, достоинства и недостатки, способы

Ни одна электропроводка не обходится без соединений. Если к розеткам, выключателям,…