Таймеры-счетчики в микроконтроллерах

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

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид лекция
Язык русский
Дата добавления 03.10.2017
Размер файла 1019,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http: //www. allbest. ru/

1. Таймеры-счетчики

Общие сведения

Любой микроконтроллер серии АVR содержит несколько встроенных таймеров. Причем по своему назначению их можно разделить на две категории. К первой категории относятся таймеры общего назначения. Вторую категорию составляет сторожевой таймер. Сторожевой таймер предназначен для автоматического перезапуска микроконтроллера в случае «зависания» его программы.

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

Для каждой микросхемы нужен всего один сторожевой таймер. В любом микроконтроллере АVR такой таймер имеется.

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

По этой причине данные таймеры называют «таймеры/счетчики». В микросхемах АVR применяются как восьмиразрядные, так и шестнадцатиразрядные таймеры/счетчики. Их количество для разных микроконтроллеров изменяется от одного до четырех. Все таймеры обозначаются числами от 0 до 3.

Пример. Tiтer/Couпter0, Timer/Couпter1 и т. д. В русскоязычной литературе их чаще именуют сокращенно Т/С0, Т/С1, Т/С2, Т/СЗ. Таймеры Т/С0 и Т/С2 в большинстве микроконтроллеров - восьмиразрядные. Таймеры Т/С1 и Т/СЗ - шестнадцатиразрядные. Таймер Т/С0 имеется в любой микросхеме AVR. Остальные добавляются по мере усложнения модели.

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

Счетный регистр восьмиразрядного таймера именуется TCNТx, где «х» - это номер таймера. Для таймера Т/С0 регистр называется TCNТ0. Для таймера Т/С2 - TCNТ2. Шестнадцатиразрядные регистры именуются похожим образом. Отличие в том, что каждый шестнадцатиразрядный счетный регистр для микроконтроллера представляет собой два регистра ввода-вывода. Один предназначен для хранения старших битов числа, а второй - для хранения младших битов. К имени регистра старших разрядов добавляется буква Н, а для регистра младших разрядов добавляется буква L. Таким образом, счетный регистр таймера Т/С1 - это два регистра ввода-вывода: TCNТ1H и TCNТ1L.

Счетный регистр таймера Т/С3 - это два регистра TCNТ3H и ТСNТ3L.

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

Любой таймер жестко завязан с системой прерываний. Вызвать прерывание может целый ряд событий, связанных с таймером. Например, существует прерывание по переполнению таймера, по срабатыванию специальной схемы совпадения. Отдельные прерывания может вызывать сторожевой таймер.

Предделители таймеров/счетчиков

Как уже говорилось ранее, каждый таймер микроконтроллера может работать от двух разных источников тактовых импульсов. Либо это внешние импульсы, либо импульсы, вырабатываемые внутренней схемой микроконтроллера. Какой бы источник сигналов ни был выбран, перед тем, как попасть на вход таймера, этот сигнал проходит схему предварительного делителя. Предварительный делитель предназначен для того, чтобы расширить диапазон формируемых частот и длительностей таймера. Каждая микросхема АVR имеет свою структуру предварительного делителя для таймеров/счетчиков. Упрощенная схема одного из вариантов предварительного делителя приведена на рис. 5.1.

Как видно из приведенных схем, в микроконтроллеры интегрированы 10- ступенчатый делитель и мультиплексоры, осуществляющие подключение соответствующего выхода делителя ко входу счетчиков.

С выходов делителя снимаются сигналы СLК/8, CLK/64, CLK/256 и CLK/1024. В схеме имеют место цепи, через которые на вход таймера могут поступать внешние импульсы Т0 и Т1.

Рис. 1

В режиме работы «Счетчик», в качестве активного фронта с помощью мультиплексора может быть выбран нисподающий или нарастающий фронт внешнего импульса на входах Т0 и Т1. При таком режиме внешний сигнал Т0 (как и Т1) синхронизируется с тактом системной синхронизации СLК внутреннего кварцевого осциллятора. Для этого внешний сигнал проверяется в течение каждого нарастающего фронта СLК (рис.).

Рис.2

На рис. 2 показаны различные сигналы, синхронизируемые сигналом CLK, при этом необходимо отметить, что только сигнал А синхронизируется без потери информации. Это необходимо учитывать при выборе частоты работы МК. автоматический микроконтроллер таймер счетчик

Все счетные сигналы поступают на входы данных мультиплексора. На адресные входы мультиплексора поступают сигналы от трех разрядов регистра управления таймером (TCCRn).

Таким образом, записывая в разряды CSn0, CSnl, CSn2 различные значения, можно выбирать один из восьми режимов работы предделителя. В зависимости от выбранного режима, на выход схемы могут поступать сигнал с одного из выходов десятиразрядного делителя, прямой сигнал с тактового генератора либо нулевой логический уровень (входа D0). В последнем случае сигнал на входе таймера будет отсутствовать, и его работа приостанавливается.

CSn2

CSn1

CSn0

Описание

0

0

0

Источник тактирования не выбран. (Счетчик остановлен).

0

0

1

clkI/O/1 (Не предварительного деления).

0

1

0

clkI/O/8 (Тактовый сигнал с пред. делителя).

0

1

1

clkI/O/64 (Тактовый сигнал с пред. делителя).

1

0

0

clkI/O/256 (Тактовый сигнал с пред. делителя).

1

0

1

clkI/O/1024 (Тактовый сигнал с пред. делителя).

1

1

0

Внешнее тактирование с вывода Tn. Такт по спадающему фронту сигнала.

1

1

1

Внешнее тактирование с вывода Tn. Такт по нарастающему фронту сигнала.

Здесь величиной clkI/O обозначена частота тактирования процессора.

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

· 0 - отсутствие импульсов;

· 1 - «таймер», прямой сигнал от внутреннего генератора;

· 2...5 - «таймер», один из сигналов с делителя;

· 6 - «счетчик», инверсный сигнал с внешнего входа (активный ниспадающий фронт);

· 7 - «счетчик», прямой внешний сигнал (активный нарастающий фронт).

Схема, приведенная на рис. 5.1, не является стандартом для всех микроконтроллеров серии АVR. Она отражает лишь общий принцип построения предделителей. В разных моделях это сделано немного по-разному.

Как уже отмечалось, способ тактирования определяется битами CSn2:0 (Clock Select), расположенными в регистре управления TCCRnB.

16-разрядный таймер/счетчик.

Более подробно рассмотрим схему таймеров/счетчиков МК ATmega 128 на примере 16-разрядного таймера/счетчика 1. Он имеет идентичную структуру с таймером/счетчиком 3.

Блок-схема таймера/счетчика 1 приведена на рис. 3. Буквой «x» обозначен номер рассматриваемого таймера/счетчика (x=1).

Таймер/счетчик 1 содержит базовый счетчик TCNT1H:TCNT1L (Timer/Counter 1), имеющий шестнадцать разрядов. При поступлении тактирующего сигнала на вход схемы счетчика значение базового счетчика, в зависимости от выбранного режима работы, инкрементируется или декрементируется. Кроме того, в состав таймера-счетчика входят регистры управления TCCR1A, TCCR1B, TCCR1C (Timer/Counter 1 Control Register), два разряда регистра запросов, прерывания TIFR и столько же разрядов регистра маскирования прерываний TIMSK. Регистры TIFR и TIMSK являются общими для всех таймеров-счетчиков микроконтроллера.

Рис. 3 Блок-схема таймера/счетчика 1, 3 МК ATmega 128

Разряд регистра TIFR (Timer/Counter Interrupt Flag Register) устанавливается в единичное состояние при формировании в таймере-счетчике определенного запроса прерывания. В регистре масок прерываний TIMSK (Timer/Counter Interrupt Mask Register) устанавливаются разрешения/запрещения прерываний таймера/счетчика 1. Разряд регистра TIFR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установки бита в единичное состояние.

В состав таймера/счетчика, выполняющего функцию сравнения или ШИМ, входят регистры сравнения OCR1АH:OCR1АL, OCR1BH:OCR1BL, OCR1CH:OCR1CL (Output Compare Register), а в состав таймера/счетчика, выполняющего функцию захвата, -- регистр захвата ICR1H:ICR1L (Input Capture Register). Разрядность регистров OCR1 и ICR1 равна разрядности базового счетчика TCNT1.

16-разрядный таймер/счетчик 1 может получать тактовый сигнал от СLК, СLК после предварительного делителя и от внешнего вывода. Кроме того, его можно остановить. При внешнем тактировании таймера/счетчика 1 внешний сигнал синхронизируется частотой тактового генератора CPU.

Наилучшие точность и разрешение 16-разрядный таймер/счетчик 1 обеспечивает при наименьшем коэффициенте предварительного деления. С другой стороны, высокий коэффициент предварительного деления удобен при реализации таймером/счетчиком 1 низкоскоростных функций или точной синхронизации редко происходящих действий. Таймер/счетчик1 поддерживает функции сравнения выхода, используя регистры сравнения выходов А, В и C - OCR1А, OCR1В, OCR1C в качестве источников данных, сравниваемых с содержимым таймера/счетчика 1.

Таймер/счетчик 1 может быть использован в качестве 8, 9 или 10-разрядного широтно-импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B/OCR1С работают как сдвоенный самостоятельный ШИМ со сцентрированными импульсами, без формирования ложных импульсов.

Функция захвата входа таймера/счетчика 1 обеспечивает захват содержимого таймера/счетчика 1 в регистр захвата входа, запускаемый внешним событием на выводе входа захвата IC1. Реальные установки захвата события определяются регистром управления таймером/счетчиком 1 TCCR1B. Кроме того, для переключения входа захвата может быть использован аналоговый компаратор. Если разрешена функция подавления шума, действительные условия переключения события захвата тестируются четырьмя выборками, прежде чем захват будет активирован. Тестирование сигнала на входном выводе производится с частотой тактирования ядра МК.

Базовый счетчик (Counter Unit)

Основной частью 16-разрядного таймера/счетчика 1 является реверсивный базовый счетчик TCNTn. Его блок-схема изображена на следующем рисунке 4:

Рис. 4 Блок-схема базового счетчика

Расшифруем сигналы изображенные на блок-схеме.

Count - инкремент или декремент величины базового счетчика TCNTn.

Direction - Выбор направления счета.

Clear - очистка базового счетчика TCNTn.

clkTn - тактирующий сигнал таймера/счетчика 1.

TOP - Сигнализирует, что счетчик достиг максимального значения.

BOTTOM - Сигнализирует, что счетчик достиг нулевого значения.

16-разрядный счетчик состоит из двух 8-разрядных регистров TCNT1H:TCNT1L, причем обращение к старшему регистру происходит косвенно, через временный регистр TEMP. Это сделано для того, чтобы CPU могло считывать/записывать и старший и младший байты этого регистра одновременно. Если основная программа и подпрограммы обработки прерываний используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы. Более подробно этот вопрос описан в разделе «Обращение к 16-разрядным регистрам».Отметим, что запись в регистр TCNT во время работы счетчика может дать непредсказуемые результаты.

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

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

Как уже отмечалось, таймер/счетчик 1 может получать тактовый сигнал от СК, СК после предварительного делителя и от внешнего вывода. Способ тактирования определяется битами CSn2:0 (Clock Select). Если биты CSn2:0 равны нулю - счетчик остановлен. Однако значение TCNT может быть изменено ЦП в независимости от тактирующего сигнала счетчика clkTn.

Режим работы таймера/счетчика определяется установкой битов режима генерации сигнала (Waveform Generation mode) WGMn3:0. Они расположены в регистрах управления таймера/счетчика А и В (TCCRnA и TCCRnB)

Флаг переполнения таймера/счетчика TOVn (Timer/Counter Overflow) устанавливается в соответствии с режимом работы и используется для генерации прерывания по переполнению базового счетчика.

Обращение к 16-разрядным регистрам

Рассмотрим некоторые тонкости в обращении к 16-разрядным регистрам таймера/счетчика 1. Регистры TCNTn, OCRnA/B/C и ICRn - 16-разрядные и обращение к ним происходит через 8-разрядную шину данных процессора. Для записи или чтения этих регистров необходимо две операции чтения/записи. Обращение к старшему 8-разрядному регистру происходит косвенно, через временный регистр TEMP. Это сделано для того, чтобы CPU могло считывать/записывать и старший и младший байты этого 16-разрядного регистра одновременно. Если основная программа и подпрограммы обработки прерываний используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы.

На примере 16-разрядного регистра базового счетчика рассмотрим правильную последовательность операций записи/чтения.

Запись в таймер/счетчик 1 - TCNT1

Когда процессор производит запись в старший байт (TCNT1H) записываемые данные размещаются в регистре TEMP. Затем, когда CPU производит запись в младший байт (TCNT1L) данные младшего байта объединяются с байтом данных регистра TEMP и все 16 битов одновременно переписываются в регистр таймера/счетчика TCNT1. Следовательно, при 16-разрядных операциях обращение к старшему байту (TCNT1H) должно выполняться первым. При использовании таймера/ счетчика 1 в качестве 8-разрядного таймера достаточно производить запись только младшего байта.

Чтение таймера/счетчика 1 - TCNT1

Когда процессор считывает младший байт (TCNT1L), то содержимое TCNT1L направляются непосредственно в CPU, содержимое старшего байта (TCNT1H) размещается в регистре TEMP и при считывании старшего байта (TCNT1H) его содержимое процессор принимает из регистра TEMP. Следовательно, при 16-разрядных операциях первым должно выполняться обращение к младшему байту (TCNT1L). При использовании таймера/ счетчика 1 в качестве 8-разрядного таймера достаточно производить запись только младшего байта.

Теперь можно сформировать основное правило для операции чтения/записи 16-разрядных регистров таймеров/счетчиков.

· Для записи 16-разрядного регистра старший байт должен быть записан перед младшим;

· Для чтения 16-разрядного регистра младший байт должен быть прочитан перед старшим.

Рассмотрим пример обращения к регистру базового счетчика TCNT1. Такой же принцип используется для обращения к регистрам OCRnA/B/C и ICRn. Запись в TCNTn значения 0x01FF

ldi r17,0x01

ldi r16,0xFF

out TCNT1H,r17

out TCNT1L,r16

; Чтение из TCNTn в r17:r16

in r16,TCNT1L

in r17,TCNT1H

...

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

Режимы работы таймеров

Таймеры микроконтроллеров семейства AVR могут работать в нескольких режимах. Разные микроконтроллеры имеют разные наборы режимов для своих таймеров. Для выбора режимов работы существуют специальные регистры - регистры управления таймерами. Для простых таймеров используется один регистр управления. Для более сложных - два регистра. Регистры управления таймером называются TCCRx (где «х» - номер таймера). Например, для таймера Т0 используется один регистр с именем TCCR0. Для управления таймером Тl используется два регистра: TCCR1A и TCCR1B. При помощи регистров управления производится не только выбор соответствующего режима, но и более тонкая настройка таймера. Ниже перечислены все основные режимы работы таймера и их описание.

Режим работы таймера/счетчика определяется установкой битов режима генерации сигнала (Waveform Generation mode) WGM. Они расположены в регистрах управления таймера/счетчика А и В (TCCRnA и TCCRnB). В регистре TCCRnА расположены биты WGM11, WGM10. В регистре TCCRnB расположены биты WGM13, WGM12.

Функции битов WGMn3:0.

Режим

WGMn3

WGMn2

WGMn1

WGMn0

Режим работы

Макс. величина

Момент обновления регистра OCRnx

Момент устан. флага переп. TOVn

0

0

0

0

0

Нормальный

0xFFFF

Немедл.

0xFFFF

1

0

0

0

1

ШИМ с коррекцией фазы, 8 бит

0x00FF

Максим. величина

0x0000

2

0

0

1

0

ШИМ с коррекцией фазы, 9 бит

0x01FF

Максим. величина

0x0000

3

0

0

1

1

ШИМ с коррекцией фазы, 10 бит

0x03FF

Максим. величина

0x0000

4

0

1

0

0

СТС

OCRnA

Немедл.

0xFFFF

5

0

1

0

1

Быстродействующая ШИМ, 8 бит

0x00FF

Максим. величина

Максим. величина

6

0

1

1

0

Быстродействующая ШИМ, 9 бит

0x01FF

Максим. величина

Максим. величина

7

0

1

1

1

Быстродействующая ШИМ, 10 бит

0x03FF

Максим. величина

Максим. величина

8

1

0

0

0

ШИМ с коррекцией фазы и частоты

ICRn

0x0000

0x0000

9

1

0

0

1

ШИМ с коррекцией фазы и частоты

OCRnA

0x0000

0x0000

10

1

0

1

0

ШИМ с коррекцией фазы

ICRn

Максим. величина

0x0000

11

1

0

1

1

ШИМ с коррекцией фазы

OCRnA

Максим. величина

0x0000

12

1

1

0

0

СТС

ICRn

Немедл.

0xFFFF

13

1

1

0

1

(Зарезервир.о)

-

-

-

14

1

1

1

0

Быстродей. ШИМ

ICRn

Максим. величина

Максим. величина

15

1

1

1

1

Быстродей. ШИМ

OCRnA

Максим. величина

Максим. величина

Режим Normal

Это самый простой режим. В этом режиме таймер производит подсчет приходящих на его вход импульсов (от тактового генератора или внешнего устройства и вызывает прерывание по переполнению. Этот режим является единственным режимом работы для восьмиразрядных таймеров большинства микроконтроллеров семейства «Tiny» и для части микроконтроллеров семейства «Mega». Для всех остальных восьмиразрядных и всех шестнадцатиразрядных таймеров это всего лишь один из возможных режимов.

Режим «Захват» (Capture)

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

Этот режим удобен в том случае, когда нужно измерить длительность какого-либо внешнего процесса. Например, время, за которое напряжение на конденсаторе достигнет определенного значения. В этом случае напряжение с конденсатора подается на один из входов компаратора, а на второй его вход подается опорное напряжение.

Микроконтроллер должен одновременно запустить два этих процесса: подать напряжение на конденсатор и запустить таймер в режиме Capture.

Конденсатор начнет заряжаться, напряжение на нем при этом будет плавно расти. Одновременно счетчик таймера будет отсчитывать тактовые импульсы заданной частоты. В тот момент, когда напряжение на конденсаторе сравняется с опорным напряжением, логический уровень на выходе компаратора изменится на противоположный. По этому сигналу текущее значение счетного регистра запоминается в специальном регистре захвата. Имя этого регистра ICRx (для таймера Т0 это будет ICR0, для Тl - ICRl и т. д.). Одновременно вырабатывается запрос на прерывание.

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

Режим «Сброс при совпадении» (СТС)

Режим очистки по совпадению (Clear Timer on Compare Match (CTC) Mode)

Для работы в режиме СТС используется специальный регистр - регистр совпадения. Если микроконтроллер содержит несколько таймеров, то для каждого из них существует свой отдельный регистр совпадения. Причем для восьмиразрядных таймеров регистр совпадения - это один восьмиразрядный регистр. Для шестнадцатиразрядных таймеров регистр совпадения - это два восьмиразрядных регистра.

Регистры сравнения также имеют свои имена. Например, регистр совпадения таймера Тl состоит из двух регистров: OCR1L и OCR1H. В ряде микроконтроллеров существуют два регистра совпадения. Так, во всех микроконтроллерах семейства «Tiny» существует два регистра совпадения для таймера Тl. Это регистры OCR1A и OCRlВ. Два регистра совпадения для таймера Тl имеет и микроконтроллер ATmega8x. Во втором случае, как таймер, так и его регистры совпадения имеют шестнадцать разрядов.

Если регистр совпадения шестнадцатиразрядный, то физически он состоит из двух регистров ввода-вывода. Например, два регистра совпадения таймера Тl микросхемы АTmega8x представляют собой четыре регистра ввода-вывода с именами OCR1AL, OCR1AH, OCRlВL, OCRlВH.

Как же используются регистры совпадения? Эти регистры включаются в работу только тогда, когда выбран режим СТС. В этом режиме, как и в предыдущем, таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистров совпадения.

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

· сброс таймера (верно только для регистров совпадения OCRl и OCR1A);

· изменение состояния одного из выводов микроконтроллера (верно для всех регистров).

Произойдет или не произойдет одно или оба собьпия из вышеперечисленных, определяется при настройке таймера.

Режим «Быстродействующий ШИМ» (Fast PWM)

Определение. ШИМ - расишфpoфровываеmcя как Шupoтно-Импульсная Модуляцuя. На английском это звyчит как «Pulse Width Modulatioп» (PWМ). Сигнал с ШИМ часто uспользуется в устройствах управления.

Сигнал с ШИМ можно, например, использовать для регулировки скорости вращения электродвигателя постоянного тока. Для этого вместо постоянного напряжения на двигатель подается прямоугольное импульсное напряжение. Благодаря инерции двигателя импульсы сглаживаются, и двигатель вращается равномерно. Меняя скважность импульсов (то есть отношение периода импульсов к их длительности), можно изменять среднее напряжение, приложенное к двигателю и, тем самым, менять скорость его вращения.

Точно таким же образом можно управлять и другими устройствами. Например, нагревательными элементами, осветительными приборами и т. п. Преимущества импульсного управления - в высоком КПД. Импульсные управляющие элементы рассеивают гораздо меньше паразитной мощности, чем управляющие элементы, работающие в линейном режиме.

Для формирования сигнала ШИМ используются те же самые регистры совпадения, которые работают и в режиме СТС. Формирование сигнала ШИМ может осуществляться несколькими разными способами. Работа таймера в режиме Fast PWМ проиллюстрирована на рис. 5.

Рис. 5

Сигнал с ШИМ формируется на специальном выходе микроконтроллера. На вход таймера подаются импульсы от системного генератора. Таймер находится в состоянии непрерывного счета. При переполнении таймера его содержимое сбрасывается в ноль, и счет начинается сначала. В режиме ШИМ переполнение таймера не вызывает прерываний. На рис. 3.5 это показано в виде пилообразной кривой, обозначенной как ТСNТn. Кривая представляет собой зависимость содержимого счетного регистра от времени.

Содержимое счетного регистра непрерывно сравнивается с содержимым регистра совпадения. Пока число в регистре ОСRn больше, чем число в счетном регистре таймера (ТСNТn), напряжение на выходе ШИМ равно логической единице. Когда же в процессе счета содержимое счетного регистра ТСNТn станет. больше содержимого ОСRn, на выходе ШИМ установится нулевой потенциал.

В результате на выходе мы получим прямоугольные импульсы. Скважность этих импульсов будет зависеть от содержимого регистра ОСRn. Чем меньше число в ОСRn, тем выше скважность выходных импульсов. На рис. 3.5 показана скважность импульсов для двух разных значений регистра ОСRn. Если содержимое ОСRn достигнет своего максимального значения, то импульсы на выходе ШИМ исчезнут, и там постоянно будет присутствовать логическая единица. При уменьшении числа в ОСRn появятся импульсы малой скважности (длительность почти равна периоду). Если плавно уменьшать число в ОСRn, то скважность будет плавно уменьшаться. Когда содержимое ОСRn достигнет нуля, импульсы на выходе ШИМ также исчезнут, и там установится логический ноль.

Режим «ШИМ с точной фазой» (Phase Correct PWM)

Описанный в предыдущем разделе режим ШИМ имеет один недостаток. При изменении длительности импульсов меняется и их фаза. Центр каждого импульса как бы сдвигается во времени. При управлении электродвигателем такое поведение фазы нежелательно. Поэтому в микроконтроллерах АVR предусмотрен еще один режим ШИМ. Это ШИМ с точной фазой. Принцип работы таймера в этом режиме изображен на рис. 3.6.

Рис.6

Отличие режима «Phase Соrreсt PWМ» от режима «Fast PWМ» заключается в режиме работы счетчика. Сначала счетчик считает так же, как и в предыдущем режиме (от каждого входного импульса его значение увеличивается на единицу). Достигнув своего максимального значения, счетчик не сбрасывается в ноль, а переключается в режим реверсивного счета.

Теперь уже от каждого входного импульса его содержимое уменьшается на единицу. В результате пилообразная кривая, отображающая содержимое счетного регистра TCNТn, становится симметричной, как показано на рис.6. Система совпадения работает так же, как и в предыдущем случае.

Благодаря симметричности сигнала на таймере, фаза выходных импульсов в процессе регулировки скважности не изменяется. Середина каждого импульса строго привязана к точке смены направления счета таймера. Недостатком режима «Phase Соrreсt PWМ» можно считать в два раза меньшую частоту выходного сигнала. Это существенно уменьшает динамичность регулирования. Кроме того, при использовании внешних фильтров для преобразования импульсного сигнала ШИМ в аналоговый, схема с более низкой частотой потребует применения комплектующих с большими габаритами и массой.

Асинхронный режим

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

Размещено на Allbest.ru


Подобные документы

  • Понятие и назначение счетчика, его параметры. Принцип построения суммирующего и вычитающего счетчика. Универсальность реверсивного счетчика. Счетчики и делители с коэффициентом пересчета, отличным от 2n. Счетчики со сквозным переносом (разные триггеры).

    реферат [2,0 M], добавлен 29.11.2010

  • Описание работы схемы таймера, собранного на микросхемах повышенной степени интеграции и энергоэкономичности. Потребляемая мощность, формирователь звукового сигнала, счетчики минут и часов, регистр памяти. Размешение элементов, программа для фотоплоттера.

    курсовая работа [340,9 K], добавлен 07.01.2010

  • Понятие, принцип работы и функции микроконтроллерного таймера. Изучение технических характеристик микроконтроллера MSP430F2013; преобразование двоичных кодов и способ отображения цифр на дисплее. Разработка программного обеспечения и алгоритма программы.

    научная работа [1,1 M], добавлен 16.05.2014

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

    курсовая работа [292,7 K], добавлен 12.04.2009

  • Понятие о микропроцессорах и микроконтроллерах. Блок управления и его функции. Структура разряда порта микроконтроллера. Структура внутренней памяти данных. Работа с внешней памятью данных и подключение внешней памяти. Принцип работы и настройка таймера.

    презентация [665,8 K], добавлен 06.02.2012

  • Изучение структуры и алгоритмов работы асинхронных и синхронных триггеров. Суммирующие и вычитающие счетчики. Изменение коэффициента пересчета счетчиков. Временные диаграммы работы суммирующего счетчика. Логические сигналы на прямом и инверсном выходах.

    лабораторная работа [614,9 K], добавлен 20.06.2011

  • Рассмотрение структуры и принципов работы таймеров/счетчиков (общего назначения, сторожевого, типов А, В, С, D, Е) микроконтроллеров и аналого-цифрового преобразователя семейства AVR с целью разработки обучающего компьютерного электронного пособия.

    курсовая работа [1,0 M], добавлен 06.03.2010

  • Микрооперации над кодовыми словами, которые выполняют в цифровых схемах счетчики. Структурная схема триггера К155ТВ1, электрические параметры. Принцип работы цифрового счетчика, построение таблицы истинности, моделирование в программе Micro-Cap.

    курсовая работа [747,2 K], добавлен 11.03.2013

  • Структура автоматического фазометра, выбор компонентой базы и расчет блока питания. Описание алгоритма и составление программы для микроконтроллера и персонального компьютера, их основные действия. Определение погрешности скорости передачи данных.

    курсовая работа [209,7 K], добавлен 05.08.2010

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

    курсовая работа [40,2 K], добавлен 24.06.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.