Таймер/счетчик 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 01 1 1 1 | 0 01 10 011 | 01010101 | нетСКСК/8СК/64СК/256СК/1024Отрицательный фронт на ТО Положительный фронт на ТО |
При переполнении счетчика TCNT0 устанавливается в единичное состояние разряд TOV0 регистра TIFR и при единичном состоянии разряда ТОIЕ0 регистра TMSK в блок прерываний поступает запрос прерывания Т/С0 OVF.
В микроконтроллере типа t15 в работе таймера/счетчика типа А участвуют разряд PSR0 регистра SFIOR. При установке этого разряда в единичное состояние сбрасывается в исходное (нулевое) состояние пересчетная схема ПС. Разряд PSR0 возвращается в нулевое состояние аппаратно. В микроконтроллере тина m163 аналогичная операция выполняется при установке в единичное состояние разряда PSR10 регистра SFIOR [2].
2.4 Таймер/счетчик типа В
Таймер/счетчик типа В входит в состав периферийных устройств микроконтроллеров типа t15 (T/C1) и m103 (T/C2). Он формирует запрос прерывания Т/СХ OVF при переполнении восьмиразрядного базового счетчика TCNTX и выполняет функцию сравнения/PWM с формированием запроса прерывания Т/СХ СОМР. Структурная схема таймера/счетчика типа В изображена на рисунке 2.3.
Рисунок 2.3 – Структурная схема таймера/счетчика типа В
Тактовый сигнал микроконтроллера СК поступает в пересчетную схему ПС, где частота сигнала делится на 8, 64, 256 и 1024. Сигналы с четырех выходов пересчетной схемы поступают в схему управления СУ1 и в таймер/счетчик Т/С1 типа Е. В схему управления СУ1 поступают также тактовый сигнал СК и сигнал из внешнего источника, принимаемый на вход Т2 (вывод порта PD7). При выполнении функции сравнения/PWM вывод порта РВ7 используется в качестве выхода OC2/PWM2 для выдачи сигнала, формируемого при совпадении сравниваемых кодов или сигнала PWM2.
Схема управления СУ1 в зависимости от комбинации состояний разрядов CS20, CS21 и CS22 регистра управления TCCR2 передает на счетный вход базового счетчика TCNT2 один из поступающих сигналов в соответствии с таблицей 2.1 при (Х = 2).
При переполнении базового счетчика устанавливается в единичное состояние разряд TOV2 регистра TIFR и при единичном состоянии разряда TOIE2 регистра TIMSK в блок прерываний поступает запрос прерывания Т/С2 OVF.
Режим работы таймера/счетчика определяется комбинацией состояний разрядов PWM2, СОМ21 и СОМ20 регистра TCCR2. При нулевом состоянии трех названных разрядов формируется только запрос прерывания Т/С2 OVF. При PWM2 = 0 и других комбинациях состоянии разрядов СОМ21 и СОМ20 выполняется функция сравнения. Код, формируемый в базовом счетчике TCNT2, с помощью компаратора К сравнивается с кодом, записанным в регистре OCR2. При совпадении кодов устанавливается определенное значение сигнала на выходе ОС2 (вывод порта РВ7), переводится в единичное состояние разряд OCF2 регистра TFR и при единичном состоянии разряда OCIE2 регистра TIMSK в блок прерываний поступает запрос прерывания Т/С2 СОМР. Значение сигнала, устанавливаемого на выходе ОС2 при совпадении кодов, определяется комбинацией состояний разрядов СОМ20 и СОМ21 регистра TCCR2 в соответствии с таблицей 2.2.
Таблица 2.2 – Комбинации состояний разрядов СОМ20 и СОМ21 регистра TCCR2
С0М21 | СОМ20 | Значение сигнала |
011 | 1 01 | изменяетcя01 |
Работа базового счетчика при выполнении функции сравнения зависит от состояния разряда СТС2 регистра TCCR2. При СТС2 = 0 базовый счетчик после совпадения кодов продолжает счет до переполнения и далее выполняет счет, начиная с 0. При СТС2 = 1 базовый счетчик при совпадении кодов сбрасывается в нулевое состояние и продолжает счет, начиная с 0. При PWM2 = 1 и СОМ21 = 1 выполняется функция PWM. Базовый счетчик ведет счет на сложение до получения кода максимального числа (255), переводится в режим счета на вычитание и в этом режиме ведет счет до получения кода минимального числа (0) и далее вновь переходит в режим счета на сложении. Акт переполнения (переход от кода числа 255 к коду числа 0) в данном случае отсутствует.
Запрос прерывания Т/С2 OVF формируется при переходе от числа 0 к числу 1.
Состояние разряда СОМ20 определяет вид изменения выходного сигнала при совпадении кодов в счетчике и регистре сравнения. На рисунке 1.4 изображены графики изменения числа в счетчике TCNT2 и временные диаграммы сигнала PWM на выходе ОС2 при заданном коде числа в регистре сравнения (OCR2) при разных состояниях разряда СОМ20.
Рисунок 2.4 – Графики изменения числа в счетчике TCNT2 и временные диаграммы сигнала PWM на выходе ОС2
Период сигнала PWM (T) в 510 раз больше периода сигнала, поступающего на счетный вход базового счетчика.
При записи байта в регистр OCR2 (по команде с мнемокодом операции OUT) байт принимается в регистр временного хранения, из регистра которого переписывается в регистр OCR2 при появлении в базовом счетчике кода числа 255. При этом исключается появление в сигнале PWM импульса со случайной длительностью.
Таймер/счетчик типа В микроконтроллере типа t15 имеет имя Т/С1 (X = 1). Исходный сигнал для работы таймера/счетчика (РСК) имеет частоту 25,6 МГц при частоте тактового сигнала микроконтроллера 1,6 МГц (1/16 РСК). В регистре управления имеется дополнительный разряд CS13. Выбор сигнала для передачи на счетный вход базового счетчика определяется комбинацией состояний разрядов CS13, CS12, CS11 и CS10 в соответствии с таблицей 2.3. Вход для приема сигнала из внешнего источника отсутствует.