Методические указания по выполнению работы. В лабораторной установке запрос прерывания от внешнего источника реализован предельно просто – к входу INT2 подключена кнопка
В лабораторной установке запрос прерывания от внешнего источника реализован предельно просто – к входу INT2 подключена кнопка, с помощью которой формируется необходимый сигнал прерывания. Более сложной является программная часть реализации прерывания, которая требует дополнительных пояснений.
Необходимость учета особенностей архитектуры МК семейства AVR в программах на языке C привела к введению в стандарт языка расширений, одним из которых является специальное определение функций обслуживания прерываний в различных средах программирования.
В соответствии с этим расширением ПОП для источника INT2 в CVAVR записывается в виде:
interrupt [EXT_INT2] void NameIsr(void)
{
// Тело функции обработчика
}
где EXT_INT2 – тип прерывания, в данном случае прерывание по INT2.
Здесь атрибут interrupt и определяет, что данная функция является функцией обслуживания прерываний и используется для обработки прерывания INT2.
При работе с прерываниями необходимо помнить некоторые важные моменты:
· функция обработки прерывания с атрибутом interrupt не должна иметь параметров и возвращать значений, поэтому для связи с основной программой используются глобальные переменные;
· каждый источник прерываний имеет только один флаг, указывающий на то, что произошло событие, вызывающее это прерывание. Поэтому если до вызова обработчика прерывания случится несколько событий, обработчик все равно будет вызван только один раз.
Для того чтобы ПОП была вызвана необходимо выполнение трех условий:
· прерывания должны быть глобально разрешены установкой в 1 бита I регистра SREG. Для использования ассемблерных команд в CVAVR используется директива #asm. Таким образом, для глобального разрешения прерываний необходимо добавить в раздел инициализации программы строчку #asm(“sei”).
· должно быть разрешено соответствующее прерывание, делается это с помощью конфигурации соответствующих регистров.
· должно произойти событие, вызывающее соответствующее прерывание, например, переполнение таймера или изменение сигнала на входе внешнего прерывания.
Варианты заданий
Во всех вариантах заданий осуществляется внешнее прерывание по входу INT2 (ножка PD2 порта PORTD), которое инициируется нажатием подключенной к нему кнопки. В основной программе производится в бесконечном цикле периодический вывод на первую строку ЖКИ заданной символьной информации с интервалом индикации 3 с. При нажатии кнопки возникает прерывание, функция обработки которого инвертирует состояние RGB-светодиода (зажигает, если он был погашен или гасит, если он был зажжен). Цвет светодиода и способ его задания для каждого варианта данной лабораторной работы определен в задании к лабораторной работе № 4. По окончании работы ПОП основная программа продолжает свою работу. Варианты заданий представлены в табл. 3.12.
Таблица 3.12
№ варианта | Основная программа | Прерывание |
1 / 7 | Вывод названия дней недели | По срезу / По фронту |
2 / 8 | Вывод названия месяцев года | По срезу / По фронту |
3 / 9 | Вывод названия цветов спектра | По срезу / По фронту |
4 / 10 | Вывод названия планет | По срезу / По фронту |
5 / 11 | Вывод названия континентов | По срезу / По фронту |
6 / 12 | Вывод названия чисел от 0 до 9 | По срезу / По фронту |
Лабораторная работа № 8
Цель работы. Программирование принципов управления двигателем постоянного тока на основе генерации сигнала с широтно-импульсной модуляцией (ШИМ).
Перед выполнением работы установите тумблеры конфигурации стенда в состояние, показанное на рис. 3.26.
Рис. 3.26. Состояние тумблеров конфигурации стенда для работы 8 |