Микропроцессоры и микроконтроллеры

 
 
 
«Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.»
Edward V Berard
Русский | Українська


Микропроцессоры и микроконтроллеры :: RISC-мікроконтролери сімейства AVR :: Функціонування таймера Т1

Функціонування таймера Т1

Таймер Т1 є 16-розрядним. Для нього допустимі всі режими роботи, характерні для таймерів Т0 і Т2. Крім того, він може по зовнішньому сигналу зберігати свій стан в окремому регістрі (режим захоплення).

rn

До складу таймера Т1 входять лічильної регістр TCNT1, реєстр захоплення ICR1, два регістру порівняння OCR1A і OCR1B (всі регістри 16-розрядні), два
8-розрядних регістра управління TCCR1A і TCCR1B. Всі 16-розрядні регістри реалізовані як пара 8-розрядних з відповідними іменами: TCNT1H і TCNT1L.

rn

переривання, що генеруються таймером, представлені в табл.27.2. Дозвіл переривань задається через регістр TIMSK (табл. 27.1).

rn

Режим захоплення - запис поточного стану TCNT1 в регістрі ICR1 - производится по фронту сигналу на вході ICP1 або по сигналу від аналогового компаратор.

rn

Основний засіб керування таймером Т1 - регістри TCCR1A і TCCR1B. Призначення їх розрядів і принципи управління представлені в табл.27.6 і 27.7 відповідно.

rn

Таблиця 27.6.

rn

Принципи управління таймером Т1 через регістр TCCR1А

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

Біт

rn
rn

Назва

rn
rn

Опис призначення

rn
rn

7,6

rn
rn

COM1A1,
COM1A0

rn
rn

Режим роботи блоку порівняння А. Розряд визначають поведінку виведення OC1A при настанні події «Режим» в залежності від режиму роботи таймера. Для режимів Normal і CTC доступні такі стану

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

COM1A1

rn
rn

COM1A0

rn
rn

Опис стану виводу OC1A

rn
rn

0

rn
rn

0

rn
rn

Таймер відключений від виведення OC1A

rn
rn

0

rn
rn

1

rn
rn

Зміна на протилежну

rn
rn

1

rn
rn

0

rn
rn

Висновок скидається у «0»

rn
rn

1

rn
rn

1

rn
rn

Висновок встановлюється в «1»

rn
rn
rn

5,4

rn
rn

COM1B1, COM1B0

rn
rn

Режим роботи блоку порівняння B. Визначає стан виведення OC1B при настанні події «Режим». Для режимів Normal і CTC доступні такі стану

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

COM1B1

rn
rn

COM1B0

rn
rn

Опис стану виводу OC1B

rn
rn

0

rn
rn

0

rn
rn

Таймер відключений від виведення OC1B

rn
rn

0

rn
rn

1

rn
rn

Зміна на протилежну

rn
rn

1

rn
rn

0

rn
rn

Висновок скидається у «0»

rn
rn

1

rn
rn

1

rn
rn

Висновок встановлюється в «1»

rn
rn
rn

3,2

rn
rn

FOC1A, FOC1B

rn
rn

Примусове зміна стану висновків OC1A і OC1B в режимах Normal і CTC (залежить від бітів COM nxi )

rn
rn

1,0

rn
rn

WGM1,

rn

WGM0

rn
rn

Режим роботи таймера лічильника Т1. Використовуються спільно з битами WGM3, WGM2 регістру TCCR1B - див. табл. 27.8

rn
rn

Таблиця 27.7.

rn

Принципи управління таймером Т1 через регістр TCCR1B

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

Біт

rn
rn

Назва

rn
rn

Опис призначення

rn
rn

7

rn
rn

ICNC1

rn
rn

Управління схемою придушення перешкод блоку захоплення

rn
rn

6

rn
rn

ICES1

rn
rn

Вибір активного фронту сигналу захоплення

rn
rn

5

rn
rn

-

rn
rn

Не використовується

rn
rn

4,3

rn
rn

WGM3,

rn

WGM2

rn
rn

Режим роботи таймера лічильника Т1. Використовуються спільно з битами WGM1, WGM0 регістру TCCR1А - див. табл. 3.11

rn
rn

2 ... 0

rn
rn

SC12 ...
SC10

rn
rn

Управління тактовим сигналом. Розряди визначають джерело тактового сигналу для таймера Т1. Настройка відповідає табл.27.4 (як для таймера Т0).

rn
rn

Робота таймера Т1 в режимах Normal й CTC

rn

У цих режимах функціонування таймера Т1 аналогічно роботі таймера Т0, з тією різницею, що рахунок проводиться в 16-розрядної конфігурації (від $ 0000 до максимум $ FFFF). При досягненні максимуму $ FFFF формується прапор переривання TOV1, а при збігу значень TCNT1 і OCR1A або OCR1B - прапори OCF1A або OCF1B відповідно.

rn

Таблиця 27.8.

rn

Вибір режиму роботи таймера Т1

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

WGM13

rn
rn

WGM12

rn
rn

WGM11

rn
rn

WGM10

rn
rn

Режим роботи

rn
rn

Модуль
рахунку

rn
rn

0

rn
rn

0

rn
rn

0

rn
rn

0

rn
rn

Normal, 16-розрядний рахунок

rn
rn

$ FFFF

rn
rn

0

rn
rn

0

rn
rn

0

rn
rn

1

rn
rn

Phase correct PWM, 8-розрядний

rn
rn

$ 00FF

rn
rn

0

rn
rn

0

rn
rn

1

rn
rn

0

rn
rn

Phase correct PWM, 9-розрядний

rn
rn

$ 01FF

rn
rn

0

rn
rn

0

rn
rn

1

rn
rn

1

rn
rn

Phase correct PWM, 10-розрядний

rn
rn

$ 03FF

rn
rn

0

rn
rn

1

rn
rn

0

rn
rn

0

rn
rn

CTC (скидання при збігу)

rn
rn

OCR1A

rn
rn

0

rn
rn

1

rn
rn

0

rn
rn

1

rn
rn

Fast PWM, 8-розрядний

rn
rn

$ 00FF

rn
rn

0

rn
rn

1

rn
rn

1

rn
rn

0

rn
rn

Fast PWM, 9-розрядний

rn
rn

$ 01FF

rn
rn

0

rn
rn

1

rn
rn

1

rn
rn

1

rn
rn

Fast PWM, 10-розрядний

rn
rn

$ 03FF

rn
rn

1

rn
rn

0

rn
rn

0

rn
rn

0

rn
rn

Phase and Frequency Correct PWM

rn
rn

ICR1

rn
rn

1

rn
rn

0

rn
rn

0

rn
rn

1

rn
rn

Phase and Frequency Correct PWM

rn
rn

OCR1A

rn
rn

1

rn
rn

0

rn
rn

1

rn
rn

0

rn
rn

Phase correct PWM

rn
rn

ICR1

rn
rn

1

rn
rn

0

rn
rn

1

rn
rn

1

rn
rn

Phase correct PWM

rn
rn

OCR1A

rn
rn

1

rn
rn

1

rn
rn

0

rn
rn

0

rn
rn

CTC (скидання при збігу)

rn
rn

ICR1

rn
rn

1

rn
rn

1

rn
rn

0

rn
rn

1

rn
rn

Зарезервовано

rn
rn

-

rn
rn

1

rn
rn

1

rn
rn

1

rn
rn

0

rn
rn

Fast PWM

rn
rn

ICR1

rn
rn

1

rn
rn

1

rn
rn

1

rn
rn

1

rn
rn

Fast PWM

rn
rn

OCR1A

rn
rn

Робота таймера Т1 в режимі Fast PWM й Phase Correct PWM

rn

Режим Fast PWM (швидкодіючий шим), дозволяє генерувати високочастотний широтному-модульований сигнал. Сумуються рахунок проводиться на регістрі TCNT1. Ширина чергового імпульсу буде визначатися поточним вмістом регістру порівняння OCR1А). Важливо, що змінювати вміст цього регістру можна без зупинки таймера, при цьому перешкоди від перемикання не виникають.

rn

Стан лічильника TCNT1 змінюється циклічно від $ 0000 до $ FFFF, при цьому за переповнення формується прапор переривання TOV1, а при рівності лічильно регістру TCNT1 та одного з регістрів порівняння OCR1А або OCR1В встановлюється прапор переривання OCF1А або OCF1В відповідно. Стан висновків OC1А і OC1В в момент досягнення стану «Режим» визначається вмістом пар розрядів (COM1А1, COM1А0) і (COM1В1, COM1В0) відповідно згідно табл.27.9.

rn

Частота генерованих шим-імпульсів визначається співвідношенням

rn

FOC 1 = FCLKsys /(2 N < /em> * TOP ),

rn

де N - коефіцієнт розподілу предделітеля, TOP - модуль рахунку, обумовлений битами WGM13 ... WGM10 згідно табл.27.8.

rn

Наявність двох регістрів порівняння OCR1А або OCR1В і двох висновків сигналів OC1А і OC1В дозволяє за допомогою одного таймер Т1 генерувати дві послідовності шим-імпульсів з роздільним управлінням (щоправда, з однаковою частотою). Таке використання таймера Т1 переважно для реалізації двухкоордінатного управління технологічним обладнанням. Саме таймер Т1 використаний як генератора шим-імпульсів у складі системи УУМС-2.

rn

Таблиця 27.9.

rn

Настройка поведінки висновків OC1А (OC1В) в режимі Fast PWM

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

COM1А (B) 1

rn
rn

COM1A (B) 0

rn
rn

Опис стану виводу OC1A (ОС1B)

rn
rn

0

rn
rn

0

rn
rn

Таймер-лічильник Т1 відключений від виведення OC1A (ОС1B)

rn
rn

0

rn
rn

1

rn
rn

При WGM13 = 0 таймер Т1 відключений від OC1A (ОС1B).

rn

При WGM13 = 1 стан виведення OC1A (ОС1B) змінюється на протилежне

rn
rn

1

rn
rn

0

rn
rn

Висновок скидається у «0» при досягненні рівності регістрів TCNT1 і OCR1A (B). Встановлюється в «1» при досягненні TCNT1 = $ 0000 (неінвертірованний шим)

rn
rn

1

rn
rn

1

rn
rn

Висновок встановлюється в «1» при досягненні рівності регістрів TCNT1 і OCR1A (B). Скидається у «0» при досягненні TCNT0 (2) = $ 0000 (Інвертований шим)

rn
rn

Реалізація режиму Phase Correct PWM для таймера Т1 схожа на функціонування таймера Т0 в цей режим з тією різницею, що рахунок здійснюється від $ 0000 до $ FFFF і назад до $ 0000. Управління здійснюється відповідними розрядом для таймера Т1. Режим Phase and Frequency Correct PWM в цій статті не розглядається.

rn

Також в даних матеріалах не розглядається функціонування сторожового таймера WDT.