Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Читать онлайн Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 37 38 39 40 41 42 43 44 45 ... 150
Перейти на страницу:

• Внутренний сброс по сторожевому таймеру (Computer Operating Properly reset — COP). Логика работы сторожевого таймера позволяет микроконтроллеру выявлять перемежающиеся ошибки в исполнении прикладной программы, которые могут возникнуть в результате электромагнитных помех или при колебаниях напряжения питания микропроцессорной системы. В процессе отладки работа сторожевого таймера запрещена. Работа модуля сторожевого таймера разрешается в конечном варианте прикладной программы, который используется при работе МК в системе. Сторожевой таймер — это счетчик, коэффициент счета которого настраивается пользователем при инициализации системы. Счетчик начинает счет внутренних тактовых импульсов в момент начала исполнения программы. Если счетчик переполнится, то МК перейдет в состояние сброса. Правильно исполняемая прикладная программа, в которой очередность исполнения операторов совпадает с предусмотренной программистом очередностью, должна постоянно сбрасывать сторожевой таймер. Тогда внутреннего сброса от него случаться не будет. Для сброса сторожевого таймера в МК семейства 68HC12/HCS12 необходимо в регистр COPRST записать сначала код $55, а затем код $AA. При создании конечного кода прикладной программы разработчик должен разместить операции записи приведенной последовательности кодов так, чтобы исполнение программы по любому возможному пути обеспечивало бы выполнение команд сброса через меньшие интервалы времени, чем период переполнения сторожевого таймера.

• Внутренний сброс по отклонению частоты тактовых импульсов МК (Clock Monitor reset). МК переводится в состояние сброса, когда модуль встроенного генератора тактирования обнаруживает выход частоты тактирования за заданные пределы или просто останов системы тактирования. После перехода в состояние сброса в счетчик команд центрального процессора автоматически загружается так называемый вектор сброса. Вектор сброса — это адрес ячейки памяти, в которой расположен первый оператор исполняемой программы. После загрузки начального адреса программа запускается на исполнение. Два источника сброса: сторожевой таймер и монитор частоты тактирования — обладают собственными векторами сброса (см. рис. 4.17).

Период переполнения сторожевого таймера

CR[2:0] Делитель Период переполнения сторожевого таймера 4 МГц 8 МГц 000 Не используется нет нет 001 213 2,048 мс 1,024 мс 010 215 8,192 мс 4,096 мс 011 217 32,768 мс 16,384 мс 100 219 131,072 мс 65,536 мс 101 221 524,288 мс 262,144 мс 110 222 1,048 с 524,288 с 111 223 2,097 с 1,048576 с

Рис. 4.14. Формат регистров COPCTL, COPRST

Регистры сторожевого таймера и монитора тактирования

Два регистра специальных функций используются МК семейства 68HC12/HCS12 для управления генерацией сигналов сброса от сторожевого таймера и монитора тактирования:

• COPCTL — регистр управления сторожевого таймера.

• COPRST — регистр сброса сторожевого таймера.

Формат обоих регистров представлен на рис. 4.14. Отдельные биты регистра COPCTL разрешают или запрещают сброс от сторожевого таймера и от монитора питания, задают период переполнения сторожевого таймера, а также позволяют генерировать сигнал сброса под управлением программы.

Назначение битов регистра COPCTL:

• CME — разрешает (CME=1) или запрещает (CME=0) работу монитора тактирования.

• FCME — разрешает работу монитора тактирования (FCME=1) независимо от значения бита CME.

• FCM — установка под управлением программы этого бита в 1 генерирует внутренний сброс по монитору тактирования.

• FCOP — установка под управлением программы этого бита в 1 генерирует внутренний сброс по переполнению сторожевого таймера.

• DISR — запрещает (при DISR=1) или запрещает (при DISR=0) перезапуск МК по установленным битам FCM и FCOP.

• CR2…CR0 задают коэффициент счета сторожевого таймера. Численные значения периода переполнения сторожевого таймера для некоторых частот системной шины МК приведены на рис. 4.14.

Регистр COPRST предназначен для сброса сторожевого таймера. В этот регистр под управлением программы должна быть записана последовательность кодов: сначала $55, затем $AA. И сторожевой таймер будет сброшен.

4.10.2. Прерывания

Мы рассмотрели один из способов реализации исключений в микроконтроллерах — это сброс МК. Другой способ принудительного изменения содержимого программного счетчика центрального процессора — это прерывания, которые в МК семейства 68HC12/HCS12 делятся на маскируемые и немаскируемые.

Программно логическая модель центрального процессора содержит регистр признаков CCR, формат которого представлен на рис. 4.15. Особенностью всех семейств МК от компании Freescale Semiconductor является наличие в регистре признаков не только флагов результатов операции, но и дополнительных битов управления подсистемой прерывания. В составе регистра признаков МК 68HC12/HCS12 — два таких бита. Бит I — глобальная маска прерываний — используется для управления маскируемыми прерываниями. Бит X — бит запрета немаскируемых прерываний — управляет немаскируемыми прерываниями. Оба этих бита устанавливаются в 1 в состоянии сброса МК. Обратите внимание, в МК 68HC12/HCS12 установка битов I и X запрещает соответствующие прерывания.

Рис. 4.15. Формат регистра состояния CCR

Немаскируемые прерывания

В соответствие со своим названием немаскируемые прерывания не могут быть отключены пользователем. Однако в предыдущем абзаце было упомянуто, что установка бита X в 1 запрещает немаскируемые прерывания. Значение бита X действительно равно 1 в состоянии сброса МК. Однако далее он может быть установлен в 0 под управлением программы инициализации, разрешая тем самым немаскируемые прерывания. Далее этот бит не может быть изменен под управлением программы, и в этом его отличие от бита глобальной маски прерываний I.

Три типа немаскируемых прерываний реализуются в МК 68HC12/HCS12:

• Прерывание по внешнему запросу . Все МК 68HC12/HCS12 имеют вывод внешнего немаскируемого прерывания . Активный уровень сигнала для генерации запроса на прерывание — логический 0.

• Прерывание по несуществующему коду команды. Каждая инструкция языка ассемблер МК имеет собственный код. В МК 68HC12/HCS12 коды операций могут быть однобайтовыми и двухбайтовыми. Но не все теоретически возможные коды использованы для кодирования реальных команд процессорного ядра CPU12. Если на этапе выборки кода команды из памяти произошло считывание несуществующего кода команды, то генерируется запрос на немаскируемое прерывание.

• Программное прерывание — инструкция SWI. Система команд МК 68HC12/HCS12 имеет инструкцию программного прерывания, которая позволяет перейти к исполнению подпрограммы прерывания из прикладной программы.

Маскируемые прерывания

• Прерывание по внешнему запросу . Все МК 68HC12/HCS12 имеют вывод внешнего маскируемого прерывания . Активный уровень сигнала для генерации запроса на прерывание — логический 0. В некоторых приложениях требуется принять запросы от нескольких внешних источников сигналов. Для таких случаев следует использовать дополнительный логический элемент, который объединяет запросы от всех источников по логике ИЛИ (рис. 4.16). Если запрос на вход   поступил, и МК перешел к выполнению подпрограммы прерывания, то в этой подпрограмме следует опросить линии порта для того, чтобы установить, какой из источников вызвал прерывание. Обработка нескольких объединенных по ИЛИ запросов с программным поиском установившего запрос источника называется поллингом.

1 ... 37 38 39 40 41 42 43 44 45 ... 150
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт.
Комментарии