Таймеры.
Atmega 128 имеет два 8-битных таймера/счетчика Т0 и Т2 и два 16-битных таймера/счетчика Т1 и Т3.
Восьмибитные таймеры T0 и T2.
В состав таймер/счетчиков входят три регистра:
регистр управления – ТССRn;
счетный регистр – TCNTn;
регистр сравнения – OCRn, где n=0,2 – номер таймера.
Таймер Т0 может использоваться как часы реального времени (асинхронный режим работы) с тактированием от дополнительного внешнего кварцевого резонатора. Поэтому, в него добавляем регистр ASSR – управление асинхронным режимом.
Регистр TCCR0 (TCCR2) предназначен для управления модулем таймера счетчика.
Формат:
7 0
FOCn |
WGMn0 |
COMn1 |
COMn0 |
WGMn1 |
CSn2 |
CSn1 |
CSn0 |
TCCRn |
FOCn – принудительное изменение состояния вывода OСn (режимы Normal и CTC). При FOCn=1 состояние вывода ОСn изменяется в соответствии с установками разрядов COMn1 и COMn0. В режимах Fast PWM и Phase Correct PWM этот разряд должен быть сброшен в ноль.
WGMn1 и WGMn0 – режимы работы таймера/счетчика:
Номер режима |
WGMn1 |
WGMn0 |
Режим работы |
0 |
0 |
0 |
Normal |
1 |
0 |
1 |
Phase Correct PWM |
2 |
1 |
0 |
CTC (сброс при совпадении) |
3 |
1 |
1 |
Fast PWM |
COMn1 и COMn0 – режим работы блока сравнения. Определяют поведение вывода Ocn при наступлении события «Совпадение». Влияние содержимого этих разрядов на поведение вывода зависит от режима работы таймера.
CSn2 .. CSn0 – управление тактовым сигналом.
Тактовый сигнал контроллера поступает на вход таймера через предделитель. Биты CSn2 .. CSn0 определяют коэффициент деления:
CSn2 |
CSn1 |
CSn0 |
Т2 |
Т0 |
|
Синхр. реж. (ASn=0) |
Асинхр. реж. (Asn=1) |
||||
0 0 |
0 0 |
0 1 |
таймер остановлен 1 |
останов. |
останов. |
0 0 |
1 1 |
0 1 |
8 64 |
8 32 |
8 32 |
1 1 |
0 0 |
0 1 |
256 1024 |
64 128 |
64 128 |
1 1 |
1 1 |
0 1 |
вывод Tn, счет по заднему фронту вывод Tn, счет по переднему фронту |
256 1024 |
256 1024 |
Регистр TCNTn – считает количество импульсов поступивших на вход таймера. При включений, регистр содержит 00 (Н). При достижении значения FF (Н), регистр сбрасывается в ноль, устанавливая флаг прерывания TOV0 (TOV2) регистра TIFR. Разрешение прерывания осуществляется установкой в 1 разряда TOIE0 (TOIE2) регистра TIMSK (флаг I=1 в регистре SREG).
Регистры сравнения OCR0 (OCR2). Во время работы таймера производится сравнение этого регистра с регистром TCNTn. Если содержимое регистров равно, устанавливается флаг OCF0 (OCF2) регистра TIFR и генерируется прерывание. Кроме того, при наступлении этого события может изменит состояния выводов ОС0 (ОС2), если это изменение задано битами COMn1 и COMn0 регистра TCCRn.
Режимы работы таймеров Т0 и Т2.
1. Режим Normal.
По каждому импульсу тактового сигнала происходит инкремент счетного регистра TCNTn. При переходе через значение FF(H) возникает переполнение, и счет продолжается со значения 00 (Н). В том же такте, устанавливается в 1 флаг переполнения TOVn.
При равенстве счетного регистра TCNTn и регистра сравнения OCRn устанавливается флаг прерывания OCFn и, если разряд OCIFn регистра TIMSK установлен в 1, генерируется прерывание. Наряду с установкой флага прерывания, изменяется состояние вывода ОС0 (ОС2) микроконтроллера.
Управление выводом ОС0 (ОС2) в режиме Normal и CTC.
COMn1 |
COMn0 |
Описание |
0 |
0 |
Таймер Tn отключен от выхода OСn |
0 |
1 |
Состояние вывода инвертируется |
1 |
0 |
Вывод сбрасывается в 0 |
1 |
1 |
Вывод устанавливается в 1 |
2. Режим СТС (сброс при совпадении).
В этом режиме счетный регистр функционирует как суммирующий счетчик. При достижении значения, хранящегося в регистре сравнения OCRn, счет продолжается со значения 00 (Н). При обнулении счетчика, устанавливается флаг прерывания TOV0 (TOV2) регистра TIFR.
При достижении счетчиком максимального значения, устанавливается флаг OCF0 (OCF2) регистра TIFR. Одновременно с установкой флага может изменяться состояние вывода ОС0 (ОС2) микроконтроллера. Поведение вывода определяется разрядами СOMn1 и COMn0 в соответствии с приведенной выше таблицей.
Режим может использоваться для генерации заданной частоты. Для этого в разрядах СOMn1, COMn0 записывают значения 01.
Частота выходного сигнала определяется выражением:
, где N – коэффициент деления предделителя,
ОСRn – число в регистре сравнения.
3. Режим Fast PWM (быстрый ШИМ)
Счетный регистр функционирует в этом режиме как суммирующий счетчик, значения которого циклически изменяются от 00(Н) до FF(H). Также как и в предыдущих двух случаях, генерируются прерывания по равенству и переполнению счетчика.
Частота генерируемого сигнала:
, где N – коэффициент деления предделителя.
Особенностью режима является то, что запись нового значения в регистр OCR0 (OCR2) производится только в момент достижения счетчиком максимального значения FF(Н), для исключения помех на выводе Ocn ШИМ.
Поведение вывода ОС0 (ОС2) определяется битами COMn1, COMn0 регистра
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.