Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 2. Переходим от цифровой техники к микропроцессору и микроконтроллеру 67 тронного спидометра. Спидометр должен постоянно подсчиты ­ вать эти импульсы, чтобы получить величину пробега автомобиля. Одновременно спидометр должен заниматься измерением скорости и другими вспомогательными операциями. Например, опрашивать клавиатуру, выполнять введенные с нее команды, выводить инфор ­ мацию на индикаторы. Если включить команду опроса порта, на который поступают данные импульсы в общую управляющую программу, то в момент поступления импульса с датчика процессор может быть занят другой операцией. В результате некоторые импульсы могут быть пропущены. Именно для таких случаев и был придуман механизм прерывания. Для этого любой процессор имеет как минимум один специальный вход запроса на прерывание. Именно на этот вход необходимо подать наши импульсы, предназначенные для подсчета. Когда очередной импульс приходит на вход запроса прерывания, включается внутренний алгоритм обработки прерывания, заложенный в микропроцессор. Выполнение основной программы прерывается, а управление пере ­ дается на специальную процедуру обработки прерывания. Эта проце ­ дура является составной частью основной управляющей программы, которую разрабатывает программист при создании микропроцессорной системы. Адрес начала процедуры обработки прерывания определяется типом микропроцессора. Процедура обработки прерывания должна выполнить те действия, которые необходимы при поступлении сигнала. В нашем случае это может быть алгоритм цифровой фильтрации и увеличение на единицу содержимого ячейки памяти, где хранится количество посту ­ пивших импульсов. Подпрограмма обработки прерывания завершается специальной командой выхода из прерывания. Эта команда подобна команде выхода из подпрограммы. Поэтому после окончания процедуры обработки пре ­ рывания микропроцессор возвращается к тому месту основной про ­ граммы, где произошло прерывание. Вывод. Процедура обработки прерывания и подпрограмма очень похожи. Отличие только в том, что переход к подпрограмме происходит по специальной команде, а вызов процедуры обработки прерывания — по приходу внешнего сигнала. Поэтому прерывание может произойти на любом этапе выполнения основной программы. В результате применения механизма прерывания мы достигаем эффекта независимости двух процессов. Получается, что основная про ­ грамма выполняется как бы сама по себе, а подсчет импульсов от датчика

RkJQdWJsaXNoZXIy MTExODQxMg==