Таймер/счетчики
Таймеры/счетчики (Т/С) предназначены для ввода информации в виде подсчета внешних событий, а также формирования временных функций МК51 [3]. В состав блока Т/С входят (рис.37): - два 16-разрядных регистра Т/С0 и Т/С1; - восьмиразрядный регистр режимов Т/С (TMOD); - восьмиразрядный регистр управления (TCON); - схема инкремента; - буфер блока Т/С; - схема фиксации входных сигналов; - логика управления блоком Т/С; - схема управления флагами. Рис. 37. Функционально-структурная схема блока таймеров/счетчиков Буфер Т/С осуществляет связь между 8-разрядной внутренней шиной ШВ и 8-разрядной шиной данных ШД, обеспечивая запись, хранение и коммутацию данных. Два 16-разрядных регистра Т/С0 и Т/С1 выполняют функцию хранения содержимого счета. Каждый из них состоит из пары восьмиразрядных регистров, соответственно ТН0, TL0 и ТН1, TL1. Причем регистры ТН0, ТН1 - старшие, а регистры TL0, TL1 - младшие 8 разрядов. Каждый из восьмиразрядных регистров имеет свой адрес в пространстве РСФ и может быть использован как РОН, если Т/С не используются (бит TR0 для Т/С0 и бит TR1 для Т/С1 в регистре управления TCON равны «0»): - ТL0, TH0 – 8AH, 8CH; - TL1, TH1 – 8BH, 8DH. Код величины начального счета заносится в регистры Т/С программно. В процессе счета содержимое регистров Т/С инкрементируется с помощью схемы инкремента. Признаком окончания счета, как правило, является переполнение регистра Т/С, т. е. переход его содержимого из состояния "все единицы" в состояние "все нули". Все регистры ТН0, ТН1, TL0, TL1 доступны по чтению, и, при необходимости, контроль достижения требуемой величины счета может выполняться программно. Схема инкремента предназначена: - для увеличения на 1 в каждом машинном цикле содержимого регистров Т/С0, Т/С1, для которых установлен режим таймера и счет разрешен; - для увеличения на 1 содержимого регистров Т/С0, Т/С1, для которых установлен режим счетчика, счет разрешен и на соответствующем входе МК51 (Т0 для Т/С0 и Т1 для Т/С1) зафиксирован счетный импульс. При работе в качестве таймера содержимое регистра Т/С инкрементируется в каждом машинном цикле, т. е. Т/С является счетчиком машинных циклов МК51. Поскольку машинный цикл состоит из 12 периодов частоты синхронизации fCLK, то частота счета в данном случае равна fCLK/12. При работе Т/С в качестве счетчика внешних событий содержимое регистра Т/С инкрементируется в ответ на переход из «1» в «0» сигнала на счетном входе МК51 (вывод Т0 для Т/С0 и вывод Т1 для Т/С1). Счетные входы аппаратно проверяются в фазе S5P2 каждого машинного цикла. Когда проверки показывают высокий уровень на счетном входе в одном машинном цикле и низкий уровень в другом машинном цикле, регистр Т/С инкрементируется. Новое (инкрементированное) значение заносится в регистр Т/С в фазе S3P1 машинного цикла, непосредственно следующего за тем, в котором был обнаружен переход из «1» в «0» на счетном входе. Т. к. для распознавания такого перехода требуется два машинных цикла (24 периода частоты синхронизации), то максимальная частота счета Т/С в режиме счетчика равна fCLK /24. Чтобы уровень сигнала на счетном входе был гарантировано зафиксирован, он должен оставаться неизменным в течение как минимум одного машинного цикла. Схема фиксации входных сигналов , , Т0, Т1 представляет собой четыре триггера. В каждом машинном цикле в момент S5P2 в них запоминается информация с выводов МК51 , , Т0, Т1. Схема управления флагами вырабатывает и снимает флаги переполнения Т/С и флаги запросов внешних прерываний. Логика управления Т/С синхронизирует работу регистров Т/С0 и Т/С1 в соответствии с запрограммированными режимами работы и синхронизирует работу блока Т/С с работой МК51. Регистр режимов Т/С – TMOD (табл. 11) предназначен для приема и хранения кода, определяющего: - один из 4-х возможных режимов работы каждого Т/С; - работу в качестве таймеров или счетчиков; - управление Т/С от внешнего вывода INTx.
Таблица 11
Продолжение табл.11
Как видно из таблицы, младшая тетрада байта регистра TMOD определяет режимы работы Т/С0, а старшая – режимы работы Т/С1. Регистр управления (TCON) предназначен для приема и хранения кода управляющего слова. Обозначение разрядов регистра TCON и их назначение приведено в табл. 12. Для управления таймерами/счетчиками используются 4 старших разряда регистра TCON. Таблица 12
Флаги переполнения TF0 и TF1 устанавливаются аппаратно при переполнении соответствующих Т/С (переход Т/С из состояния "все единицы" в состояние "все нули"). Если при этом прерывание от соответствующего Т/С разрешено, то установка флага TF вызовет прерывание. Флаги TF0 и TF1 сбрасываются аппаратно при передаче управления программе обработки соответствующего прерывания. Флаги TF0 и TF1 программно доступны и могут быть установлены/сброшены программой. Используя этот механизм, прерывания по TF0 и TF1 могут быть вызваны (установка TF) или отменены (сброс TF) программой.
2.3.3.1. Режимы работы таймеров/счетчиков Режим работы каждого Т/С определяется значением битов М0, Ml в регистре TMOD. Т/С0 и Т/С1 имеют четыре режима работы. Режимы работы 0, 1, 2 одинаковы для обоих Т/С. Т/С0 и Т/С1 в этих режимах полностью независимы друг от друга. Работа Т/С0 и Т/С1 в режиме 3 различна. При этом установка режима 3 в Т/С0 влияет на режимы работы Т/С1. Установка битов М0=«0», М1=«0» определяет режим работы 0. Т/С в режиме 0 (рис. 38) представляет собой устройство на основе 13-разрядного регистра (восьмиразрядный таймер/счетчик с предделителем на 32). Рис.38. Функционально-структурная схема и логика работы Т/С в режиме 0 13-разрядный регистр состоит для Т/С0 из 8 разрядов регистра ТН0 и 5 младших разрядов регистра TL0, а для Т/С1 - из 8 разрядов регистра ТН1 и 5 младших разрядов регистра TL1. В этом режиме функцию делителя на 32 выполняют регистры TL0, TL1. Они остаются программно доступными, но надо помнить, что значащими в режиме 0 являются только пять младших разрядов регистров TL0, TL1. Логика работы в режиме 0 показана на рис. 38. Бит С/Тх регистра TMOD определяет работу Т/С или в качестве таймера (С/Т=0) с тактированием от встроенного задающего генератора с частотой fCLK/12, или в качестве счетчика (С/Т=1) внешних событий со входа Тх. Счет начинается при установке бита TR регистра TCON в состояние «1». При необходимости управления счетом извне бит GATE регистра TMOD устанавливается в состояние «1». Тогда при TR= «1» счет будет разрешен, если на входе (для Т/С0) или (для Т/С1) установлено состояние «1» и будет запрещен, если установлено состояние «0». Установка бита TR0 для Т/С 0 и TR1 для Т/С1 в состояние «0»" выключает Т/С независимо от состояния других битов. При переполнении Т/С (переход содержимого регистра Т/С из состояния "все единицы" в состояние "все нули") устанавливается флаг TF0 для Т/С0 или TF1 для Т/С1 в регистре TCON. Установка битов М0=«1», М1=«0» определяет режим работы 1. Логика работы Т/С в режиме 1 показана на рис. 39.
Рис.39. Функционально-структурная схема и логика работы Т/С в режиме 1 Режим 1 аналогичен режиму 0. Отличие состоит в том, что установка режима 1 превращает Т/С в устройство на основе 16- разрядного регистра. Для Т/С0 регистр состоит из программно доступных пар TL0, ТН0, для Т/С1 из программно доступных пар TL1, ТН1. Установка битов М0=«0», М1=«1» определяет режим работы 2. В этом режиме Т/С представляет собой устройство на основе 8-разрядного регистра TL0 для Т/С0 и TL1 для Т/С1. Логика работы Т/С0 и Т/С1 в режиме 2 одинакова и показана на рис. 40.
Рис.40. Функционально-структурная схема и логика работы Т/С в режиме 2
При каждом переполнении TL0 кроме установки в регистре TCON флага TF0 происходит автоматически перезагрузка содержимого из ТН0 в TL0. Соответственно для Т/С1 при переполнении TL1 в регистре TCON устанавливается флаг TF1 и происходит перезагрузка TL1 из ТН1. Регистры ТН0 и ТН1 загружаются программно. Перезагрузка TL0 из ТН0 и TL1 из ТН1 не влияет на содержимое регистров ТН0 и ТН1. Назначение битов управления TR0, TR1, GATE0, GATE1, С/Т 0, С/Т 1 такое же как режиме 0. Установка битов М0= «1», М1= «1» определяет режим работы 3. Т/С0 в режиме 3 представляет собой два независимых устройства на основе 8-разрядных регистров TL0 и ТН0. Логика работы Т/С0 в режиме 3 показана на рис. 41.
Рис.41. Функционально-структурная схема и логика работы Т/С0 в режиме 3
Т/С1 в режиме 3 заблокирован и просто сохраняет свой счет (значение кода в регистре Т/С). Эффект такой же, как при установке TR1=0. Устройство на основе регистра TL0 может работать в режиме таймера и в режиме счетчика. За ним сохраняются все биты управления Т/С0, оно реагирует на воздействия по входам Т0, . При переполнении TL0 устанавливается флаг TF0. Устройство на основе регистра ТН0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении ТН0 выставляет флаг TF1. Других битов управления устройство на основе ТН0 в этом режиме не имеет. Установка Т/С0 в режим 3 лишает Т/С1 бита включения TR1. Поэтому Т/С1 в режимах 0, 1, 2 при GATE 1= «0» всегда включен и при переполнении в режимах 0 и 1 Т/С 1 обнуляется, а в режиме 2 перезагружается не устанавливая флаг, если Т/С0 находится в режиме 3. Управление от входов , Т1, биты управления С/Т1, GATE1 для Т/С1 не зависят от режима Т/С 0. Т/С 1 аппаратно связан с блоком синхронизации последовательного порта (УАПП). При работе в режимах 0, 1, 2 при переполнении Т/С1 всегда вырабатывает импульс тактирования УАПП. Поэтому 3-й режим Т/С0 удобно применять тогда, когда требуется работа УАПП и двух таймеров или УАПП, таймера и счетчика. Когда Т/С0 переведен в режим 3, Т/С1 можно выключить, переведя его также в режим 3, использовать с последовательным портом для выработки импульсов тактирования или в любых других приложениях, не требующих прерывания.
2.3.3.2. Работа с таймерами/счетчиками
Как было уже указано выше, таймеры/счетчики используются для выполнения времязадающих функций управления, измерения количества внешних по отношению к микроконтроллеру событий и измерения интервалов времени. Счетчик внешних событий. Биты установки функции Т/С имеют значение Т/Сх= «1». Информация поступает от датчиков, подключенных к входам Т0 (Р3.4), Т1 (Р3.5). Это может быть информация о количестве деталей на движущемся конвейере, числе включений контрольной аппаратуры, количестве импульсов датчика частоты вращения вала и прочее. Для микроконтроллера входная информация представлена количеством импульсов на входе Тх (рис.42). Рис. 42. Временная диаграмма работы Т/С в режиме счетчика внешних событий
Для разрешения счета перед подачей импульсов необходимо установить бит управления TRx=1. Счет будет продолжаться либо до значения Ni в момент остановки счетчика TRx=0 (показано пунктиром), либо до момента переполнения счетчика. В последнем случае максимальное число, определяющее полный цикл счета, будет зависеть от числа разрядов счетчика: , при n=8 Nmax=255, при n=16 Nmax=65535. Необходимо отметить, что при работе в режиме счетчика фактор времени, как и равномерность наступления событий, не играет никакой роли. Счетчик может переполниться в одном случае за несколько секунд, например при подключении импульсного датчика частоты вращения, в другом случае это может быть интервал времени в несколько дней. Таймер. Таймером называется устройство, формирующее различные (программируемые) интервалы времени. В системах управления время (интервал времени) является основным и непрерывным фактором, сопровождающим процесс управления. Работа любого устройства сопровождается временем, в течение которого оно включено либо отключено. Поэтому алгоритм управляющей программы всегда содержит фрагменты формирования интервалов времени. Самый простой вариант решения этой задачи - это зацикливание участков программы, т.е. создание программной задержки времени исходя из длительности выполнения суммы команд в цикле. Однако это неэффективный путь решения задачи, сильно замедляющий весь процесс управления, так как ЦП занят формированием временного интервала и не может принимать новую информацию и обрабатывать уже поступившую. Самый эффективный вариант создания временных интервалов - это применение специальных аппаратных средств – счетчиков /таймеров, работа которых не загружает ЦП, кроме моментов обслуживания (задание времени работы, пуск и останов). Все остальное время он работает параллельно ЦП. Интервал времени формируется в таком случае как сумма временных интервалов всех тактовых импульсов поступивших на вход счетчика от момента пуска до момента остановки. Поэтому источник тактовых импульсов должен удовлетворять жестким требованиям стабильности частоты. В микроконтроллерах эту роль выполняет кварцевый резонатор задающего генератора. В МК51 стандартная частота кварцевого резонатора составляет fCLK =12 мГц, а частота тактирования Т/С – fтакт = fCLK/12 = 1мГц, что определяет удобный для практики применения интервал времени тактирования tтакт = 1мкс. Для установки функции таймера для Т/С биты принимают значение Т/Сх= «0». Один из вариантов работы таймеры - это пуск с нулевым значением регистров (THx)=0, (TLx)=0, (рис.43).
Рис. 43. Временная диаграмма работы Т/С в режиме таймера
После установки бита TRx= «1» (пуск) происходит тактирование Т/С, вплоть до достижения состояния переполнения, что фиксируется установкой флага TFx= «1». Интервал времени в режиме 1 (шестнадцатиразрядный счетчик) Tmax = Nmax × tтакт. При Nmax = 65535 и tтакт = 1мкс Tmax = 65535мкс. Для создания произвольных интервалов времени (не более Tmax =65535мкс) используется режим работы таймера с предустановкой (рис.44). Для этого, до пуска таймера, осуществляется предустановка – запись заранее выбранного значения числа Nпред в регистры ТНх и TLx.
Рис. 44. Временная диаграмма работы Т/С в режиме таймера с предустановкой После установки бита TRx= «1» начинается счет от значения Nпред до значения Nmax (переполнение). Заданный (программируемый) интервал времени будет равен Тзад = (Nmax - Nпред)× tтакт. Число предустановки определяется как разность: Nпред = Nmax – Nзад, где Nзад = Тзад / tтакт. Например, для интервала времени 50000 мкс необходимо число предустановки равное 65535 – 50000 = 1553510 или 3САF16. Для программирования Т/С в регистр THx заносим число 3СН, в регистр TLx – число 0АFH. Для создания интервалов времени более чем 65535 мкс можно использовать либо режим многократного перезапуска таймера, либо применять кварцевый резонатор с меньшей частотой. Измерение длительности сигналов. Принцип работы Т/С позволяет использовать его для измерения длительности входных сигналов (в пределах Tmax). Для этого используется управление Т/С с помощью бита GATE= «1» в регистре TMOD и подключение измеряемого сигнала к входу INTx (рис.45).
Рис. 45. Временная диаграмма работы Т/С в режиме измерения длительности входного сигнала
После разрешения счета TRx= «1», счет начнется при появлении на входе INTx высокого уровня сигнала и закончится, когда этот уровень станет нулевым. После останова счетчика, в регистрах THx и TLx будет находиться число Nимп, определяющее длительность сигнала на входе INTx – Тимп = Nимп× tтакт.
|