Лабораторные МС 68HC11 (Описание микроконтроллера MC68HC11), страница 9
Описание файла
Файл "Лабораторные МС 68HC11" внутри архива находится в папке "Описание микроконтроллера MC68HC11". PDF-файл из архива "Описание микроконтроллера MC68HC11", который расположен в категории "". Всё это находится в предмете "радиоприёмные устройства" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "радиоприёмные устройства" в общих файлах.
Просмотр PDF-файла онлайн
Текст 9 страницы из PDF
Остальные прерывания образуют группу I - прерываний, все они могут быть запрещены/разрешены путем соответственно установки/сброса бита I в регистре условий CCR (например командами SEI иCLI). В этой группе высший приоритет имеет прерывание, определяемое состоянием младшей тетрады регистра HPRIO (см. рис. 7.1 и табл. 7.2). Далее приоритет источников прерывания падает в следующем порядке:прерывание IRQпрерывание реального временивходной захват 1входной захват 2входной захват 3выходное сравнение 1выходное сравнение 2выходное сравнение 3выходное сравнение 4Прерывания.41Лабораторная работа №7выходное сравнение 5переполнение таймерапереполнение счетчика пульсацийсчетчик пульсацийпоследовательный синхронный интерфейс (SPI)последовательный асинхронный интерфейс (SCI)Вызов прерывания влечет за собой запись основных регистров в стек, при этом порядокразмещения регистров следующий:SPSP-1SP-2SP-3SP-4SP-5SP-6SP-7SP-8SP-9СтекМладший байт программного счетчика - PCLСтарший байт программного счетчика - PCHМладший байт регистра Y - IYLСтарший байт регистра Y - IYHМладший байт регистра X - IXLСтарший байт регистра X - IXHАккумулятор A - ACCAАккумулятор B - ACCBРегистр условий - CCRàУказатель стека SP допрерыванияàУказатель стека SP послепрерыванияПосле выполнения подпрограммы обслуживания прерывания состояния основных регистров восстанавливается из стека при выполнении команды возврата RTI.Рассмотрим более подробно прерывание IRQ.
Оно имеет два источника, один из которых внешний, другой - внутренний, от системы обслуживания параллельного ввода/вывода.В данной лабораторной работе мы будем рассматривать только внешнее IRQ - прерывание.При возникновении запроса на прерывание от какого-нибудь из источников происходит генерация прерывания по вектору IRQ (находится по адресу $FFF2 для нормальных режимовработы и $00EE - для специальных).Вход прерывания IRQ микроконтроллера предназначен для обслуживания запросов напрерывание от внешних устройств.
В зависимости от состояния бита IRQE регистраOPTION, обнаружение запроса производится либо по низкому уровню (IRQE=“1”), либо поотрицательному перепаду (IRQE=“0”) на входе IRQ микроконтроллера. Для учебных целейна плате отладочного модуля предусмотрена кнопка IRQ (см. рис. NN технического описания на модуль), схемотехническое подключение которой представлено на следующем рисунке:Прерывания.42Лабораторная работа №7Рассмотрим пример обслуживания запроса прерывания от внешнего источника по линии IRQ. В данном примере при нажатии на клавишу IRQ производится инверсия состояниялиний порта B (светодиодов).cpu6811portbequ$1f04; регистр данных порта Boptionequ$39; смещение для регистра конфигурацииorg$00eejmp$d100orgldx$d000#$1000clrbclrportboption,x,$20clibra*org$d100ldaaeorastaajsrrti#$ffportbportbdly06;;;;вектор прерывания по IRQ (режимbootstrap)переход на подпрограмму обслуживанияпрерывания;;;;;;;;Начало основной программыобщее смещение для внутреннихрегистровпогасить светодиодыустановить режим обнаружения внешнегопрерывания по уровнюразрешить I-прерываниязамкнутый цикл; Начало подпрограммы обслуживания; прерывания; инверсия состояния светодиодов; задержка 0.6с; возврат из прерыванияdly06j1ldx#$7f00; подпрограмма задержки 0.6сmul; задержка 30 цикловmulmuldexbnej1rtsЗапустите программу с адреса $D000.
Каждое следующее нажатие на клавишу IRQ воспринимается только через 0.6 с, причем, если клавишу оставить нажатой, то светодиоды будут мигать с периодичностью 0.6 с. Это объясняется тем, что после возвращения из подпрограммы обработки прерывания, возникает новый запрос, поскольку клавиша IRQ нажата иподдерживает на соответствующем входе низкий уровень.Теперь заменим командуbclr option,x,$20наbset option,x,$20т.е. установим режим обнаружения прерывания по перепаду и запустим заново программу(вместо этого можно просто изменить соответствующим образом состояние регистра option,с помощью команды отладчика “DebugfMemoryfModify”). При работе модифицированной программы инверсия состояния светодиодов также происходит при нажатии на клавишуIRQ, которое воспринимается через 0.6 с после предыдущего нажатия, но если клавишуоставить нажатой, то мигания светодиодов не будет, т.к.
при нажатии клавиши IRQ возникает только один отрицательный перепад.Прерывания.43Лабораторная работа №7Для удобства рассмотрения часть прерываний выделены в отдельную группу - группуисключительных ситуаций. К ней относятся: сброс микроконтроллера - RESET, система защиты от сбоев - COP, система обнаружения падения частоты синхронизации и система обработки неправильного кода команды.Сброс микроконтроллера может быть произведен двумя путями: 1. по перепаду напряжения питания (пока напряжение питания не достигло необходимого уровня, внутри микроконтроллера устанавливается сигнал сброса RESET, который остается установленным еще4064 тактовых цикла после достижения нормы); 2.
подачей низкого уровня на вывод RESETмикроконтроллера. После сброса микроконтроллер инициализирует внутренние регистры иначинает выполнять программу пользователя, начиная с адреса, находящегося по вектору$FFFE, $FFFF.Система защиты от программных сбоев (COP) представляет собой таймер, который поистечении определенного времени передает управление программой по вектору $FFFA,$FFFB (при этом не производится сохранение основных параметров программы в стеке, вотличие от обычных прерываний). Для того, чтобы этого не произошло программа пользователя должна периодически инициализировать таймер COP, причем период между двумяинициализациями не должен превышать заданного значения (периода COP-таймера).
Этозначение определяется частотой внешней тактовой синхронизации и состоянием битов CR1и CR0 (два младших бита) регистра OPTION. Следует иметь ввиду, что в нормальных режимах работы эти биты могут быть запрограммированы только в течение первых 64 E цикловработы микроконтроллера после сброса. В специальных режимах работы доступ к этим битам не ограничен (см. описание на микроконтроллер).
Для внешней тактовой частоты 8 МГцсоответствие между состоянием битов CR1 и CR0 и периодом COP - таймера представлено втабл. 7.3.Таблица 7.3.CR1 CR0 Период COP0016.384 мс0165.536 мс10262.14 мс111.049 сРазрешение работы COP производится путем сброса бита NOCOP (бит 2) регистраCONFIG (правила его программирования смотрите в описании на микроконтроллер). Инициализация COP осуществляется последовательной записью байтов $55 и $AA в регистрCOPRST (адрес $103A).Система обнаружения сбоя частоты синхронизации включается установкой бита CME(бит 3) регистра OPTION. Срабатывание системы происходит, если внутренняя частота синхронизации E падает ниже 10-200 кГц (при внешней частоте 8 МГц внутренняя составляет2 МГц).
После срабатывания управление передается по вектору $FFFC, $FFFD, без сохранения состояния контроллера в стеке (как и в случае с COP).Из трех вышеперечисленных исключительных ситуаций высший приоритет имеетRESET и низший - COP.Если в процессе выполнения программы встретилась команда с несуществующим кодом (например, $41), то происходит прерывание по вектору $FFF8, $FFF9. По процессу выполнения это прерывание аналогично программному прерыванию SWI, за исключением того, что при переходе на подпрограмму обслуживания прерывания в стек записывается адрескоманды, вызвавшей прерывание по неправильному коду, а не адрес следующей команды.Рассмотрим пример программы, которая подсчитывает количество несуществующих командв программе и выводит его в двоичном виде на светодиоды:cpu6811portbequ$1f04; регистр данных порта Btmpequ0; дополнительная ячейкаПрерывания.44org$00f7jmp$d100orgclrnopnopnopnopfcbnopnopnopfcbfcbnopldaastaa$d000tmpbra*org$d100inctmptsyinc8,yЛабораторная работа №7; вектор прерывания по неправильному; коду команды (режим bootstrap); переход на подпрограмму обслуживания; прерывания; Начало основной программы; Обнулить счетчик неправильных команд$41; Код неправильной команды$62$5b; Код неправильной команды; Код неправильной командыtmpportb; вывести состояние счетчика на; светодиоды; замкнутый цикл;;;;Начало подпрограммы обслуживанияпрерыванияИнкрементировать счетчик неправильныхкоманд; Увеличить на 1 адрес возврата (чтобы; возврат был на следующую команду, а; не на вызвавшую прерывание)rti; возврат из прерыванияПримечание.
Программа-отладчик для работы с HC11EVB использует прерывание по неправильному коду команды для организации точек останова и трассировки, поэтому эти функции становятся недоступными при выполнении данной программы.В связи с этим после выполнения программы следует сбросить контроллер и заново восстановить связь.В качестве счетчика неправильных команд используется дополнительная ячейка tmp. Вначале программы он инициализируется, а затем увеличивается на 1 после каждого следующего обнаружения неправильной команды. В качестве “нормальных команд” используютсякоманды NOP. В конце программы содержимое счетчика выводится на светодиоды.
Запустите программу с адреса $D000. На светодиодах должно появится двоичное число 00000011 (т.е.десятичное 3). Проверьте работоспособность программы меняя число неправильных команд.Прерывания.45Лабораторная работа №73. Контрольные вопросы.1.