Главная страница
Навигация по странице:

  • Краткие теоретические сведения

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

  • Прерывание Источник прерывания Адреса Уровень

  • Задание на лабораторную работу

  • Лабораторная работа 5 Обработка прерываний


    Скачать 368.59 Kb.
    НазваниеЛабораторная работа 5 Обработка прерываний
    Дата27.09.2022
    Размер368.59 Kb.
    Формат файлаpdf
    Имя файлаLab5_interrupt.pdf
    ТипЛабораторная работа
    #700379

    Лабораторная работа №5 Обработка прерываний
    Цель работы:
    1. Изучить особенности системы прерываний микроконтроллеров;
    2. Разработать программу-обработчик прерывания.
    Краткие теоретические сведения
    Прерывание - процесс переключения ЦП с одной программы на другую по внешнему сигналу с сохранением информации для последующего возобновления прерванной программы.
    Основная цель введения прерываний – реализация асинхронного режима работы и распараллеливания работы отдельных устройств вычислительного комплекса. Механизм прерываний реализуется аппаратно-программными средствами.
    Этапы:

    ПУ формирует запрос прерывания.

    Запросы могут поступать асинхронно.

    Запросы сохраняются в специальном регистре.

    Состояние регистра анализируется программно или аппаратно.

    Либо информация о месте возникновения запроса передаётся в виде адреса ячейки памяти (векторная система прерываний).

    Вызывается программа-обработчик прерывания.
    Каждое событие, требующее прерывания, сопровождается сигналом прерывания, оповещающим об этом вычислительную машину, и называемым запросом прерывания.
    Состояние программы представляет собой совокупность состояний всех запоминающих элементов в соответствующий момент времени (например, после выполнения последней команды).
    При возникновении прерывания микроконтроллер сохраняет в стеке содержимое счетчика команд и загружает в него адрес соответствующего вектора прерывания. Последней командой подпрограммы обработки прерывания должна быть команда, которая осуществляет возврат в основную программу и восстановление предварительно сохраненного счетчика команд. Во время выполнения обработчика прерывания некоторая информация может подвергнуться изменению. Поэтому при переходе к обработчику прерывания необходимо сохранить элементы, подвергающиеся изменению. Набор таких элементов представляет собой вектор состояния программы. При этом другая информация о состоянии ячеек памяти не существенна или может быть восстановлена программным путем.
    Вектор начального состояния содержит всю необходимую информацию для начального запуска программы. Во многих случаях вектор начального состояния содержит только один элемент – начальный адрес запускаемой программы.
    Вектор прерывания является вектором начального состояния прерывающей программы (обработчика) и содержит всю необходимую информацию для перехода к обработчику, в том числе его начальный адрес. Каждому типу
    прерываний соответствует свой вектор прерывания, который инициализирует выполнение соответствующего обработчика. Обычно векторы прерывания хранятся в специально выделенных фиксированных ячейках памяти с короткими адресами, представляющих собой таблицу векторов прерываний. Для перехода к соответствующей прерывающей программе процессор должен располагать вектором прерывания и адресом этого вектора. По этому адресу, как правило, находится команда безусловного перехода к подпрограмме обработки прерывания.
    Как правило, управление запоминанием и возвратом возложено на обработчик прерывания. В этом случае обработчик состоит из трех частей – подготовительной (пролог) и заключительной (эпилог), обеспечивающих переключение программ, и собственно прерывающей программы, выполняющей затребованные запросом операции. Время реакции определяется как временной интервал от момента поступления запроса прерывания до начала выполнения прерывающей программы.
    t
    p
    время реакции системы на прерывание;
    t
    з
    – время запоминания состояния прерываемой программы;
    t
    ппр
    – время собственно прерывающей программы;
    t
    в
    – время восстановления состояния прерванной программы
    При наличии нескольких источников запросов должен быть установлен определенный порядок обслуживания поступающих запросов, называемый приоритетными соотношениями или дисциплиной обслуживания. Совокупность всех возможных типов прерывания процессора представляет собой систему прерывания микроконтроллера. Дисциплина обслуживания определяет, какой из нескольких запросов, поступивших одновременно, подлежит обработке в первую очередь, и имеет ли право данный запрос прерывать тот или иной обработчик прерывания.
    В случае если во время обработки прерывания поступает запрос на прерывание с более высоким уровнем приоритета, управление передается обработчику прерывания более высокого приоритета, при этом работа обработчика прерывания с более низким уровнем приоритета приостанавливается. Возникает вложенность прерываний. Максимальное число
    программ, которые могут приостанавливать друг друга называется глубиной прерываний.
    Ниже приведён алгоритм выполнения команды процессором, поддерживающим ввод-вывод с прерыванием.

    Обработка прерываний в ADuC842
    Система прерываний микроконвертера ADuC842 включает восемь источников прерываний, которые обслуживаются в соответствии с двухуровневой системой приоритетов. Источники прерываний, порядок их опроса при одинаковом установленном уровне приоритета, адреса векторов
    (таблицы прерываний) приведены в следующей таблице:
    Прерывание
    Источник прерывания
    Адреса
    Уровень
    вектора приоритета
    PSMI
    Монитор напряжения питания
    43 Н
    1
    (наивысший)
    WDS
    Сторожевой таймер
    5ВН
    2
    IE0
    Внешнее прерывание INTO
    ОЗН
    2
    ADCI
    Конец преобразования АЦП
    ЗЗН
    3
    TFO
    Переполнение Таймера 0
    ОВН
    4
    IE1
    Внешнее прерывание INT1 13Н
    5
    TF1
    Переполнение Таймера 1 1ВН
    6
    I2CI/ISPI
    Прерывание синхронного звн
    7 последовательного интерфейса
    RI/TI
    Прерывание асинхронного
    23Н
    8 интерфейса UART
    TF2/EXF2
    Прерывание от Таймера 2 2ВН
    9
    Til
    Прерывание счетчика
    53Н
    11
    (нижайший) времени TIC
    Для того, чтобы прерывания могли быть обслужены, необходимо выполнить следующие подготовительные действия:

    Расположить процедуру обслуживания прерывания по адресу, указанному в таблице переходов (соответствующего прерывания).

    Установить в регистре IE бит разрешения всех прерываний (ЕА) в «1»;

    Установить в регистре IE или IEIP2 бит разрешения индивидуального прерывания в «1».
    Для разрешения и установки приоритетов прерываний используются регистры IE, IP и IEIP2. В регистрах IE и IP могут адресоваться отдельные биты, а регистр IE2 адресуется только целиком как байт. Регистр IE содержит общий и индивидуальные бит разрешения всех источников прерываний. Для разрешения прерываний соответствующие биты должны быть установлены в
    «1».

    Бит
    Мнемоника Описание
    IE.7
    IE
    Общий бит разрешения прерываний. Должен быть установлен для обслуживания любого источника прерывания. Если ЕА=0, все прерывания запрещены.
    IE.6
    EADC
    Бит разрешения прерывания АЦП.
    IE.5
    ET2
    Бит разрешения прерывания по переполнению Таймера
    2.
    IE.4
    ES
    Бит разрешения прерывания от последовательного порта UART.
    IE.3
    ET1
    Бит разрешения прерывания по переполнению Таймера
    1.
    IE.2
    EX1
    Бит разрешения внешнего прерывания INT1.
    IE.1
    ETO
    Бит разрешения прерывания по Переполнению
    Таймера 0.
    IE.0
    EXO
    Бит разрешения внешнего прерывания INTO EXO.
    Идентификация прерываний в Keil C51:
    Пример обработки прерывания от UART: void int_uart (void) interrupt 4 // адрес обработчика - 0x023
    {
    P0=0x15;

    } int main(){
    EA=1; //разрешаем прерывания
    ES=1; //разрешаем прерывание от UART’а
    … while (1)
    {
    P0=i; t1(); i*=2; if (i == 16) i = 1;
    }
    }
    Порядок действий процессора:
    Задание на лабораторную работу:
    Разработать программу, обрабатывающую прерывание с кнопки.
    Например, при нажатии останавливаются бегущие огни на светодиодах.
    Содержание отчёта:
    1. Цель работы;
    2. Таблица векторов прерываний микроконтроллера ADuC842;
    3. Листинг разработанной программы;
    4. Выводы по проделанной работе.


    написать администратору сайта