Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзам.вопр..ОМПТ.doc
Скачиваний:
7
Добавлен:
24.09.2019
Размер:
279.04 Кб
Скачать

14. Прерывания микроконтроллера hc908gp32. Маскирование прерываний. Распознавание и обработка прерываний

15. Распознавание и обработка прерывания по переполнению таймера микроконтроллера HC908GP32P

ОБРАБОТКА ПРЕРЫВАНИЙ

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

• регистры центрального процессора автоматически сохраняются в стеке в следующем порядке: регистр признаков CCR, аккумулятор АСС, младший байт индексного регис­тра X, старший байт счетчика адреса РСН, младший байт счетчика адреса PCL; по завершении прерывания инструкция возврата из прерывания RTI восстанавливает в обратном порядке все регистры центрального процессора для возобновления вы­полнения фоновой программы;

• бит глобальной маски прерывания I в регистре признаков CCR устанавливается в «1», запрещая обслуживание любых других запросов на прерывание до тех пор, пока не будет завершена текущая подпрограмма прерывания;

  • счетчик адреса C загружается адресом начала подпрограммы прерывания, который называют вектором прерывания.

В МК семейства НС08 реализован традиционный для всех МК фирмы «Motorola» ме­ханизм загрузки векторов прерывания. В адресном пространстве памяти программ МК выделена специальная область, которая носит название сегмента векторов прерыва­ния. Каждому источнику запросов на прерывание в этой области отведено по два байта памяти с фиксированными адресами. Пользователь на этапе программирования МК за­носит в эти ячейки памяти адрес начала подпрограммы прерывания. При переходе к выполнению подпрограммы прерывания этот адрес автоматически загружается в счет­чик адреса центрального процессора. В рассматриваемом сегменте памяти размещает­ся также вектор сброса.

Аппаратные средства прерывания МК семейства НС08 имеют следующие особенности:

  • выполнение команды возврата из прерывания RTI автоматически разрешает преры­вания;

  • выполнение команды возврата из прерывания RTI не блокирует прерывания на пе­риод выполнения следующей команды; вход в новую подпрограмму возможен сразу после выполнения команды RTI.

Дело в том, что при входе в подпрограмму прерывания бит глобальной маски преры­вания I обязательно равен 0. Иначе прерывания были бы запрещены и говорить о под­программе прерывания не имело бы смысла. Содержимое регистра признаков, в кото­ром располагается маска I, сохраняется в стеке при входе в подпрограмму прерывания. Следовательно, при восстановлении регистра признаков из стека по команде RTI бит глобальной маски прерывания установится в «0», и прерывания будут разрешены.

Все источники прерываний МК семейства НС08 можно разделить на три группы:

  1. немаскируемое программное прерывание по команде SWI;

  1. маскируемые внешние прерывания по входу IRQ и по некоторому числу линий портов ввода/вывода, которые принадлежат модулю сканирования клавиатуры КВI08;

  1. маскируемые прерывания от периферийных модулей.

Механизм программного прерывания позволяет обратиться к какой-либо подпрограмме прерывания по ходу выполнения прикладной программы и воспользоваться подпрограм­мой прерывания как обычной подпрограммой. Наличие в системе команд инструкции программного прерывания SWI предоставляет такую возможность. Эта команда автома­тически загружает в стек регистры CCR, АСС, X и увеличенное на единицу содержимое счетчика команд PC, а затем осуществляет переход по адресу, который указан в ячейках памяти $FFFC и $FFFD сегмента векторов прерывания. Этот адрес может быть началь­ным адресом подпрограммы прерывания или же находиться внутри нее. При выходе из подпрограммы прерывания команда RTI восстановит содержимое регистров централь­ного процессора и МК продолжит выполнение прикладной программы с команды, кото­рая была следующей за командой SWI. Таким образом, программисту предоставляется возможность обращения в произвольный момент времени к фрагменту подпрограммы прерывания, который начинается с произвольно выбранной инструкции внутри подпрог­раммы прерывания, но заканчивается обязательно командой RTI.

Число линий МК MC68HC908GP32 для приема внешних запросов на прерывания ва-рьируется от одной линии (вход IRQ ) до 9 линий. Обслуживание запросов по входу IRQ осуществляет модуль внешних прерываний IRQ08. Активный уровень сигнала запроса на входе IRQ - низкий логический, длительность сигнала запроса должна составлять не менее t,UH=50 не. Дополнительные входы внешних запросов могут быть получены путем .соответствующей инициализации модуля сканирования клавиатуры KBI08, который по­зволяет настроить некоторое число линий ввода/вывода МК для приема внешних запро­сов на прерывание.

Все прерывания, кроме программного по команде SWI, могут быть разрешены или запрещены сбросом или установкой глобальной маски прерывания I в регистре при­знаков CCR:

cli ; команда сбрасывает в «О» бит I, т. е. разрешает прерывания.

sei ; команда устанавливает бит I в «1», т. е. запрещает прерывания.

Кроме того, каждому источнику прерывания, за исключением программного, постав­лена в соответствие индивидуальная маска прерываний, которая расположена в одном из регистров специальных функций соответствующего периферийного модуля.

Подсистема прерываний МК семейства НС08 имеет жесткое распределение приори­тетов, которое не может быть скорректировано программными настройками