Лабораторные МС 68HC11 (1086185), страница 10
Текст из файла (страница 10)
Назовите все основные источники прерывания микроконтроллера MC68HC11E1.2. Что такое вектор прерывания?3. Какие отличия между обработками прерывания в нормальных и специальных режимах работы?4. Что такое программное прерывание SWI?5. Как происходит обработка двух и более одновременно поступивших запросов на прерывание?6. Какое из аппаратных прерываний имеет высший приоритет?7. Как его можно запретить ? Разрешить?8. Что такое группа I-прерываний?9. Опишите структуру приоритетов в этой группе.10.Какие два источника вызывают прерывание IRQ?11.В чем отличие обнаружения прерывания по уровню и по перепаду? Каким образом задается метод обнаружения перепада для IRQ?12.Что такое группа исключительных ситуаций?13.Какие два сброса микроконтроллера вам известны?14.Что такое COP? Как его разрешить?15.Как задается период COP - таймера?16.Как производится инициализация COP?17.Как работает система обнаружения сбоя частоты синхронизации? Как ее разрешить?18.Какое основное отличие существует при обработке исключительных ситуаций по RESET,COP и сбою частоты синхронизации и при обработке обычных прерываний?19.Что происходит, если при выполнении программы встретилась команда с неправильнымкодом?20.Является ли прерывание по неправильному коду команды аналогом программного прерывания SWI? Объясните почему.21.Назовите примеры неправильных кодов команды?4.
Задания.1. Напишите программу увеличивающую на 1 двоичное число на светодиодах при каждом,сколь угодно быстром нажатии на клавишу IRQ.2. Напишите программу, которая с частотой 1 Гц инкрементирует состояние на светодиодахпри нажатой клавише IRQ.3. Модернизируйте предыдущую программу так, чтобы состояние светодиодов не изменялось при кратковременном нажатии (нажатиях) на IRQ.4. Напишите программу - генератор случайных чисел. При нажатой кнопке IRQ в некоторойячейке памяти должен происходить быстрый перебор значений (например, путем инкрементирования содержимого ячейки), и после отпускания это значение должно выводитсяна светодиоды.5.
Напишите программу - определитель скорость реакции. Через некоторое время после запуска программы (1-3 с) должен загореться старший светодиод. После этого запускаетсясчетчик, останавливающийся после нажатия на кнопку IRQ. После этого на светодиоды вдвоичном виде должно выводится его содержимое. Период счета следует сделать 1 мс.
Таким образом на светодиодах отобразится двоичное время реакции в микросекундах.Фальшстарт индицируется миганием светодиодов.6. Напишите программу, которая по нажатии на кнопку PA0 увеличивала бы состояние насветодиодах на 1, а по нажатию на IRQ - уменьшала бы.7. Напишите программу, выводящую на светодиоды состояние переключателей при нажатиина IRQ.Прерывания.46Лабораторная работа №78. Модернизируйте предыдущую программу так, чтобы при удерживаемой кнопке IRQ происходил циклический сдвиг состояния светодиодов с периодом 0.6 с.9. Напишите программу, которая определяла бы определяла бы из двух игроков одного - случшей реакцией.
Через некоторое время после запуска программы (1-3 с) должен загореться старший светодиод B7. Далее один человек нажимает кнопку PA0, а другой IRQ.Если первой была нажата PA0, загорается старшая тетрада светодиодов, если IRQ - младшая. Фальшстарт индицируется миганием светодиода B6 для игрока на PA0, и B1 - для игрока на IRQ.10.Модернизируйте предыдущую программу так, чтобы на светодиоды выводилось разностное время реакции игроков (на семь младших светодиодов) в микросекундах. Старшийсветодиод указывает на победителя (зажженный светодиод означает, что победил участникна PA0).11.Напишите программу, которая зажигала бы все светодиоды, если одновременно нажатыкнопки PA0 и IRQ и гасила бы их в противном случае.12.Напишите программу состоящую из команд NOP с кодами неправильных команд.
Приобнаружении неправильной команды программа должна выводить на светодиоды старший и младший байты адреса по которому находится неправильная команда. Первымдолжен отображаться старший байт. После нажатия на кнопку PA0 - младший, и послеследующего нажатия на PA0 - программа должна продолжить выполнение.13.Модернизируйте предыдущую программу так, чтобы переключение байтов и выход восновную программу производился при нажатии кнопки IRQ.14.Модернизируйте предыдущую программу так, чтобы переключение байтов и выход восновную программу производился только при одновременном нажатии кнопок IRQ иPA0.15.Используя обработчик прерывания от программы 11.
Модернизируйте любую из программ 1 ... 10, так, чтобы при появлении в ней неправильного кода, он индицировался бы,как в программе 11.16.Напишите программу, которая просчитывала бы количество всех возможных неправильных команд для микроконтроллера M68HC11.Прерывания.47Лабораторная работа №8Лабораторная работа №8Система таймера.1. ВведениеВ данной работе изучается таймер микроконтроллера MC68HC11E1 и функциональносвязанные с ним устройства.2. Система таймераВстроенный таймер обеспечивает работу нескольких внутренних систем микроконтроллера, в число которых входят:- система обеспечения функции входного захвата;- система обеспечения функции выходного сравнения;- прерывания реального времени;- счетчик пульсаций.Основу таймера составляет 16-разрядный счетчик, источником синхронизации которого является выход предделителя частоты E (эта частота в 4 раза меньше внешней частотысинхронизации и в отладочном модуле HC11EVB составляет 2 МГц).
В предделителе можнопрограммно задать один из четырех коэффициентов деления: 1, 4, 8 или 16. Установка нужного коэффициента производится посредством битов PR1 и PR0 регистра TMSK2 (см.рис. 8.4). Соответствие между состоянием этих битов и коэффициентом деления приведено втабл. 8.1.Таблица 8.1.PR1 PR0 Коэффициент деления001*0141081116* Автоматически устанавливается после сброса.В нормальных режимах работы микроконтроллера модификация этих битов возможнатолько в течение первых 64 циклов E после сброса. В специальных режимах работы этогоограничения нет.Состояние счетчика инкрементируется на 1 с каждым импульсом синхронизации. Этосостояние можно прочитать из 16-битного регистра TCNT, представленного в виде двух8-битных регистров, находящихся по адресу $100E (старший байт) и $100F (младший байт).Регистр TCNT не доступен для модификации (исключение составляет режим теста) и такимобразом пользователь может только считывать его состояние.
При переходе состояния таймера от $FFFF к $0000 устанавливается флаг переполнения таймера TOF (бит 7) регистрафлагов таймера TFLG2 (см. рис. 8.3.). Прерывание по установке этого бита можно разрешитьустановкой бита TOI регистра маскирования прерываний TMSK2.Рассмотрим пример использования прерывания по переполнению таймера для реализации программы динамического управления светодиодами - бегущих огней. Запишите в память следующую подпрограмму:cpu6811tflg2equ$25; регистр флагов таймера 2org$00d0jmpto;;;;вектор прерывания по переполнениютаймерапереход на подпрограмму обслуживанияпрерыванияСистема таймера.48toj1Лабораторная работа №8; начало подпрограммы обслуживания; прерыванияorg$d100ldybset#$1000tflg2,y,#%10000000ldaalslabccoraastaa$1f04; сброс флага переполнения; таймера; циклический сдвиг влево; состояния светодиодовj1#1$1f04rti; возврат из прерыванияЗапишите в регистр порта B (адрес $1f04) какое-либо число, например, $49.
При этом онодолжно отобразиться на светодиодах. Запишите по адресу $1024 (регистр TMSK2) число $83(%10000011), установив таким образом коэффициент деления для таймера 16 (при этом частота переполнений таймера будет составлять 2000000/(65535(16) C 1.9 Гц) и разрешив прерывания по переполнению таймера. При этом на светодиодах будет происходить циклическое перемещение исходного состояния влево. Попробуйте изменить коэффициент предделителя, обратите внимание на изменение скорости переполнения таймера.Примечание. В предлагаемой лабораторной работе после выполнения каждого примеражелательно производить сброс микроконтроллера с последующим восстановлением связидля инициализации состояния внутренних регистров.3. Функция входной фиксацииФункцию входной фиксации обеспечивают 16-битовые регистры, доступные толькодля чтения.
При обнаружении заданного перепада на входной линии одного из каналоввходной фиксации, происходит запись содержимого счетчика таймера в соответствующийрегистр входной фиксации. Также при этом устанавливается соответствующий флаг в регистре флагов TFLG1 (первому каналу входной фиксации соответствует бит 2, второму - бит1, третьему - бит 0 и четвертому - бит 3, см. рис. 8.1.) и происходит генерация прерывания,если установлен соответствующий бит регистра TMSK1 (см. рис. 8.2.).$10237OC1F6OC2F5OC3F4OC4F3I4O5F2IC1F1IC2F0IC3FСостояниепосле сброса00000000TFLG1Рис.
8.1. Регистр флагов прерывания TFLG1.$10227OC1I6OC2I5OC3I4OC4I3I4O5I2IC1I1IC2I0IC3IСостояниепосле сброса00000000TMSK1Рис. 8.2. Регистр маскирования прерывания TMSK1.Система таймера.49Лабораторная работа №8$10257TOF6RTIF5PAOVF4PAIF30201000Состояниепосле сброса00000000TFLG2Рис. 8.3. Регистр флагов прерывания TFLG2.$10247TOI6RTII5PAOVI4PAII30201PR10PR0Состояниепосле сброса00000000TMSK2Рис.
8.4. Регистр маскирования прерывания TMSK2.$1021Состояниепосле сброса76543210EDG4B EDG4A EDG1B EDG1A EDG2B EDG2A EDG3B EDG3A TCTL200000000Рис. 8.5. Регистр управления таймером TCTL2.Входами четырех каналов входной фиксации могут служить линии 0-3 порта A. Первыетри линии порта A (PA0-PA2) соответствуют каналам IC3, IC2 и IC1 входной фиксации, линия PA3 , в зависимости от состояния бита I4/O5 регистра PACTL (см. рис. 8.10), может использоваться для обеспечения функции входной фиксации IC4 (I4/O5 = “1”) или выходногосравнения OC5 (I4/O5 = “0”).Перепад, вызывающий активизацию функции входной фиксации для заданного каналакодируется в регистре управления TCTL2 (см.