Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория микропроцессорных систем АТ_Методическое...docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3.72 Mб
Скачать

2.1.3. Начальный запуск и обработка прерываний

Запуск (процедура Reset) для микроконтроллеров семейства 68НС12/912 произ­водится так же, как для семейства 68НС11/711 (см. 1.3.3).

Начальный запуск осуществляется при включении напряжения питания Vп или поступлении внешнего сигнала RESET# = 0. При этом в регистре CCR управляю­щие биты S, X, I устанавливаются в 1, а в программный счетчик PC загружается вектор запуска из ячеек памяти с адресами $FFFE-FF (табл. 2.14). Для надежного запуска с помощью сигнала RESET# рекомендуется поддерживать на нем уровень 0 в течение не менее 32 периодов тактовых импульсов Tt.

Процедура запуска выполняется также при поступлении сигналов от монитора тактовых импульсов и сторожевого таймера, входящих в состав блока контроля функционирования (см. 2.1.6). В этих случаях в PC загружаются специальные век­торы запуска, имеющие адреса $FFFC-FD и $FFFA-FB (табл. 2.14).

Процессор CPU12 реализует ряд прерываний, для каждого из которых задается 16-разрядный вектор, указывающий адрес входа в соответствующую процедуру об­работки. Таблица векторов прерываний занимает старшие 128 байт адресного про­странства, имеющие адреса в диапазоне $FFC0-$FFFF (табл. 2.14). Таким образом обеспечивается возможность использования до 64 различных программ обработки прерываний. При переходе к обработке прерываний процессор последовательно за­гружает в стек содержимое регистров PC, IY, IX, А, В, CCR - всего 9 байт. Возврат из программы обработки прерывания осуществляется командой RTI, которая вос­станавливает содержимое этих регистров, последовательно выбирая его из стека (см. табл. 2.11).

Реально в современных моделях микроконтроллеров используются от 23 до 36 векторов, обеспечивающих обслуживание запросов от различных источников. Старшие 6 позиций таблицы (адреса от $FFF4 до $FFFF) отведены под векторы за­пуска и немаскируемых прерываний, а остальные распределяются между маскируе­мыми прерываниями.

К немаскируемым относятся прерывание при поступлении неправильного кода команды (данное прерывание вызывается также командой TRAP, см. табл. 2.11), программное прерывание по команде SWI, прерывание по внешнему сигналу XIRQ# = 0. Эти прерывания перечислены в порядке убывания приоритета их об­служивания. Обслуживание запроса прерывания XIRQ# производится в том случае, если в регистре CCR установлено значение бита Х=0.

Таблица 2.14. Адреса и приоритеты векторов запуска и прерывания для

микроконтроллеров 68HC912D60, В32, ВС32

К маскируемым относятся прерывания при поступлении сигнала IRQ на вывод РЕ1 порта РЕ или сигналов KW на выводы некоторых параллельных портов (см. 2.1.7), а также прерывания по запросам различных периферийных модулей микроконтроллера: таймерного блока, последовательных портов SCI, SPI, аналого-цифрового преобразователя и др. В зависимости от состава этих модулей различные модели микроконтроллеров используют разное количество векторов прерывания. Разрешение обслуживания для всех маскируемых прерываний осуществляется пу­тем установки в 0 бита I в регистре CCR.

Функционирование вывода РЕ1 определяется значениями битов IRQEN, IRQE в регистре управления INTCR (рис. 2.3, а). При значении бита IRQEN=1 вывод РЕ1 используется в качестве входа запроса прерывания IRQ, при IRQEN=0 этот вывод служит для ввод-вывода данных. Значение бита IRQE определяет вид сигнала IRQ, вызывающего прерывание: при IRQE=0 запросом прерывания является поступление низкого уровня потенциала IRQ=0, при IRQE=1 запрос формируется при поступле­нии отрицательного перепада потенциала на этот вход. При запуске микроконтрол­лера эти биты принимают значение IRQEN=1, IRE=0, а затем могут быть установ­лены в любое необходимое состояние путем записи в регистр INTCR.

Кроме того, регистр INTCR содержит бит DLY, который при значении DLY=1 обеспечивает задержку в 4096 тактов, необходимую для стабилизации работы ГТИ при выходе микроконтроллера из режима останова (см. 2.1.4). При DLY=0 такая за­держка не реализуется, поэтому необходимо использовать внешний генератор. При запуске микроконтроллера этот бит принимает значение 1, а затем может быть ус­тановлен в 0 только 1 раз (при нормальном режиме работы).

Рис. 2.3. Формат содержимого регистров управления прерываниями INTCR, HPRIO для моделей 68HC912D60, ВС32, B32

В табл. 2.14 приведен состав векторов для наиболее популярных моделей се­мейства 68НС12. Модель 68HC912D60 помимо типового набора периферийных мо­дулей (таймерного блока, SCI, SPI, АЦП) содержит второй: порт SCI, контроллер CAN-шины, дополнительный счетчик событий В, отдельный вычитающий счетчик. Кроме того, в этой модели имеется программируемый ГТИ со схемой ФАПЧ (PLL), при управлении которым используются прерывания (см. 2.1.6), а выход из режимов ожидания и останова (активизация процессора) может осуществляться с помощью сигналов KW, которые поступают со входов порта G или Н, запрограммированных соответствующим образом (см. 2.1.7). Все эти устройства обслуживаются с помо­щью отдельных векторов прерывания. Модели 68НС912В32 и 68НС912ВС32 имеют меньший состав периферийных модулей и соответственно другой набор векторов прерывания. Так, в этих моделях есть только один порт SCI, отсутствуют дополни­тельные счетчики и сигналы активизации KW, используется более простой ГТИ. В модели 68НС912В32 вместо CAN-контроллера имеется BDLC-контроллер, реализующий протокол обмена J1850, который обслуживается с помощью вектора пре­рывания с адресом $FFD0-D1.

В модели 68HC912DG128, имеющей еще более широкий набор периферийных модулей, дополнительно введены векторы для обслуживания запросов прерываний, которые поступают от второго CAN-контроллера и от интерфейса шины I2C.

Приоритет обслуживания немаскируемых прерываний определяется порядком расположения их векторов в таблице прерываний и значением кода PSEL5-1 в реги­стре приоритетов HPRIO (рис. 2.3, б). Высший приоритет имеет прерывание, код которого равен коду PSEL5-1. При запуске микроконтроллера в регистре HPRIO устанавливается значение PSEL5-1 = 11001, которое задает максимальный приори­тет для сигнала IRQ, а далее приоритет снижается по мере уменьшения адресов век­торов (минимальный приоритет имеет прерывание, вектор которого занимает верх­нюю позицию в таблице).

Изменить приоритеты немаскируемых прерываний можно путем установки со­ответствующего значения битов PSEL5-1. При этом прерывание, код которого ра­вен PSEL5-1, получает максимальный приоритет, а приоритеты остальных немаски­руемых прерываний циклически изменяются с сохранением их относительных позиций в таблице векторов (минимальный приоритет получает прерывание, пред­шествующее в таблице прерыванию с максимальным приоритетом). Запись в ре­гистр HPRIO необходимых значений PSEL5-1 разрешается, если в регистре CCR бит I=1 (прерывания запрещены).