- •Лабораторная работа № 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. Конфигурирование портов ввода/вывода
2. Шестнадцатибитные таймеры/счетчики
В модели ATmega128 имеется два 16-битных таймера/счетчика — Т1 и ТЗ. Как и 8-битные таймеры/счетчики Т0 и Т2, они могут использоваться для формирования временных интервалов, для подсчета числа внешних событий, формирования сигналов и генерации сигналов с ШИМ. В дополнение к этому 16-битные таймеры/счетчики могут по внешнему сигналу сохранять свое текущее состояние в отдельном регистре ввода/вывода. 16-битные таймеры/счетчики имеют по три блока сравнения.
В состав каждого таймера/счетчика входят следующие регистры ввода/вывода:
• 16-битный счетный регистр TCNTn;
• 16-битный регистр захвата ICRn;
• три 16-битных регистра сравнения OCRnA, OCRnB, OCRnC;
• три 8-битных регистра управления TCCRnA, ТССRnВ, TCCRnC.
Каждый из 16-битных регистров физически размещается в двух регистрах ввода/вывода, названия которых получаются добавлением к названию регистра буквы «Н» (старший байт) и «L» (младший байт). Счетный регистр таймера/счетчика T1 TCNT1, например, размещается в регистрах TCNT1H:TCNT1L. Таймеры/счетчики Т1 и ТЗ могут генерировать прерывание при наступлении следующих событий:
• переполнение счетного регистра;
• равенство счетного регистра и регистра сравнения (по одному прерыванию на каждый блок сравнения);
• сохранение счетного регистра в регистре захвата.
Флаги всех прерываний 16-битных таймеров/счетчиков находятся в регистрах флагов TIFR/ETIFR, а разрешение/запрещение этих прерываний осуществляется установкой/сбросом соответствующих флагов регистров TIMSK/ETIMSK.
Счетный регистр таймера/счетчика TCNTn входит в состав основного блока модуля — блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется или декрементируется по каждому импульсу тактового сигнала таймера/счетчика clkTn. Регистр доступен в любой момент времени как для чтения, так и для записи. После подачи напряжения питания в регистре TCNTn находится нулевое значение. При некоторых изменениях состояния таймера/счетчика, определяемых режимом его работы, устанавливается бит ТОVn в соответствующем регистре флагов. Разрешение прерывания осуществляется установкой в 1 бита ТOIЕn соответствующего регистра маски.
Регистры сравнения OCRnA/OCRnB/OCRnC входят в состав блоков сравнения. Во время работы таймера/счетчика производится непрерывное (в каждом такте) сравнение этих регистров с регистром TCNTn. В случае равенства содержимого регистра сравнения и счетного регистра в следующем такте устанавливается флаг OCFnA/OCFnB/OCFnC в соответствующем регистре флагов и генерируется прерывание (если оно разрешено). Также при наступлении этого события может изменяться состояние вывода ОСnА/ОСnВ/ОСnС микроконтроллера. Чтобы таймер/счетчик мог управлять состоянием какого-либо из этих выводов, он должен быть сконфигурирован как выходной (соответствующий бит регистра DDRx должен быть установлен в 1).
Регистр захвата ICRn входит в состав блока захвата, назначение которого — сохранение в определенный момент времени состояния таймера/счетчика в регистре захвата. Это действие может производиться либо по активному фронту сигнала на выводе IСРn микроконтроллера, либо (для таймера/счетчика Т1) по сигналу от аналогового компаратора. Одновременно с записью в регистр захвата устанавливается флаг ICFn соответствующего регистра флагов и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в 1 бита TICIEn регистра маски.
Для управления таймером/счетчиком используются три регистра управления: TCCRnA, TCCRnB, TCCRnB. Формат этих регистров приведен на рис. 2.1…2.3, а описание их битов — в Табл. 2.1…2.3.
а)
б)
Рис. 2.1. Формат регистров TCCR1A (a), TCCR3A (б)
Таблица 2.1. Биты регистров TCCRnA
Название |
Описание |
СОМnА1:СОМnА0 |
Режим работы блока сравнения. Эти биты определяют состояние вывода ОСnх при наступлении события «Совпадение». Влияние содержимого этих битов на состояние вывода зависит от режима работы таймера/счетчика |
СОМnВ1:СОМnВ0 |
|
СОМnС1:СОМnС0 |
|
WGMnl:WGMn0 |
Режим работы таймера/счетчика. Совместно с битами WGMn3:WGMn2 регистра ТССRnВ определяют режим работы таймера/счетчика Тn (см. Табл. 7.25) |
FOCnA |
Принудительное изменение состояния вывода ОСnх. При записи в бит FOCnx лог. 1 состояние вывода ОСnх изменяется в соответствии с установками битов СОМn1х:СОМn0x регистра TCCR/jA. Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. Эта функция доступна только в тех режимах, которые не используются для генерации сигнала с ШИМ. При чтении бита всегда возвращается 0 |
FOCnB |
Примечание, n = 1,3; х = А, В или С.
а)
б)
Рис. 2.2. Формат регистров TCCR1B (a), TCCR3B (б).
Таблица 2.2. Биты регистров TCCRnB
Бит |
Название |
Описание |
7 |
ICNCn |
Управление схемой подавления помех блока захвата. Если бит сброшен в 0, схема подавления помех выключена (захват производится по первому активному фронту). Если бит установлен в 1, схема подавления помех включена и захват осуществляется только в случае четырех одинаковых выборок, соответствующих активному фронту сигнала |
6 |
ICESn |
Выбор активного фронта сигнала захвата. Если бит \CESn сброшен в 0, сохранение счетного регистра в регистре захвата осуществляется по спадающему фронту сигнала. Если бит установлен в 1, то сохранение счетного регистра в регистре захвата осуществляется по нарастающему фронту сигнала. Одновременно с сохранением счетного регистра устанавливается также флаг прерывания ICF/i регистра флагов |
5 |
- |
Не используется, читается как 0 |
4,3 |
WGMn3:WGMn2 |
Режим работы таймера/счетчика. Совместно с битами WG Мn1:WGМnО регистра TCCRnA определяют режим работы таймера/счетчика In (Табл. 7.25) |
2-0 |
CSn2...CSn0 |
Управление тактовым сигналом. Эти биты определяют источник тактового сигнала микроконтроллера (см. подраздел 7.6.2) |
а)
б)
Рис. 2.3. Формат регистров TCCR1C (а), TCCR3C (б)
Таблица 2.3. Биты регистров TCCRnС
Бит |
Название |
Описание |
7 |
FOCnA |
Принудительное изменение состояния вывода ОСnх. При записи в бит ОСnх1 лог. 1 состояние вывода ОСnх изменяется в соответствии с установками битов СОМn1х СОМn0х регистра TCCRnA Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. Эта функция доступна только в тех режимах, которые не используются для генерации сигнала с ШИМ При чтении бита всегда возвращается 0 |
6 |
FOCnB |
|
5 |
FOCnC |
|
4..0 |
- |
Не используются, читаются как 0 |
Примечание, п = 1, 3, х = А, В или С