- •Лабораторная работа № 1
- •Теоретические сведения
- •1. Порты ввода/вывода
- •1.1. Общие сведения
- •1.2. Регистры портов ввода/вывода
- •1.3. Конфигурирование портов ввода/вывода
- •2. Шестнадцатибитные таймеры/счетчики
- •2.1. Управление тактовым сигналом
- •2.2. Режимы работы
- •2.2.1. Режим Normal
- •2.3. Программирование 16-тибитных таймеров/счетчиков
- •Лабораторная работа №2 (4 часа)
- •2. Произвести отладку программы средствами avrStudio.
- •3. Произвести загрузку программы в микроконтроллер.
- •Теоретические сведения
- •1. Прерывания в atMega128
- •1.1. Общие сведения
- •1.2. Таблица векторов прерываний
- •1.3. Обработка прерываний
- •1.4. Внешние прерывания
- •2. Шестнадцатибитные таймеры/счетчики
- •2.1. Управление тактовым сигналом
- •2.2. Режимы работы
- •2.3. Прерывания от таймеров/счетчиков
- •2.4. Предделители таймеров/счетчиков
- •2.4.1. Управление предделителями
- •Лабораторная работа № 3 (4 часа) «Программирование таймеров в режиме шим»
- •1. Таймеры
- •1.1. Общие сведения
- •1.2. Назначение выводов таймеров/счетчиков
- •1.3. Прерывания от таймеров/счетчиков
- •1.4. Предделители таймеров/счетчиков
- •1.4.1. Управление предделителями
- •1.5. Восьмибитные таймеры/счетчики
- •1.5.1. Управление тактовым сигналом
- •1.5.2. Режимы работы
- •2. Прерывания в atMega128
- •2.1. Общие сведения
- •2.2. Таблица векторов прерываний
- •2.3. Обработка прерываний
- •2.4. Внешние прерывания
- •3. Порты ввода/вывода
- •3.1. Общие сведения
- •3.2. Регистры портов ввода/вывода
- •3.3. Конфигурирование портов ввода/вывода
1.5. Восьмибитные таймеры/счетчики
Восьмибитный таймер Т2 может использоваться для отсчета временных интервалов или как счетчик внешних событий, а также в качестве одноканального генератора 8-битного ШИМ-сигнала. Основное отличие таймера Т0 от таймера Т2 заключается в том, что он может работать в асинхронном режиме (обычно этот режим используется для реализации часов реального времени). В нем также имеется один блок сравнения, позволяющий реализовать 1-канальный генератор ШИМ-сигнала.
Таблица 1.4. Регистры восьмибитных таймеров/счетчиков
Регистр |
Назначение |
TCCR0 |
Регистр управления |
TCNT0 |
Счетный регистр |
OCR0 |
Регистр сравнения |
TCCR2 |
Регистр управления |
TCNT2 |
Счетный регистр |
OCR2 |
Регистр сравнения |
ASSR |
Регистр состояния асинхронного режима |
Счетный регистр таймера/счетчика TCNTn входит в состав основного блока модуля — блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется или декрементируется по каждому импульсу тактового сигнала таймера/счетчика clkT0 (clkT2). Независимо от того, присутствует тактовый сигнал или нет, регистр доступен в любой момент времени как для чтения, так и для записи. Однако следует помнить, что любая операция записи в счетный регистр блокирует работу блока сравнения на время одного периода тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNTn находится нулевое значение. При достижении таймером/счетчиком максимального или минимального значения (конкретный вариант зависит от его режима работы) устанавливается флаг TOVn; в регистре флагов TIFR/ETIFR. Разрешение прерывания осуществляется установкой в 1 бита ТOIEn регистра маски TIMSK/ETIMSK. Разумеется, флаг I регистра SREG также должен быть установлен в 1.
Регистры сравнения OCRn входят в состав блоков сравнения модуля. Во время работы таймера/счетчика производится непрерывное (в каждом такте) сравнение этих регистров с регистром TCNTn. В случае равенства содержимого этих регистров в следующем такте устанавливается флаг ОСn в соответствующем регистре флагов и генерируется прерывание (если оно разрешено). Кроме того, при наступлении этого события может изменяться состояние вывода ОСn микроконтроллера. Чтобы таймер/счетчик мог управлять состоянием этих выводов, они должны быть сконфигурированы как выходы (соответствующий бит регистра DDRx должен быть установлен в 1). Любая операция записи в счетный регистр блокирует формирование сигнала о совпадении, если оно произойдет в следующем такте.
Регистры ТССRn предназначены для управления модулем таймера/счетчика. Форматы этих регистров приведены на Рис. 1.4, а описание их битов — соответственно в Табл. 1.5.
Рис. 1.4. Формат регистров TCCR0 (а) и TCCR2 (б)
Таблица 1.5. Биты регистра TCCR0 (TCCR2)
Бит |
Название |
Описание |
7 |
FOCn |
Принудительное изменение состояния вывода OCn (режимы Normal и СТС). При записи лог. 1 в этот бит состояние вывода ОСn изменяется в соответствии с установками битов СОМn1 :СОМnО. Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. В режимах Fast PWM и Phase Correct PWM этот бит должен быть сброшен в 0. При чтении бита всегда возвращается 0. |
6, 3 |
WGMn1 WGMn0 |
Режим работы таймера/счетчика. Эти биты определяют режим работы таймера/счетчика в соответствии с Табл. 1.6. |
5, 4 |
COMn1 COMn0 |
Режим работы блока сравнения. Эти биты определяют поведение вывода ОСn при наступлении события «Совпадение». Влияние содержимого этих битов на состояние вывода зависит от режима работы таймера/счетчика |
2..0 |
CSn2..CSn0 |
Управление тактовым сигналом. Эти биты определяют источник тактового сигнала таймера/счетчика Действие этих битов зависит от исполнения таймера/счетчика и будет описано ниже |
Таблица 1.6. Режимы работы таймера/счетчика
Номер режима |
WGMn1 |
WGMn2 |
Режим работы таймера/счетчика Т0 |
0 |
0 |
0 |
Normal |
1 |
0 |
1 |
Phase Correct PWM |
2 |
1 |
0 |
CTC (сброс при совпадении) |
3 |
1 |
1 |
Fast PWM |