- •Однокристальная микроЭвм мс68нс705с8.
- •2. Специальные режимы работы.
- •2.1 Reset
- •2.2 Режимы с пониженным энергопотреблением.
- •1. Внешнее аппаратное прерывание irq.
- •2. Программное прерывание swi.
- •3. Аппаратное прерывание reset.
- •4. Режимы малого потребления stop и wait.
- •Контрольные вопросы.
- •Задания.
Лабораторная
работа N4. Система прерываний. Специальные
режимы работы.
Однокристальная микроЭвм мс68нс705с8.
Лабораторный практикум.
Лабораторная работа №4.
Система прерываний.
Специальные режимы работы.
Теоретическая часть.
1. Система прерываний.
МС68НС705С8 имеет 5 типов прерываний, включающих 4 маскируемых аппаратных прерывания и одно немаскируемое программное прерывание. К аппаратным прерываниям относятся:
- внешнее прерывание, поступающее через вывод IRQ/ микросхемы;
- прерывание от последовательного интерфейса связи;
- прерывание от последовательного периферийного интерфейса;
- прерывание от таймера;
При возникновении прерывания, процессор сохраняет содержимое регистров в стеке, после чего устанавливает бит маски прерываний I в регистре признаков CC, запрещая последующие прерывания. Команда возврата из прерывания (RTI), которая является последней командой в подпрограмме обработки любого прерывания, восстанавливает содержимое регистров из стека. Порядок загрузки и выгрузки регистров из стека показан на рис. 1.
Рис. 1. Порядок загрузки регистров в стек и выгрузки их из стека.
В отличие от RESET, прерывание не вызывает прекращения выполнения текущей команды, обработка прерывания начинается лишь после ее завершения.
Таймер и оба последовательных интерфейса имеют собственные регистр статуса и управляющий регистр. В регистре статуса расположены флаги запросов прерываний, каждый из которых соответствует определенному событию, вызвавшему прерывание. Например, у таймера таких флагов три. Флаги в регистрах статуса предназначены только для чтения. В управляющих регистрах этих устройств каждому из этих флагов поставлен в соответствие управляющий бит, с помощью которого можно разрешить или запретить определенное прерывание установкой или сбросом этого бита. Если управляющий бит сброшен, то прерывание блокируется, но это не мешает изменению состояния флага запроса прерывания. Во время начальной установки все управляющие биты сбрасываются, чтобы предотвратить прерывания в течение процедуры начальной установки.
В таблице 1 даны векторы всех прерываний. В первом столбце таблицы указан регистр статуса, в котором находится соответствующий флаг прерывания, во втором столбце даны названия флагов прерываний. В третьем столбце кратко описана причина возникновения прерывания, в четвертом столбце указано устройство-источник прерывания, и в пятом столбце приведен адрес, по которому хранится вектор прерывания.
Таблица 1. Векторы прерываний.
Регистр |
Имя флага |
Причина прерывания |
Прерывание ЦПУ |
Адрес вектора |
|
|
RESET |
RESET |
1FFE-1FFF |
|
|
Программное |
SWI |
1FFC-1FFD |
|
|
Внешнее |
IRQ |
1FFA-1FFB |
Регистр статуса таймера |
ICF
OFC
TOF |
Входная фиксация Выходное сравнение Переполнение |
TIMER |
1FF8-1FF9 |
Регистр статуса интерфейса связи |
TDRE
TC
RDRF
IDLE
OR |
Буфер передачи пуст Передача завершена Полон буфер приема Обнаружена свободная линия Переполнение |
SCI |
1FF6-1FF7 |
Регистр статуса периферийного интерфейса |
SPIF
MODF |
Передача завершена Режим ошибочен |
SPI |
1FF4-1FF5 |
На рисунке 2 показан процесс обработки прерывания. Важно отметить, что после возврата из подпрограммы обработки прерывания бит маски прерываний (бит I в регистре признаков CC) будет сброшен только в том случае, если соответствующий бит регистра CC в стеке содержит 0.
Рассмотрим подробнее каждый тип прерывания.
Программное прерывание является результатом выполнения команды SWI (SoftWare Interrupt). Оно возникает вне зависимости от состояния бита I и поэтому является немаскируемым. Вектор прерывания SWI содержится в ячейках памяти с адресами 1FFC и 1FFD.
Внешнее прерывание происходит, если бит маски прерываний (бит I) сброшен и на внешний вывод IRQ/ поступает сигнал активного уровня (режим срабатывания задается записью в бит IRQ регистра конфигурации, см. ниже). Затем текущее состояние процессора запоминается в стеке, и бит I устанавливается в 1 для маскирования всех прерываний до тех пор, пока обслуживается внешнее.
Прерывание от таймера может быть вызвано тремя флагами, как уже упоминалось ранее. Эти три флага расположены в регистре статуса таймера, и имеют один и тот же вектор (см. таблицу 1). Каждый флаг имеет соответствующий управляющий бит (ICIE, OCIE и TOIE) в регистре управления таймером. Установка этих битов разрешает соответствующее прерывание, сброс-запрещает. Более подробно прерывания от таймера будут рассмотрены в соответствующей лабораторной работе.
Прерывание от последовательного интерфейса связи может быть вызвано любым из пяти флагов (TDRE, TC, RDRF, IDLE, OR) в регистре статуса интерфейса связи. При обслуживании прерывания приоритет обработки задается программно через проверку флагов в регистре статуса, так как всем пяти флагам соответствует один и тот же вектор, как и в случае с таймером (см. таблицу 1).. Подробнее регистры интерфейса связи рассматриваются в лабораторной работе по последовательному интерфейсу.
Рис. 2. Процесс обработки прерывания
Прерывание от последовательного периферийного интерфейса происходит при тех же условиях (установлен один из двух флагов в регистре статуса периферийного интерфейса: SPIF или MODF, бит I сброшен, и управляющий бит в управляющем регистре установлен). Подробнее о периферийном интерфейсе рассказывается в лабораторной работе по последовательному интерфейсу.
Функциональная диаграмма обработки внешних прерываний приведена на рис.3. Внешнее прерывание может определяться либо фронтом сигнала, либо его фронтом и уровнем. Задается это программно через регистр конфигурации (см. ниже). Если прерывание определяется фронтом сигнала, то следующее прерывание не должно возникать до тех пор, пока не будет обработано первое, т. е. пока не будет выполнена команда возврата из прерывания (RTI). Время между двумя прерываниями должно быть минимум на 21 машинный цикл больше, чем время обработки прерывания (не включая команду RTI). При определении прерывания по уровню сигнала, следующее прерывание будет инициироваться и в том случае, если после обработки первого прерывания на выводе IRQ/ будет сохраняться сигнал низкого уровня. Этот метод обычно используется при работе с несколькими источниками прерываний, объединенными в одну линию.
Рис. 3. Функциональная схема обработки внешнего прерывания.
Регистр конфигурации (OPTION), имеет адрес 1FDF, однако, из-за особенностей эмуляции данного микроконтроллера платой EVM, обращение к регистру конфигурации должно производиться по адресу 3FDF, несмотря на закольцованность памяти платы (тождественность ячеек 1FDF и 3FDF).
Регистр конфигурации используется для задания режима обнаружения внешних прерываний (IRQ), разрешения/запрета доступа к ППЗУ, а также конфигурирования памяти.
Регистр конфигурации
Назначение |
RAM0 |
RAM1 |
0 |
0 |
SEC |
- |
IRQ/ |
0 |
Установка после RESET |
0 |
0 |
0 |
0 |
* |
- |
1 |
0 |
*бит SEC является ячейкой ППЗУ.
В данной лабораторной работе нас интересует только бит IRQ, отвечающий за способ обнаружения одноименного прерывания :
при IRQ=1 вывод IRQ микропроцессора реагирует как на низкий уровень сигнала на этом выводе, так и на перепад из высокого уровня в низкий.
при IRQ=0 ОЭВМ реагирует только на перепад из высокого уровня сигнала на входе IRQ в низкий.
Особо отметим ситуацию, когда IRQ программируется на возбуждение только по фронту сигнала на выводе микроконтроллера. Именно в такой конфигурации внешнее прерывание используется в этой и последующих лабораторных работах. Обычно программа разрешает прерывания после перепрограммирования регистра конфигурации. При этом из-за особенностей реализации схемы реакции на прерывание IRQ в отладочном модуле немедленно происходит инициирование прерывания, что может привести к неправильной работе программы. В этих случаях рекомендуется просто запускать программу повторно.