Мир книг по микроэлектронике
Книги авторства Белова Александра
На главнуюРеквизиты автора Сайт МирМК FUSE калькулятор Сайт "Симферополь вчера и сегодня"

<< Предыдущая страница К оглавлению www.mirmk.ru Следующая страница>>

Глава 11. Механизм прерываний.

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

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

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

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

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

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

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

 

<< Предыдущая страница К оглавлению www.mirmk.ru Следующая страница>>