Форма входа

Поиск



Счетчик посетителей

Рейтинг@Mail.ru

Разработано jtemplate модули Joomla

Механизм прерываний

В этой статье рассматривается назначение и принцип действия системы прерываний микропроцессорного устройства.

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

Специально для таких ситуаций инженеры придумали систему прерываний. У любого современного микропроцессора имеется хотя бы один вход запроса на прерывание. Обыч-но его именуют INT (от слова Interrupt - прерывание). Задачу обработки сигнала датчика поворота антенны удобно осуществлять в режиме прерывания. Для этого мы должны под-ключить этот датчик к входу INT процессора. Программа разрабатывается таким образом, что в основном теле программы отсутствуют команды вызова процедуры опроса датчика. Пока на вход INT не поступает никаких сигналов, процессор выполняет основную свою программу. Когда антенна начнет вращаться, то в какой-то момент времени сработает датчик поворота антенны. Сигнал от датчика поступает на вход запроса прерывания. Как работает этот вход: получив сигнал прерывания, процессор приостанавливает выполнение основной программы и выполняет действия очень похожие на действия при переходе к подпрограмме. Различие только в том, что этот переход вызван не очередной командой программы, а внешним событием. Адрес, по которому передается управление в этом слу-чае называется адресом обработки прерывания. В нашем случае по этому адресу должна располагаться процедура обработки сигнала от датчика поворота антенны. В разных про-цессорах этот адрес задается по разному. В одних процессорах - это какой то фиксиро-ванный адрес в памяти. В других, он определяется содержимым специального внутренне-го регистра процессора. В этом случае программист должен предусмотреть в своей про-грамме команду записи в этот регистр нужного ему адреса. Многие процессоры имеют сложный механизм определения адреса обработки прерывания. Существуют даже специ-альные микросхемы - контроллеры прерываний, которые работают совместно с процессо-ром и обеспечивают обработку не одного, а множества прерываний от разных устройств.

В любом случае, как бы не определялся адрес подпрограммы обработки прерывания, процессор передает туда управление. В конце этой подпрограммы должен стоять оператор выхода из процедуры прерывания. Оператор выхода из прерывания очень похож на опе-ратор выхода из подпрограммы. Он делает те же действия: передает управление в то место основной программы, где она была прервана в результате поступления сигнала на вход прерывания. Кроме того, этот оператор выполняет некоторые специальные функции, свя-занные с приоритетами прерываний. Вопросы приоритетов выполнения прерываний мы рассмотрим при описании процессора AT89C2051.

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

Механизм прерываний широко применяется в компьютерной технике. Хороший при-мер - работа манипулятора "мышь" персонального компьютера. Какую бы сложную про-грамму не выполнял компьютер, но указатель свободно бегает по экрану, повинуясь дви-жениям мыши. Часто даже на экране все остальное "зависло". Но указатель мыши живет. Мышь зависает только в крайнем случае. Происходит это благодаря тому, что манипуля-тор мыши работает по прерыванию. Когда вы двигаете ее по столу, внутри мыши враща-ются специальные колесики. Шторка с отверстиями перекрывает инфракрасный луч от светодиода. Внутренний процессор, встроенный в манипулятор, подает цифровой сигнал на последовательный порт компьютера. Последовательный порт принимает сигнал и вырабатывает сигнал запроса на прерывание для центрального процессора. Получив этот сигнал, процессор прерывает выполнение основной программы и выполняет процедуру перемещения изображения мышиного курсора по экрану. Затем он возвращается к выпол-нению своей основной программы.

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

Программа загрузки весов