- •Лабораторная работа № 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.2.1. Режим Normal
Это наиболее простой режим работы таймеров/счетчиков. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому импульсу тактового сигнала clkTn инкрементируется счетный регистр. При переходе через значение $FFFF возникает переполнение, и счет продолжается со значения $0000. В том же такте сигнала clkTn, в котором обнуляется регистр TCNTn, флаг прерывания по переполнению TOVn устанавливается в 1. Блоки сравнения обоих таймеров в этом режиме могут использоваться как для генерации прерываний, так и для формирования сигналов. Состояние выходов ОСnА/ОСnВ/ОСnС каждого из блоков сравнения 16-битных таймеров/счетчиков определяется содержимым битов СОМnx1:СОМnx0 регистров TCCRnA, как показано в Табл. 2.6.
Таблица 2.6. Управление выводами ОСnА/ОСnВ/ОСnС в режиме Normal
COMnxl |
COMnx0 |
Описание |
0 |
0 |
Таймер/счетчик Тn отключен от вывода ОСnx |
0 |
1 |
Состояние вывода меняется на противоположное |
1 |
0 |
Вывод сбрасывается в 0 |
1 |
1 |
Вывод устанавливается в 1 |
Примечание, n = 1,3,4,5; х = А, В или С.
Состояние выхода любого блока сравнения также может быть изменено принудительно, записью лог. 1 в бит FOCnA/FOCnB/FOCnC регистра TCCRnC. Прерывание при этом не генерируется.
2.3. Программирование 16-тибитных таймеров/счетчиков
Программирование таймеров/счетчиков заключается в выполнении следующих шагов:
выбрать источник тактового сигнала таймера/счетчика;
задать режим работы таймера/счетчика;
при использовании режима СТС задать модуль счета в регистре OCRnA или ICRn (в зависимости от выбранного режима работы);
при использовании прерываний, генерируемых при работе таймера/счетчика, разрешить эти прерывания.
Пример.
.org 0x0000 //директива, определяющая, что следующая команда будет //расположена в памяти по указанному адресу
jmp main // переход к основной программе. Происходит при включении //питания или при сбросе микроконтроллера
.org 0x001C
jmp timer1ovf //переход к подпрограмме обработки прерывания от //переполнения таймера 1
timer1ovf: // начало подпрограммы обработки прерывания от переполнения //таймера 1
{сюда помещаете действия, которые должны выполняться при переполнении таймера}
reti //возврат из подпрограммы обработки прерывания
main:
{инициализировать стек и порты ввода/вывода, задать режим работы таймера}
ldi r16,0x04
out TIMSK,r16 //разрешение прерывания от переполнения таймера 1
sei //разрешение прерываний в микроконтроллере
{создать бесконечный цикл}
Лабораторная работа №2 (4 часа)
«Режим CTC работы таймеров-счетчиков. Обслуживание внешних и внутренних прерываний»
Цель работы
Изучить систему прерываний микроконтроллеров AVR.
Изучить работу таймеров в режиме CTC.
Порядок выполнения работы
1. Реализовать на индикаторной матрице контроллера включение светодиодов по заданному алгоритму:
произвести последовательное циклическое включение светодиодов "бегущий огонь". Использовать первый таймер в качестве формирователя времени свечения светодиодов индикаторной матрицы контроллера;
использовать кнопки стенда для переключения скорости «бегущего огня». Кнопки подключены к входам INT0…INT3 внешних прерываний микроконтроллера
Для выполнения задания использовать режим выходного сравнения таймеров.