Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laba_2_preryvania.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
162.82 Кб
Скачать

Лабораторная робота №2. Система прерываний. Опрос дискретных датчиков.

Тема: Система прерываний. Опрос дискретных датчиков.

Цель работы: Изучение режимов работы системы прерывания ОЭВМ, программная обработка дискретных сигналов

Теоретические сведения

Опрос дискретных сигналов. Для ввода информации широко применяются кнопочные переключатели и контактные клавиатуры. Сигнал таких переключателей формируется путем замыкания (размыкания) электрической цепи. Сигнал, формируемый контактной парой, сопровождается дребезгом, длительность которого составляет ~8-12мс см. рис. 4.1.

  1. Сигнал контактной пары

Для устранения дребезга в получаемом сигнале на выходе контактной пары устанавливают специальные формирователи. Пример такого формирователя основанного на принципе непосредственной установки RS-триггера приведён на рис. 4.2..

  1. Схема устранения дребезга с помощью RS-триггера

Для уменьшения аппаратных затрат применяют программное подавление дребезга. Оно заключается в повторном опросе контактной пары с задержкой в 12мс, при совпадении результатов опроса кнопка была нажата, иначе в результате первого опроса был зафиксирован дребезг.

Система прерываний микроконтроллера AtMega8515

Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внешним или внутренним событием микроконтроллера. При возникновении прерывания микроконтроллер сохраняет в стеке содержимое счетчика команд PC и загружает в него адрес соответствующего вектора прерывания. По этому адресу должна находиться команда относительного перехода к подпрограмме обработки прерывания. Кроме того, последней командой подпрограммы обработки прерываний должна быть команда RETI, которая обеспечивает возврат в основную программу и восстановление предварительно сохраненного счетчика команд.

Микроконтроллеры семейства MEGA имеют многоуровневую систему приоритетных прерываний. Младшие адреса памяти программ, начиная с адреса $001, отведены под таблицу векторов прерывания. Каждому прерыванию соответствует адрес в этой таблице, и именно этот адрес загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице определяет также и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания. Начальные адреса векторов прерываний даны в таблице 4.1. Там же даны названия сигналов, которые используются при программировании обработки прерываний на языке С (см. файл iom8515.h)

  1. Начальные адреса векторов прерываний

Источник прерывания

Адрес

Название сингала в С

Внешнее прерывание 0

$001

SIG_INTERRUPT0

Внешнее прерывание 1

$002

SIG_INTERRUPT1

Прерывание по захвату 1

$003

SIG_INPUT_CAPTURE1

Совпадение таймера 1А

$004

SIG_OUTPUT_COMPARE1A

Совпадение таймера 1B

$005

SIG_OUTPUT_COMPARE1B

Переполнение таймера 1

$006

SIG_OVERFLOW1

Переполнение таймера 0

$007

SIG_OVERFLOW0

Прерывание SPI

$008

SIG_SPI

Последовательный порт

$009

SIG_UART_RECV

Опустошение последовательного порта

$00a

SIG_UART_DATA

Окончание передачи последовательного порта

$00b

SIG_UART_TRANS

Аналоговый компаратор

$00c

SIG_COMPARATOR

Для разрешения прерываний флаг I регистра SREG должен быть установлен в «1» командой sei. Разрешение или запрещение (маскирование) отдельных прерываний производится установкой или сбросом соответствующих разрядов

Микроконтроллеры семейства Mega поддерживают очередь прерываний, которая работает следующим образом: если условия генерации одного или более прерываний возникают в то время, когда флаг общего прерывания сброшен (все прерывания запрещены), соответствующие флаги устанавливаются в «1» и остаются в этом состоянии до установки общего флага разрешения прерываний. После разрешения прерываний выполняется их обработка в соответствии с приоритетом.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]