ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.07.2024
Просмотров: 26
Скачиваний: 0
Лабораторная работа №3.
Изучение режимов работы таймеров.
Цель работы:
1.Изучить функциональные возможности таймеров МК АТ89S8253.
2.Изучить порядок программирования таймеров МК АТ89S8253.
Теоретическое введение.
1 Описание работы таймеров МК
Таймеры – устройства ввода/вывода, предназначенные для точного задания различных временных интервалов, могут использоваться для генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов. Применяются в функциях деления, распространения, модуляции сигналов, преобразования параллельного кода в последовательный.
Для пользователя в МК предоставлены три 16-разрядных таймера: Таймер0, Таймер1 и Таймер2. Таймер0 и Таймер1 синхронизируют действия МК в режиме реального времени, а Таймер 2 может тактироваться внешним сигналом (может быть сброшен аппаратно) и синхронизирует действия по отношению к внешним событиям. Таймеры 0 и 1 работают непрерывно и инкрементируются каждые 12 циклов тактового сигнала. При переполнении могут вызывать прерывания.
1.1 Таймер0 и Таймер1
В состав блока таймеров/счетчиков 0 и 1 входят:
−два 16-разрядных регистра Т/С0 и Т/С1,
−8-разрядный регистр режимов ТMOD,
−8-разрядный регистр управления TCON,
−схема инкремента и различные схемы управления.
Регистры Т/С0, Т/С1 хранят текущее состояние счетчика. Каждый из них состоит из двух 8- разрядных регистров - ТН0, TL0 и TH1, TL1. Регистры ТН0 и TH1 содержат старшие, а регистры ТL0 и TL1 - младшие разряды значения Т/С. Каждый из них программно доступен как по записи - для занесения начальной величины счёта, так и по чтению - для контроля их содержимого. В процессе счета содержимое регистров Т/С инкрементируется. Переполнение счётчиков (переход из состояния FFFFh в состояние 0000h) может служить признаком окончания счёта и инициализировать прерывание от таймеров.
Регистр режимов ТMOD (РСН) предназначен для установки режимов работы Т/С0 и T/C1 и определения источников их синхронизации (внутренних или внешних).
Обозначение |
Адрес бита |
|
Функция |
бита |
|
|
|
|
|
|
|
GATE1 |
TMOD.7 |
Разрешение управления Т/С1 от внешнего входа INT1. |
|
|
|
"0" - управление запрещено, "1" - управление разрешено. |
|
|
|
|
|
C/T1 |
TMOD.6 |
Определение работы T/C1: "0" - работа в режиме таймера, "1" - работа в |
|
|
|
режиме счетчика внешних событий. |
|
|
|
|
|
M1.1, |
TMOD.5, |
Определение номера режима работы T/C1 |
|
M0.1 |
TMOD.4 |
(00 - режим 0,…, 11 - |
режим 3). |
|
|
|
|
GATE0 |
TMOD.3 |
Разрешение управления Т/С0 от внешнего входа INT0. |
|
|
|
"0" - управление запрещено, "1" - управление разрешено. |
|
|
|
|
|
C/T0 |
TMOD.2 |
Определение работы T/C0: "0" - работа в режиме таймера, "1" - работа в |
|
|
|
режиме счетчика внешних событий. |
|
|
|
|
|
M1.1, |
TMOD.1, |
Определение номера режима работы T/C0 |
|
M0.1 |
TMOD.0 |
(00 - режим 0,…, 11 - |
режим 3). |
|
|
|
|
Регистр управления TCON (РСН) хранит управляющее слово T/C0 и T/C1.
Обозн. бита |
Адрес бита |
Функция |
|
|
|
TF1 |
7 |
Флаг переполнения T/C1 |
|
|
|
TR1 |
6 |
Бит включения T/C1 |
|
|
|
TF0 |
5 |
Флаг переполнения T/C0 |
|
|
|
TR0 |
4 |
Бит включения T/C0 |
|
|
|
IE1 |
3 |
Флаг запроса внешнего прерывания по входу INT1 |
|
|
|
IT1 |
2 |
Бит вида прерывания по входу INT1 |
|
|
|
IE0 |
1 |
Флаг запроса внешнего прерывания по входу INT0 |
|
|
|
IT0 |
0 |
Бит вида прерывания по входу INT0 |
|
|
|
TF0 и TF1 устанавливаются по переходу счетчиков из состояния FFh в 00h. При разрешении прерывания от таймера установка флага вызывает прерывание. Флаги сбрасывается аппаратно только при передаче управления обработчику соответствующего прерывания. Могут быть установлены и сброшены программно, доступны по чтению.
Биты включения TR0 и TR1 устанавливаются и сбрасываются программно. Доступны по чтению. Установка бита в "1" приводит к включению T/C, а сброс в "0" — к остановке T/C.
Режимы работы таймеров/счетчиков 0 и 1
Таймеры/счетчики могут работать в одном из 4-х режимов, определяемых разрядами M1.0 (М1.1) и M0.0 (М0.1) регистра TMOD. Режимы 0,1,2 одинаковы для обоих таймеров/счетчиков, поэтому описание таймера 0 в этих режимах подходит и таймеру 1. Установка T/C0 в режим 3 влияет на режим работы T/C1.
Режим 0 Таймер/счетчик - устройство на базе 13-битного регистра, образованного регистром ТН0 и пятью младшими битами регистра TL0 (3 старших бита - незначащие). Регистр TL0 выполняет функцию делителя на 32. Счёт начинается при установке бита TR регистра TCON в "1". Установка в "1" бита GATE регистра TMOD разрешает управление T/C извне. Установка в "0" бита TR регистра TCON запрещает счет независимо от состояния других битов.
Влияние управляющих сигналов TR1, GATE1, C/T1 и сигнала внешнего управления INT1 на работу таймера/счетчика на примере T/C1 представлено в таблице.
Таблица
TR1 |
GATE |
INT1 |
C/T1 |
функция |
|
|
|
|
|
0 |
х |
х |
х |
Остановка счета |
|
|
|
|
|
1 |
0 |
х |
0 |
Счет в режиме таймера |
|
|
|
|
|
1 |
0 |
х |
1 |
Счет в режиме счетчика внешних событий |
|
|
|
|
|
1 |
1 |
1 |
х |
Остановка счета |
|
|
|
|
|
1 |
1 |
1 |
0 |
Счет в режиме таймера |
|
|
|
|
|
1 |
1 |
1 |
1 |
Счет в режиме счетчика внешних событий |
|
|
|
|
|
Ниже приведена блок-схема работы T/C0 и T/C1.
Здесь и далее T, INT — выводы МК, OWERFLOW — переполнение, INTERRUPT — прерывание, Periph Clock периферийный счетчик, GATE, C/T TF, TR - биты регистров.
Рисунок Таймер/счетчик в режиме 0.
Режим 1 отличается от режима 0 тем, что таймер/счетчик 16-битный регистр, (TL имеет 8 бит). Режим 2 (автоперезагрузка)Таймер/счетчик - устройство на основе 8-разрядного регистра TL0.
При переполнении регистра TL0 во время счета, он автоматически перезагружается значением,
записанным в регистре TН0. При переполнении регистра TL0 флаг TF0 (регистр TCON) устанавливается автоматически. Назначение битов управления режима 2 соответствует режимам 0 и 1.
Рисунок Таймер/счетчик в режиме 2 Режим 3 (Только для Т/С0). Т/С1 в режиме 3 заблокирован и сохраняет содержимое своих
регистров TL1 и ТH1 (как при TR1=0). Таймер/счетчик T/C0 в режиме 3 - два независимых устройства на основе 8-битных регистров TH0 и TL0. Устройство на основе регистра TL0 может работать как в режиме таймера, так и в режиме счетчика внешних сигналов. За ним сохраняются все биты управления, оно реагирует на воздействия по входам T0 и INT0. При переполнении TL0 устанавливается флаг TF0.
Устройство на базе регистра TH0 работает только как таймер. Оно использует часть управляющих битов и флагов Т/С1; например, при переполнении ТН0 устанавливается ТF1, а для включения используется бит TR1. Остальные биты таймера/счётчика Т/С1 с работой ТН0 не связаны.
Установка T/C0 в режим 3 лишает T/C1 бита включения TR1. Поэтому, при нахождении Т/С0 режиме 3, T/C1 работает в режимах 0,1 или 2 (GATE1=0), при переполнении в режимах 0 и 1 T/C1 обнуляется, а в режиме 2 перезагружается без установки флага. Управление от входов INT1, T1, биты управления C/T1, GATE1 для T/C1 не зависят от режима T/C0.
Т/C1 аппаратно связан с блоком синхронизации последовательного интерфейса (ПИ). При работе в режимах 0,1 или 2 при переполнении T/C1 вырабатывается импульс синхронизации ПИ. Поэтому режим 3 T/C0 применяется, когда требуется работа ПИ и двух таймеров/счетчиков или ПИ, таймера и счетчика.
Если T/C0 - в режиме 3, T/C1 можно выключить (переведя его тоже в режим 3), использовать с последовательным портом для выработки синхронизирующих сигналов или в других приложениях, не требующих прерывания.
Рисунок Таймер/счетчик в режиме 3: 2 8-битных счетчика
1.2Таймер2
Таймер2 срабатывает по заднему фронту вывода T2EX. Он может быть доступен как по записи - занесение начальной величины счета, так и по чтению для контроля содержимого. Таймер2 -
Таймер/Счетчик внешних событий. Тип операции выбирается битом С / Т2 в РСН T2CON. Таймер2 имеет три режима: захват, автоперезагрузка (увеличивающий или уменьшающий счетчик), и режим генератора импульсов. Режимы выбираются битами РСН T2CON. Таймер2 состоит из двух 8-битных регистров: TH2 и TL2. В режиме Таймера, регистр TL2 увеличивает свое значение на единицу каждый машинный цикл (инкрементирует). Машинный цикл состоит из 12 тактов ГТИ, коэффициент счета равен 1/12 частоты тактового генератора.
В режиме Счетчика, содержимое регистра инкрементируется по перепаду из 1 в 0 (задний фронт) сигнала на входном выводе T2. Так как на распознавание перехода требуется 2 машинных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. Для
гарантированного прочтения входного считаемого сигнала он должен удерживать значение 1 не менее одного машинного цикла.
|
|
|
Таблица 1 |
Таймер2, выбор режимов |
|
RCLK + TCLK |
СР / RL 2 |
|
TR2 |
Режим |
|
0 |
0 |
|
|
1 |
16битный авто-перезагрузка |
0 |
1 |
|
|
1 |
16битный захват |
1 |
Х |
|
1 |
Генератор частоты |
|
Х |
х |
|
0 |
выключено |
Регистры Таймера2
Управляющие и статусные биты Таймера2 содержатся в РСН T2CON и T2MOD. Пара регистров (RCAP2H, RCAP2L), - регистры 16битовых режимов захват/автоперезагрузка для Таймера2
Таблица Назначение битов регистра управления Т/С2 T2CON
Обозн. |
Адрес |
|
Функция бита |
|
|
бита |
бита |
|
|
|
|
TF2 |
7 |
|
Флаг переполнения Таймера2, устанавливается Таймером2, очищается |
||
|
|
|
программно. Не установится, если RCLK = 1 или TCLK = 1. |
||
EXF2 |
6 |
|
Внешний флаг Таймера2. Устанавливается при сбое или перезагрузке, вызванной |
||
|
|
|
отрицательным переходом на T2EX (P1.1) и EXEN2 = 1. Если прерывания по |
||
|
|
|
Таймеру2 разрешены, установка EXF2 = 1 вызовет прерывание МК по вектору |
||
|
|
|
Таймера2. EXF2 должен очищаться программно. Не вызывает прерывание в |
||
|
|
|
режиме увеличивающего/уменьшающего счетчика (DCEN = 1). |
||
RCLK |
5 |
|
Разрешение приема тактового сигнала. "1" - последовательный порт может |
||
|
|
|
использовать импульсы переполнения в качестве тактового сигнала (опорного) в |
||
|
|
|
режимах последовательного порта 1 и 3. "0" - для тактового сигнала приемника |
||
|
|
|
используются переполнения Таймера1. |
|
|
TCLK |
4 |
|
Разрешение передачи тактового сигнала. "1" - последовательный порт может |
||
|
|
|
использовать импульсы переполнения Таймера2 как тактовый сигнал передачи в |
||
|
|
|
режимах последовательного порта 1 и 3. |
|
|
|
|
|
"0" - в качестве тактового сигнала - импульсы переполнения Таймера1. |
||
EXEN2 |
3 |
|
Внешнее разрешение Таймера2. "1" - разрешен захват или перезагрузка при |
||
|
|
|
отрицательном перепаде на выводе T2EX (если Таймер2 не используется для |
||
|
|
|
синхронизации последовательного порта). |
|
|
|
|
|
"0" - Таймер2 игнорирует события на выводе T2EX. |
|
|
TR2 |
2 |
|
Запуск/остановкой Таймера2. "1" - старт таймера."0" - остановка. |
||
C/T2 |
1 |
|
Выбор функции С/Т2. "0" - режим таймера. "1" - режим внешнего счетчика |
||
|
|
|
событий . Устанавливается выводом Р1.0 (Т2) |
|
|
CP/RL2 |
0 |
|
Выбор режима захват/перезагрузка. "1" – режим захвата, (при отрицательном |
||
|
|
|
перепаде напряжения на выводе T2EX и EXEN2 = 1. |
|
|
|
|
|
"0" - автоматическая перезагрузка при переполнении Таймера2 или |
||
|
|
|
отрицательном перепаде на T2EX (при EXEN2 = 1). Если |
RCLK или TCLK = 1, |
|
|
|
|
этот бит игнорируется и Таймер2 насильно переводится |
на автоперезагрузку по |
|
|
|
|
переполнению Таймера2. |
|
|
|
|
|
Таблица Регистр управления режимом Таймера2 T2MOD . |
||
Обозначение |
|
Адрес |
Функция бита |
|
|
бита |
|
бита |
|
|
|
- |
|
|
7…2 |
Свободные, зарезервированы для будущего использования |
|
T2OE |
|
|
1 |
Разрешение выхода Таймера2 |
|
DCEN |
|
|
0 |
"1" Таймер2 можно сконфигурировать как увеличивающий или |
|
|
|
|
|
уменьшающий счетчик |
|
Режимы работы таймера/счетчика 2 Режим захвата.
Таймер/Счетчик содержит блок захвата, который запоминает состояние счетчика при возникновении внешнего события, тем самым, определяя время его возникновения. В качестве события/событий выступает внешний сигнал, подключенный к выводу T2EX. Результат захвата
состояния таймера может использоваться для вычисления частоты, скважности импульсов и других параметров импульсных сигналов.
Если EXEN2 = 0, Таймер 2 - 16битный таймер/счетчик, при переполнении он устанавливает бит переполнения TF2 в регистре T2CON, который может использоваться для генерации прерывания.
Если EXEN2 = 1, Таймер 2 выполняет ту же операцию, но при переходе T2EX из 1 в 0 текущее значение регистров TH2 и TL2 помещается в регистры захвата RCAP2H и RCAP2L соответственно. Переход на выводе T2EX устанавливает бит EXF2, который также может вызвать прерывание.
Режим автоперезагрузки (увеличивающий/уменьшающий счетчик)
В режиме 16-битной автоперезагрузки Таймер2 может быть запрограммирован на инкрементирование или декрементирование. Если бит разрешения инкремента/декремента DCEN "0", то Таймер2 по умолчанию - инкрементирующий. Когда DCEN "1", направление счета Таймера2 зависит от значения вывода T2EX.
Рисунок . Схема работы Таймера 2 в режиме автоперезагрузки. OSC – генератор тактовой частоты, OVERFLOW – переполнение, RELOAD – перезагрузка, TRANSITION DETECTOR - детектор фронта.
При DCEN = 0 и EXEN2 = 0 Таймер 2 считает до значения 0FFFFH, по достижении которого, устанавливает флаг переполнения TF2. Переполнение вызывает перезагрузку регистров таймера 16битным значением, записанным в RCAP2H и RCAP2L.
При DCEN = 0 и EXEN2 = 1, перезагрузка 16 битов может быть вызвана как переполнением, так и перепадом из 1 в 0 на выводе T2EX. Перепад на T2EX также устанавливает бит EXF2. Биты TF2 и EXF2 могут вызывать прерывание, если это разрешено.
Рисунок . Схема работы Таймера 2 в режиме счетчика.
При DCEN =1 Таймер2 - в режиме увеличивающего/уменьшающего счетчика. Направлением счета управляет значение на T2EX. T2EX="1" -Таймер2 увеличивающий. Если значение счетчика равно 0FFFFH, Таймер2 переполнится и установит флаг TF2. Это вызовет перезагрузку в регистры TH2 и TL2 16-битного значения, записанного соответственно в регистрах RCAP2H и RCAP2L.
При T2EX="0" Таймер2 - уменьшающий. Таймер2 очищается когда TH2 и TL2 равны значениям, загруженным в регистры RCAP2H и RCAP2, что вызывает установку флага TF2 и запись значения 0FFFFH в регистры Таймера2.
Бит EXF2 переключается всегда при переполнении Таймера2 или его очищении и может быть использовано как 17-й бит. В этом режиме, EXF2 не вызывает прерывание.
Режим генератора импульсов. Этот режим устанавливается битом TCLK и/или RCLK в РСН T2CON. Режим генератора импульсов похож на режим автоперезагрузки тем, что изменение состояния регистра ТН2 вызывает перезагрузку регистров Таймера 2 16-битным значением,