Читайте также: |
|
Аппаратные средства прерывания МК семейства НС08 имеют следующие особенности:
• выполнение команды возврата из прерывания RTI автоматически разрешает прерывания;
• выполнение команды возврата из прерывания RTI не блокирует прерывания на период выполнения следующей команды; вход в новую подпрограмму возможен сразу после выполнения команды RTI.
Дело в том, что при входе в подпрограмму прерывания бит глобальной маски прерывания I обязательно равен 0. Иначе прерывания были бы запрещены и говорить о подпрограмме прерывания не имело бы смысла. Содержимое регистра признаков, в котором располагается маска I, сохраняется в стеке при входе в подпрограмму прерывания. Следовательно, при восстановлении регистра признаков из стека по команде RTI бит глобальной маски прерывания установится в «0», и прерывания будут разрешены.
Все источники прерываний МК семейства НС08 можно разделить на три группы:
1)немаскируемое программное прерывание по команде SWI;
2)маскируемые внешние прерывания по входу IRQ и по некоторому числу линий
портов ввода/вывода, которые принадлежат модулю сканирования клавиатуры КВI08;
3)маскируемые прерывания от периферийных модулей.
Механизм программного прерывания позволяет обратиться к какой-либо подпрограмме прерывания по ходу выполнения прикладной программы и воспользоваться подпрограммой прерывания как обычной подпрограммой. Наличие в системе команд инструкции программного прерывания 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 имеет жесткое распределение приоритетов, которое не может быть скорректировано программными настройками. Источники прерываний, уровни их приоритетов, абсолютные адреса векторов прерываний для МК MC68HC908GP32 приведены в таблице 1.1
Таблица 1.1
Таблица векторов прерывания МК МС68HC908GP32
Источник события прерывания или сброса | А Адрес ячейки памяти вектора | Бит регистра ISRi | Флаг - источник запроса | Условия маскирования | Приоритет | |||
Вектор прерывания по запросу модуля базового таймера ТВМ08 | $FFDC SFFDD | IF16 | TBIF | Глобальная маска I в регистре CCR. Маска AIEN в регистре ADSCR. | Низший высший высший | |||
Вектор прерывания по запросу модуля аналого-цифрового преобразователя ADC08 | SFFDE $FFDF | IF15 | COCO | Глобальная маска I в регистре CCR. Маска AIEN в регистре ADSCR. | ||||
Вектор прерывания по запросу модуля сканирования клавиатуры KBI08 | $FFEO $FFE1 | IF14 | IMASKK | Глобальная маска I в регистре CCR. Маска IMASKK в регистре KBSCR. | ||||
Вектор прерывания по запросу передатчика модуля последовательного асинхронного интерфейса SCI | $FFE2 $FFE3 | IF13 | ТС SCTE | Глобальная маска I в регистре CCR. Маски SCTIE и TCIE в регистре SCC2. | ||||
Вектор прерывания по запросу приемника модуля последовательного асинхронного интерфейса SCI | $FFE4 $FFE5 | IF12 | SCRFIDLE | Глобальная маска I в регистре CCR. Маски SCRIE и ILIE в регистре SCC2. | ||||
Вектор прерывания по событию ошибки обмена в модуле последовательного асинхронного интерфейса SCI | $FFF6 $FFF7 | IF11 | ORNFFEPE | Глобальная маска I в регистре CCR. Маски ORIE, NEIE, FEIE, PEIE в регистре SCC3. | ||||
Вектор прерывания по запросу передатчика модуля последовательного синхронного интерфейса SPI | SFFE8 SFFE9 | IF10 | SPTE | Глобальная маска I в регистре CCR. Маска SPTIE в регистре SPCR. | ||||
Вектор прерывания по запросу приемника модуля последовательного синхронного интерфейса SPI | $FFEA $FFEB | IF9 | SPRFOVRF-MODF | Глобальная маска I в регистре CCR. Маски SPRIE в регистре SPCR и ERRIE в регистре SPSCR. | ||||
Источник события прерывания или сброса | Адрес ячейки памяти вектора | Бит регистра ISRi | Флаг - источник запроса | Условия маскирования | Приоритет | |||
Вектор прерывания по переполнению счетчика временной базы модуля процессора событий TIM2 | $FFEC $FFED | IF8 | TOF | Глобальная маска в регистре CCR. Маска TOIE в регистре T2SC. |
Низший
Высший
| |||
Вектор прерывания по событию канала 1 модуля процессора событий TIM2 | $FFEE $FFEF | IF7 | CH1F | Глобальная маска I в регистре CCR. Маска СН1 IE в регистре T2SC1. | ||||
Вектор прерывания по событию канала О модуля процессора событий TIM2 | SFFF0 $FFF1 | IF6 | CHOF | Глобальная маска I в регистре CCR. Маска CH0IE в регистре T2SC0. | ||||
Вектор прерывания по переполнению счетчика временной базы модуля процессора событий TIM 1 | $FFF2 $FFF3 | IF5 | TOF | Глобальная маска I в регистре CCR. Маска TOIE в регистре T1SC. | ||||
Вектор прерывания по событию канала модуля процессора событий TIM1 | $FFF4 $FFF5 | IF4 | CH1F | Глобальная маска I в регистре CCR. Маска СН1 IE в регистре T1SC1. | ||||
Вектор прерывания по событию канала О модуля процессора событий TIM 1 | $FFF6 $FFF7 | IF3 | CHOF | Глобальная маска I в регистре CCR. Маска СНСНЕ | ||||
Вектор прерывания по запросу модуля формирования тактовой частоты CGM08 | $FFF8 $FFF9 | IF2 | PLLF | Глобальная маска I в регистре CCR. Маска PLLIE в регистре PCTL. | ||||
Вектор прерывания по входу IRQ | $FFFA $FFFB | IF1 | IMASK1 | Глобальная маска I в регистре CCR. Маска IMASK1 в регистре INTSCR. | ||||
Вектор программного прерывания по команде SWI | $FFFC $FFFD | _ | _ | Немаскируемое | ||||
Вектор сброса | $FFFE $FFFF | _ | _ | Немаскируемое | ||||
2. ПОРТЫ ВВОДА/ВЫВОДА
МК MC68HC908GP32 обладает 33 линиями ввода/вывода данных. Эти линии объединены в 8-разрядные параллельные порты, которые именуют в соответствии с буквами латинского алфавита: Port A, Port В, Port С, Port D, Port H.
Все линии ввода/вывода МК MC68HC908GP32 -двунаправленные, т. е. могут использоваться разработчиком как для ввода данных в МК, так и для вывода логических сигналов. Направление передачи линий ввода/вывода настраивается программно путем записи управляющих слов в регистры специальных функций. Возможно изменение направления передачи в ходе выполнения программы посредством перепрограммирования этих регистров. Сигнал сброса устанавливает все линии в режим ввода. Направление передачи каждой линии может быть выбрано разработчиком произвольно, независимо от других линий, принадлежащих к одному и тому же порту ввода/вывода.
Большинство линий ввода/вывода обладают так называемой альтернативной функцией. Эти линии связаны со встроенными в МК периферийными устройствами, они обеспечивают связь периферийных модулей с «внешним миром». Так, линии порта Port В используются для подключения к встроенному АЦП измеряемых напряжений, линии других портов служат линиями ввода/вывода последовательных приемопередатчиков. Если соответствующий периферийный модуль МК не используется, то его выводы можно задействовать как обычные линии ввода/вывода. Распределение линий ввода/вывода по портам, спецификация линий альтернативных функций для МК MC68HC908GP32 приведены в табл. 2.1.
По способу схемного решения выходного драйвера различают два типа линий ввода/ вывода:
1)линии с обычной схемотехникой двунаправленной линии ввода/вывода;
2)двунаправленные линии с программно-подключаемыми в режиме ввода подтяги
вающими резисторами RPULLUP (см. рис. 4.5).
Если порт имеет «обычную» схемотехнику, то для его обслуживания предусмотрены два типа регистров:
1) РТх - регистр данных порта х, где х - имя порта ввода/вывода;
2) DDRx - регистр направления передачи порта х.
Если порт имеет схемотехнику с программно-подключаемым «подтягивающим» резистором, то для обслуживания порта предусмотрены три регистра:
1)РТх - регистр данных порта х;
2)DDRx - регистр направления передачи порта х;
3)PTxPUE - регистр входного сопротивления порта х.
Так, порт PortA микроконтроллера MC68HC908GP32 обслуживается регистрами РТА, DDRA и PTAPUE. В табл. 2.2, 2.3, и 2.4 приведен формат регистров специальных функций РТх, DDRx и PTxPUE. Заметим, что формат регистров РТх и DDRx для портов с различной схемотехникой полностью совпадает.
Таблица 2.1 Спецификация линий ввода/вывода МК MC68HC908GP32
Имя порта | Число линий | Схемотехника линий | Альтернативная функция |
PortA | Двунаправленные, с возможностью программного подключения резистора RPULLUP | 8 линий являются входами модуля сканирования клавиатуры (8 KBI) | |
Port В | Двунаправленные | 8 линий являются аналоговыми входами встроенного АЦП | |
PortC | Двунаправленные, с возможностью программного подключения резистора RPULLUP | Не имеют альтернативной функции | |
PortD | Двунаправленные, с возможностью программного подключения резистора RPULLUP | 4 линии обслуживают модуль SPI, 2 линии - модуль TIM1 2 линии - модуль TIM2 | |
PortE | Двунаправленные | 2 линии обслуживают модуль SCI |
Таблица 2.2
Дата добавления: 2015-07-25; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Подпрограмма прерывания по переполнению счетчика временной базы процессора | | | Формат регистра РТхPUE |