- •Лабораторная работа № 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.3. Прерывания от таймеров/счетчиков
В ATmega128 для разрешения/запрещения прерываний от таймеров/счетчиков используется два регистра ввода/вывода: TIMSK и ETIMSK. Точно также в микроконтроллере присутствуют два регистра, содержащие флаги прерываний: TIFR и ETIFR.
Форматы регистров, используемых для разрешения/запрещения прерываний от таймеров/счетчиков, показаны на Рис. 2.4, а описание их битов приведено в Табл. 2.7.
Для разрешения какого-либо прерывания от таймера/счетчика необходимо установить в 1 соответствующий бит регистра TIMSK(ETIMSK) и, разумеется, флаг I регистра SREG.
а)
б)
Рис. 2.4. Формат регистров TIMSK (а) и ETIMSK (б)
Таблица 2.7. Биты регистров TIMSK, ETIMSK
Название бита |
Описание |
TOIEn |
Флаг разрешения прерывания по переполнению таймера/счетчика Tn |
OCIEn |
Флаг разрешения прерывания по событию «Совпадение» таймера/счетчика Tn |
OCIEnA |
Флаг разрешения прерывания по событию «Совпадение A» таймера/счетчика Tn |
OCIEnB |
Флаг разрешения прерывания по событию «Совпадение B» таймера/счетчика Tn |
OCIEnC |
Флаг разрешения прерывания по событию «Совпадение C» таймера/счетчика Tn |
TICIEn |
Флаг разрешения прерывания по событию «Захват» таймера/счетчика Tn |
Форматы регистров, используемых для индикации наступления прерываний от таймеров/счетчиков, показаны на Рис. 2.5, а описание их битов приведено в Табл. 2.8.
а)
б)
Рис. 2.5. Формат регистров TIFR (а) и ETIFR (б)
Таблица 2.8. Биты регистров TIFR и ETIFR
Название бита |
Описание |
TOVn |
Флаг прерывания по переполнению таймера/счетчика Tn |
OCFn |
Флаг прерывания по событию «Совпадение» таймера/счетчика Tn |
OCFnA |
Флаг прерывания по событию «Совпадение A» таймера/счетчика Tn |
OCFnB |
Флаг прерывания по событию «Совпадение B» таймера/счетчика Tn |
OCFnC |
Флаг прерывания по событию «Совпадение C» таймера/счетчика Tn |
ICFn |
Флаг прерывания по событию «Захват» таймера/счетчика Tn |
При наступлении какого-либо события соответствующий флаг регистра TIFR/ETIFR устанавливается в 1. При запуске подпрограммы обработки прерывания он аппаратно сбрасывается в 0. Любой флаг может быть также сброшен программно, записью в него лог. 0.
2.4. Предделители таймеров/счетчиков
Блоки предделителей предназначены для формирования тактовых сигналов таймеров/счетчиков clkT0, clkT1, clkT2, clkT3.
Все таймеры/счетчики, не имеющие асинхронного режима работы, используют один и тот же 10-битный предделитель. При этом управление тактовым сигналом каждого таймера/счетчика осуществляется индивидуально.
2.4.1. Управление предделителями
Помимо управления тактовым сигналом таймера/счетчика, все микроконтроллеры семейства позволяют осуществлять сброс предделителей, а отдельные модели позволяют также осуществлять их остановку. Для этого используется регистр специальных функций SFIOR. Формат этого регистра приведен на Рис. 2.6 (биты, не используемые для управления предделителями таймеров/счетчиков, указаны на рисунке как X).
Рис. 2.6. Управление предделителями таймеров/счетчиков — регистр SFIOR
Для сброса предделителей таймеров/счетчиков используются биты PSRx регистра. При записи в эти биты лог. 1 предделители соответствующих таймеров/счетчиков переводятся в исходное состояние. Биты сбрасываются в 0 аппаратно после выполнения операции сброса. Поскольку, как было сказано выше, один предделитель используется несколькими таймерами/счетчиками, сброс предделителя повлияет на все таймеры/счетчики, которые его используют.
Остановка всех предделителей микроконтроллера осуществляется записью лог. 1 в бит TSM регистра SFIOR. Последующий запуск предделителей осуществляется записью в бит TSM лог. 0. Указанная функция может использоваться, в частности, для синхронизации таймеров/счетчиков. После установки бита TSM и битов PSRx соответствующие таймеры/счетчики останавливаются и могут быть проинициализированы требуемыми значениями. После сброса бита TSM биты PSRx аппаратно сбрасываются и все таймеры/счетчики начинают работать одновременно.