• Внутренний сброс по сторожевому таймеру (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 делятся на маскируемые и немаскируемые.