2. Пограммная модель и принципы работы таймеров/счетчиков микроконтроллеров семейства AVR

2.1 Структура таймера/счетчика

16-разрядный таймер/счетчик может получать тактовый сигнал (CK), CK после предварительного делителя и от внешнего вывода. Кроме того его можно остановить. В регистрах управления TCCR1A и TCCR1B находятся различные флаги, указывающие на переполнение, совпадение при сравнении и случаи захвата событий. В регистре масок прерываний TIMSK (Timer/Counter Interrupt Mask Register) устанавливаются разрешения/запрещения прерываний таймера/счетчика1. При внешнем тактировании таймера/счетчика1 внешний сигнал синхронизируется частотой тактового генератора CPU. Для правильной работы таймера/счетчика по внешнему тактовому сигналу минимальное время между двумя переключениями внешнего тактового сигнала должно быть не менее одного периода тактового сигнала CPU. Синхронизация внешнего тактового сигнала ведется нарастающим фронтом внутреннего тактового сигнала CPU.

Блок-схема таймера/счетчика приведена на рисунке 2.1.


Блок-схема таймера/счетчика1

Рисунок 2.1– Блок-схема таймера/счетчика

Наилучшие точность и разрешение 16-разрядный таймер/счетчик обеспечивает при наименьшем коэффициенте предварительного деления. С другой стороны, высокий коэффициент предварительного деления удобен при реализации таймером/счетчиком 1 низкоскоростных функций или точной синхронизации редко происходящих действий. Таймер/счетчик поддерживает две функции сравнения выхода, используя регистр1 сравнения выходов A и B –OCR1A и OCR1B в качестве источников данных, сравниваемых с содержимым таймера/счетчика. Функции сравнения выхода включают очистку счетчика по совпадению сравнения A и воздействие на выводы сравнения выхода при обоих совпадениях сравнения.

Таймер/счетчик 1 может быть использован в качестве 8, 9 или 10-разрядного широтно-импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ со сцентрированными импульсами, без формирования ложных импульсов. Функция захвата входа таймера/счетчика обеспечивает захват содержимого таймера/счетчика 1 в регистр захвата входа, запускаемый внешним событием на выводе входа захвата PD4/(IC1). Реальные установки захвата события определяются регистром управления таймером/счетчиком1 TCCR1B (Timer/Counter1 Control Register). Кроме того, для переключения входа захвата может быть использован аналоговый компаратор. Если разрешена функция подавления шума, действительные условия переключения события захвата тестируются четырьмя выборками, прежде чем захват будет активирован. Тестирование сигнала на входном выводе производится с частотой XTAL [1].

2.2 Таймеры/счетчики общего назначения

Таймер/счетчик Т/СХ (X = 0, 1, 2 – цифра в имени таймера/счетчика) любого типа содержит базовый счетчик TCNTX, имеющий восемь или шестнадцать разрядов, и восьмиразрядный регистр управления TCCRX. Кроме того, в состав таймера/счетчика входят один или несколько разрядов регистра запросов, прерывания TIFR и столько же разрядов регистра маскирования прерываний TIMSK. Регистры TIFR и TIMSK являются общими для всех таймеров/счетчиков микроконтроллера.

Разряд регистра TIFR устанавливается в единичное состояние при формировании в таймере/счетчике определенного запроса прерывания. Запрос прерывания проходит в блок прерываний при единичном состоянии соответствующего разряда регистра TIMSК. Разряд регистра ТIFR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установки бита в единичное состояние.

В состав таймера/счетчика, выполняющего функцию сравнения/PWM, входит регистр сравнения OCRX, а в состав таймера/счетчика, выполняющего функцию захвата, – регистр захвата ICRX. Разрядность регистров OCRX и ICRX равна разрядности базового счетчика TCNTX.

Для записи кода в шестнадцатиразрядный счетчик или регистр сначала выполняется команда записи (OUT) байта в старшую половину разрядов (Н), при этом поступавший из регистра общего назначения старший байт запоминается в регистре временного хранения. Затем выполняется команда записи (OUT) младшего байта в младшую половину разрядов (L), при этом оба байта одновременно записываются в счетчик или регистр.

Для чтения кода из шестнадцатиразрядного счетчика или регистра сначала выполняется команда чтения (IN) байта из младшей половины разрядов (L), при этом считанный младший байт поступает в регистр общего назначения, а старший байт запоминается в регистре временного хранения. Затем выполняется команда чтения байта из старшей половины разрядов (Н), при этом старший байт из регистра временного хранения поступает в указанный в команде регистр общего назначения [2].

2.3 Таймер/счетчик типа А

Таймер/счетчик типа А есть у микроконтроллеров всех типов кроме микроконтроллера типа m103. Он имеет имя Т/С0 (X = 0). Таймер/счетчик типа А формирует запрос прерывания Т/С0 OVF при переполнении восьмиразрядного базового счетчика TCNT0. Структурная схема таймера/счетчика типа А изображена на рисунке 2.2.


Рисунок 2.3 – Структурная схема таймера/счетчика типа А

Тактовый сигнал микроконтроллера СК поступает в пересчетную схему (prescaler) ПС, представляющую собой десятиразрядный счетчик, где выполняется деление частоты тактового сигнала на 8, 64, 256 и 1024. Сигналы с четырех выходов пересчетной схемы поступают в схему управления СУ (мультиплексор). При наличии в микроконтроллере таймера/счетчика Т/С1 эти же сигналы поступают в Т/С1.

В схему управления поступают также тактовый сигнал СК и сигнал из внешнего источника, принимаемый на вход Т0. В качестве входа Т0 у микроконтроллеров типа 1200, 2313 и 4433 используется вывод порта PD4, у микроконтроллеров типа 2323, 2343 и серии ATtny – вывод порта РВ2, а у микроконтроллеров типа 8515, 8535 и m163 – вывод порта РВ0.

Схема управления в зависимости от комбинации состоянии разрядов CS00, CS01 и CS02 регистра управления TCCR0 передаст один из поступающих сигналов на счетный вход базового счетчика TCNT0, ведущего счет на сложение. Сигналы, используемые для счета в счетчике TCNT0 при разных комбинациях значений в разрядах регистра TCCR0, указаны в таблице 2.1.


Таблица 2.1 – Сигналы, используемые для счета в счетчике TCNT0

CS02 CS01 CS00 сигнал

0 0 0 0

1 1 1 1

0 0

1 1

0 0

1

1

0

1

0

1

0

1

0

1

нет

СК

СК/8

СК/64

СК/256

СК/1024

Отрицательный фронт на ТО Положительный фронт на ТО

При переполнении счетчика TCNT0 устанавливается в единичное состояние разряд TOV0 регистра TIFR и при единичном состоянии разряда ТОIЕ0 регистра TMSK в блок прерываний поступает запрос прерывания Т/С0 OVF.

В микроконтроллере типа t15 в работе таймера/счетчика типа А участвуют разряд PSR0 регистра SFIOR. При установке этого разряда в единичное состояние сбрасывается в исходное (нулевое) состояние пересчетная схема ПС. Разряд PSR0 возвращается в нулевое состояние аппаратно. В микроконтроллере тина m163 аналогичная операция выполняется при установке в единичное состояние разряда PSR10 регистра SFIOR [2].


Информация о работе «Разработка информационно-обучающей программы "Таймеры/счетчики и АЦП микроконтроллеров семейства AVR"»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 55833
Количество таблиц: 9
Количество изображений: 13

0 комментариев


Наверх