Лабораторная работа n 4
ИЗУЧЕНИЕ СТРУКТУРЫ И РЕЖИМОВ РАБОТЫ ТАЙМЕРОВ-СЧЕТЧИКОВ
ОМК P89LPC932.
Цель работы: 1.Ознакомление со структурой блока
таймеров/счетчиков ОМК P89LPC932
2.Получение навыков программирования и применения таймеров/счетчиков в основных режимах работы.
Общие сведения Структура блока таймеров/счетчиков омк p89lpc932
В микроконтроллере LPC932 имеется блок таймеров/счетчиков общего назначения, который совместим со стандартом 80C51, и предназначен для выполнения следующих функций:
Формирование программно-управляемых временных задержек;
Подсчет числа внешних событий;
Выполнение времязадающих функций ОМК.
В состав блока входят:
1.два 16-разрядных регистра T/C0 и T/C1;
2.два 8-разрядных регистра режимов TMOD и TАMOD;
3.восьмиразрядный регистр управления TCON;
4.схема инкремента;
5.схема фиксации INT0, INT1, Т0, Т1;
6.схема управления флагами;
7.логика управления T/C.
Два 16-разрядных регистра T/C0 и T/C1 выполняют функцию хранения содержимого счета. Каждый из них состоит из пары 8-разрядных регистров TH0, TL0 и TH1, TL1. Каждый из 8-разрядных регистров имеет свой адрес и может быть использован как регистр общего назначения (РОН), если T/C не используется.
Регистры режимов TMOD и TАMOD предназначены для приема и хранения кодов настройки T/Cn
Каждый из таймеров/счетчиков может быть запрограммирован на работу в режиме таймера (подсчет импульсов, поступающих от внутреннего тактового генератора) или счетчика событий (подсчет импульсов, поступающих с внешних устройств через входы T0 и T1). Также добавлена возможность автоматического переключения вывода Tx при переполнении таймера.
Таймеры 0 и 1 могут быть запрограммированы на автоматическое переключение выходов порта при переполнении таймера. ВыводыT0 и T1, используемые для подсчета внешних сигналов (в качестве входов) и для ШИМ’а (в качестве выходов), также используются для переключения выходов таймера. Эту функцию можно разрешить с помощью битов ENT0 и ENT1 регистра AUXR1, соответственно для таймера 0 и таймера 1. Выходы порта устанавливаются в единицы перед первым переполнением таймера, если данный режим включен. Для правильного функционирования в этом режиме, бит C/T должен быть сброшен, для тактирования таймера сигналами PCLK.
В режиме таймера содержимое регистра инкрементируется в каждом машинном цикле (МЦ). В режиме счетчика содержимое регистра инкрементируется под воздействием внешнего сигнала на соответствующих входах T0 и T1, при переходе из 1 в 0 (т.е. по спаду сигнала). В этом режиме сигнал на внешних выводах проверяется один раз за каждый машинный цикл. Если сигнал имеет высокий уровень в течение одного МЦ, а в следующем МЦ – низкий уровень, то счетчик инкрементируется. Новое значение счетчика записывается в регистр в течение цикла, следующего за тем, в котором был обнаружен переход. Поскольку для распознавания перехода необходимо 2 машинных цикла (4 такта CPU, Central Processing Unit), то максимальная частота подсчета входных сигналов составляет 1/4 опорной частоты CPU. Ограничений на длительность входных сигналов нет, но изменение значения счетчика гарантировано только в том случае, если сигнал на входе держится как минимум в течение одного машинного цикла.
Выбор режима “таймер” или “счетчик” осуществляется с помощью битаTnC/T в регистре TMOD.
Таймеры 0 и 1 имеют 5 режимов работы (режим 0, 1, 2, 3 и 6), которые выбираются с помощью битов TnM1 и TnM0 в регистре TMOD и бита TnM2 в регистре TAMOD. Назначение отдельных разрядов регистров TMOD.( Timer/Counter Mode Control register) и TAMOD (Timer/Counter Auxiliary Mode Control register) приведено в таблицах 3.1 и 3.2.
Таблица 3.1.
Бит |
Обозначение |
Назначение |
TMOD.7 |
T1GATE |
Управление разрешением работы таймера 1. Если бит установлен в 1, то работа таймера/счетчика разрешена, только если вывод INT1 имеет высокий уровень и установлен бит TR1. Если бит сброшен, то работа таймера 1 разрешена, если установлен бит TR1. |
TMOD.6 |
T1C/T |
Выбор режима “таймер” или “счетчик” для таймера 1. Бит сбрасывается для выбора режима “таймер”. Установка бита приводит к выбору режима “счетчик”. |
TMOD.5,4 |
T1M1, T1M0 |
Выбор режима работы таймера 1. Эти биты используются вместе с битом T1M2 регистра TAMOD для задания режима работы таймера 1. |
TMOD.3 |
T0GATE |
Управление разрешением работы таймера 0. Если бит установлен в 1, то работа таймера/счетчика разрешена, только если вывод INT0 имеет высокий уровень и установлен бит TR0. Если бит сброшен, то работа таймера 0 разрешена, если установлен бит TR0. |
TMOD.2 |
T0C/T |
Выбор режима “таймер” или “счетчик” для таймера 0. Бит сбрасывается для выбора режима “таймер”. Установка бита приводит к выбору режима “счетчик”. |
TMOD.1,0 |
T0M1, T0M0 |
Выбор режима работы таймера 0. Эти биты используются вместе с битом T0M2 регистра TAMOD для задания режима работы таймера 0. |
Таблица 3.2.
Бит |
Обозначение |
Назначение |
TAMOD.7-5 |
- |
Зарезервировано. Эти биты не должны устанавливаться в 1 при программировании микроконтроллера. |
TAMOD.4 |
T1M2 |
Дополнительный бит выбора режима для таймера 1. Используется вместе с битами T1M1 и T1M0 (регистр TMOD) для задания режима работы таймера 1. |
TAMOD.3-1 |
- |
Зарезервировано. Эти биты не должны устанавливаться в 1 при программировании микроконтроллера. |
TAMOD.0 |
T0M2 |
Дополнительный бит выбора режима для таймера 0. Используется вместе с битами T0M1 и T0M0 (регистр TMOD) для задания режима работы таймера 0. |
Регистр управления TCON (Timer/Counter Control register) предназначен для приема и хранения кода управляющего слова.
Назначение разрядов регистра TCON приведено в таблице 3.3.
Таблица 3.3.
Бит |
Обозначение |
Назначение |
TCON.7 |
TF1 |
Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера/счетчика. Сбрасывается аппарат-но после обработки прерывания, или программно (за исключением режима 6, где сброс только аппаратный). |
TCON.6 |
TR1 |
Бит управления запуском таймера 1. Устанавливается /сбрасывается программно для включения/выключения таймера/счетчика 1. |
TCON.5 |
TF0 |
Флаг переполнения таймера 0. Устанавливается аппаратно при переполнении таймера/счетчика. Сбрасывается аппарат-но после обработки прерывания, или программно (за ис-ключением режима 6, где сброс только аппаратный). |
TCON.4 |
TR0 |
Бит управления запуском таймера 0. Устанавливается /сбрасывается программно для включения/выключения тай-мера/счетчика 0. |
TCON.3 |
IE1 |
Флаг прерывания 1 по фронту. Устанавливается аппаратно при обнаружении фронта прерывания 1. Сбрасывается аппа-ратно после обработки прерывания или программно. |
TCON.2 |
IT1 |
Бит управления типом прерывания 1. Устанавливается /сбрасывается программно для задания чувствительности прерывания по спаду или по низкому уровню. |
TCON.1 |
IE0 |
Флаг прерывания 0 по фронту. Устанавливается аппаратно при обнаружении фронта прерывания 0. Сбрасывается аппаратно после обработки прерывания или программно. |
TCON.0 |
IT0 |
Бит управления типом прерывания 0. Устанавливается /сбрасывается программно для задания чувствительности прерывания по спаду или по низкому уровню. |
Схема инкремента предназначена:
- для увеличения на 1 в каждом машинном цикле содержимого регистров T/C0 и T/C1 при работе в режиме таймера при условии, что счет разрешен;
- для увеличения на 1 содержимого регистров T/C0 и T/C1 при работе в режиме счетчика при условии, что счет разрешен; и на соответствующем входе ОМК (T0 для T/C0 и T1 для T/C1) зафиксирован счетный импульс.
Схема фиксации INT0, INT1, Т0, Т1 представляет собой 4 триггера. В каждом машинном цикле в них запоминается информация с выводов INT0, INT1, Т0, Т1.
Схема управления флагами устанавливает и сбрасывает флаги переполнения T/C и флаги запросов внешних прерываний.
Логика управления T/C синхронизирует работу регистров T/C0 и T/C1 в соответствии с заданными режимами работы и синхронизирует работу блока T/C с работой ОМК.