русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обработка прерываний


Дата добавления: 2015-08-06; просмотров: 853; Нарушение авторских прав


 

Прерывания – это вызовы определенных функций, генерируемые, главным образом, аппаратной частью микроконтроллера. В результате прерывания выполнение программы останавливается, и происходит переход к соответствующей подпрограмме обработки прерывания.

Прерывания бывают внутренними и внешними. Источниками внутреннего прерывания являются встроенные модули микроконтроллера (например, таймер/счетчик или сторожевой таймер). Внешние прерывания вызываются сбросом (сигнал на выводе RESET) или сигналами предустановленного уровня на выводах INT. К примеру, в микроконтроллерах AVR за характер сигналов на выводах INT0/INT1, вызывающих прерывание, определяется с помощью разрядов регистра управления MCUCR: ISC00 (разряд 0), ISC01 (разряд 1) – для входа INT0; ISC 10 (разряд 2), ISC11 (разряд 3) – для входа INT1 (табл. 3.1 и табл. 3.2).

 

Таблица 3.1. Выбор способа активизации прерывания по входу INT0

Разряд ISC01 Разряд 1SC00 Описание
Прерывание вызывается по уровню лог. 0 на входе INT0
Прерывание вызывается по ниспадающему фронту сигнала INT0
Прерывание вызывается по нарастающему фронту сигнала INT0

 

Таблица 3.2. Выбор способа активизации прерывания по входу INT1

Разряд ISC11 Разряд ISC10 Описание
Прерывание вызывается по уровню лог. 0 на входе INT1
Прерывание вызывается по нарастающему фронту сигнала INT1
Прерывание вызывается по ниспадающему фронту сигнала INT1

 

В микроконтроллерах AVR всем прерываниям, включая сброс, поставлен в соответствие собственный вектор прерывания – адрес в начальной области памяти программ, по которому компилятор размещает команду перехода к подпрограмме обработки прерывания. Перечень векторов прерывания в некоторых моделях микроконтроллеров AVR может выглядеть следующим образом (табл. 3.3). В микроконтроллерах AVR все прерывания имеют одинаковый приоритет, и в случае одновременного возникновения двух прерываний первым обрабатывается прерывание с меньшим номером вектора.



 

Таблица 3.3. Векторы прерываний

Адрес в памяти программ Источник прерывания Описание
0x0000 RESET Сигнал сброса
0x0001 INT0 Внешний запрос на прерывание по входу INT0
0x0002 INT1 Внешний запрос на прерывание по входу INT1
0x0003 Т/С1 Захват по таймеру/счетчику Т/С1
0x0004 Т/С1 Совпадение с регистром сравнения А таймера Т/С1
0x0005 Т/С1 Совпадение с регистром сравнения В таймера Т/С1
0x0006 Т/С1 Переполнение таймера/счетчика Т/С1
0x0007 Т/С0 Переполнение таймера/счетчика Т/С0
0x0008 SPI Завершение передачи данных по интерфейсу SPI
0x0009 UART Прием байта приемопередатчиком UART завершен
0х000А UART Регистр данных приемопередатчика UART пуст
0x000В UART Передача данных приемопередатчиком UART завершена
0х000С ANA_COMP Прерывание от аналогового компаратора

 

В момент возникновения прерывания в стек помещается адрес возврата – адрес команды, которая должна быть выполнена первой после выхода из подпрограммы обработки прерывания. В результате выполнения последней ассемблерной команды подпрограммы обработки прерывания (для микроконтроллеров AVR – это команда reti, а для микроконтроллеров PIC – retfie) адрес возврата извлекается из стека в счетчик команд, и выполнение программы продолжается.

 



<== предыдущая лекция | следующая лекция ==>
Память EEPROM микроконтроллеров AVR | Управление прерываниями в микроконтроллерах AVR


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.111 сек.