Бит 2 - TOV1: Флаг переполнения таймера/счетчика 1: Флаг TOV1 устанавливается ("1") при возникновении переполнения таймера/счетчика 1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE1 в TIMSK, при установке бита TOV1 выполняется прерывание по переполнению таймера/счетчика 1. В режиме ШИМ этот бит устанавливается, когда таймер/счетчик 1 изменяет направление счета при значении $0000.
Бит 1 - OCF0: Флаг выхода совпадения T/C0: флаг устанавливается в "1" если происходит совпадение значения таймера/счетчика 2 и данных в регистре OCR. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить записав в него логическую единицу. Если установлены бит I в SREG и бит OCIE0 в TIMSK, при установке бита OCF0 выполняется прерывание.
Бит 0 - TOV0: Флаг переполнения таймера счетчика 1: Флаг TOV0 устанавливается ("1") при переполнении таймера/счетчика 0. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить записав в него логическую единицу. Если установлены бит I в SREG и бит TOIE0 в TIMSK, при установке бита TOV0 выполняется прерывание по переполнению таймера/счетчика 0.
Внешние прерывания управляются выводами INT0, INT1 и INT2. Заметим, что прерывания обрабатываются даже, когда выводы сконфигурированы как выходы. Это позволяет генерировать программные прерывания. Внешние прерывания могут возникать по спадающему или нарастающему фронту, а также по низкому уровню. Это устанавливается в регистре управления процессором MCUCR. Если внешние прерывания разрешены и сконфигурированы на отработку по уровню, прерывание будет вырабатываться до тех пор, пока вывод удерживается в низком состоянии.
Управление работой внешних прерываний рассмотрено при описании регистра управления процессором MCUCR.
Минимальное время реакции на любое из предусмотренных в процессоре прерываний - 4 периода тактовой частоты. После четырех циклов вызывается программный вектор, обрабатывающий данное прерывание. За эти 4 цикла программный счетчик (9 бит) записывается в стек, указатель стека уменьшается на 2. Программный вектор представляет собой относительный переход на подпрограмму обслуживания прерывания, и этот переход занимает 2 периода тактовой частоты. Если прерывание происходит во время выполнения команды, длящейся несколько циклов, перед вызовом прерывания завершается выполнение этой команды.
Выход из программы обслуживания прерывания занимает 4 периода тактовой частоты. За эти 4 периода из стека восстанавливается программный счетчик. После выхода из прерывания процессор всегда выполняет еще одну команду, прежде чем обслужить любое отложенное прерывание.
Заметим, что регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, то это должно производиться программой пользователя.
Таймер-счетчик 0 - модуль многофункционального одноканального 8-разрядного таймера-счетчика.
Основные отличительные особенности:
Введение
Функциональная схема 8-разр. таймера-счетчика представлена на рис. 5. Для уточнения расположения выводов см. "Расположение выводов". Связи с регистрами, к которым осуществляет доступ ЦПУ, в т.ч. биты ввода-вывода и линии ввода-вывода показаны жирной линией. Специфические для данного устройства регистры, расположение и назначение его бит приведены в "Описание регистров 8-разр. таймера-счетчика 0".
Описание регистров 8-разрядного таймера-счетчика 0
Регистр управления таймером-счетчиком 0 - TCCR0
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
FOC0 | WGM00 | COM01 | COM00 | WGM01 | CS02 | CS01 | CS00 | TCCR0 | |
Чтение/запись | Чт. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | Чт./Зп. | |
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Разряд 7 - FOC0: Принудительная установка результата сравнения
Строб FOC0 не генерирует каких-либо прерываний, а также не вызывает сброс таймера в режиме СТС, где регистр OCR0 задает верхний предел счета.
Бит FOC0 всегда считывается как 0.
Разряд 6, 3 - WGM01:0: Режим работы таймера-счетчика 0
Данные биты определяют: алгоритм счета счетчика, источник, который задает верхний предел счета и тип генерируемых прямоугольных импульсов.
Таблица 6. Описание бит, задающих режим работы таймера-счетчика 0
Номер режима | WGM01 | WGM00 | Наименование режима работы таймера-счетчика 0 | Верхний предел счета | Условие обновления содержимого регистра OCR0 | Условие установки флага TOV0 |
0 | 0 | 0 | Нормальный | 0xFF | Сразу после записи в регистр | Достижение максимального значения (0xFF) |
1 | 0 | 1 | ШИМ с фазовой коррекцией | 0xFF | Достижение верхнего предела счета | Достижение минимального значения (0x00) |
2 | 1 | 0 | Сброс при совпадении | OCR0 | Сразу после записи в регистр | Достижение максимального значения (0xFF) |
3 | 1 | 1 | Быстрый ШИМ | 0xFF | Достижение верхнего предела счета | Достижение максимального значения (0xFF) |
Разряд 5:4 - COM01, COM00: Режим формирования выходного сигнала
Данные биты определяют алгоритм изменения сигнала на выводе OC0.
Таблица 7. Режимы формирования выходного сигнала
в режимах работы таймера 0 без ШИМ
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Переключение (инвертирование) OC0 при каждом совпадении |
1 | 0 | Сброс OC0 при каждом совпадении |
1 | 1 | Установка OC0 при каждом совпадении |
В таблице 9 приведено назначение бит COM01, COM00 для режима работы таймера-счетчика 0 с быстрой ШИМ (WGM01:0).
Таблица 8. Режимы формирования выходного
сигнала в режиме таймера 0 с быстрым ШИМ(1)
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Зарезервировано |
1 | 0 | Сброс OC0 при совпадении, установка по достижении верхнего предела (0xFF) |
1 | 1 | Установка OC0 при совпадении, сброс по достижении верхнего предела (0xFF) |
Прим. 1: Имеется особый случай, когда OCR0 = 0xFF и COM01=1. В этом случае возникновение совпадения игнорируется, но сброс или установка по достижении верхнего предела выполняется. См. "Режим быстрой ШИМ".
В таблице 55 приведено действие бит COM01, COM00 для режима ШИМ с фазовой коррекцией, заданного с помощью бит WGM01, WGM00.
Таблица 9. Режимы формирования выходного сигнала в режиме ШИМ с фазовой коррекцией(1)
COM01 | COM00 | Описание |
0 | 0 | Функция обычного порта ввода-вывода. OC0 отключен. |
0 | 1 | Зарезервировано |
1 | 0 | Сброс OC0 при совпадении во время прямого счета. Установка OC0 при совпадении во время обратного счета. |
1 | 1 | Установка OC0 при совпадении во время прямого счета. Сброс OC0 при совпадении во время обратного счета. |
Прим. 1: Существует особый случай, когда OCR0=0xFF/0x00 и COM01=1. В этом случае OC0 всегда находится на постоянном логическом уровне 0 или 1, т.к. 0xFF и 0x00 -точки изменения направления счета и возникающее на них совпадение зачитывается только к одному из направлений счета: обратному или прямому (см. также "Режим ШИМ с фазовой коррекцией").
Разряд 2:0 - CS02:0: Настройка частоты синхронизации таймера
С помощью трех настроечных бит имеется возможность выбрать различные тактовые частоты, кратные исходной частоте синхронизации (см. табл. 56).
Таблица 10. Выбор частоты синхронизации таймера 0
CS02 | CS01 | CS00 | Описание |
0 | 0 | 0 | Нет синхронизации. Таймер-счетчик 0 оставлен. |
0 | 0 | 1 | clkT0S/1 (без предделения) |
0 | 1 | 0 | clkT0S/8 (с предделением) |
0 | 1 | 1 | clkT0S/32 (с предделением) |
1 | 0 | 0 | clkT0S/64 (с предделением) |
1 | 0 | 1 | clkT0S/128 (с предделением) |
1 | 1 | 0 | clkT0S/256 (с предделением) |
1 | 1 | 1 | clkT0S/1024 (с предделением) |
Регистр таймера-счетчика - TCNT0