1.2.4. Сброс и сторожевой таймер
Функция сброса (Reset) необходима для инициализации важнейших элементов МК: схемы управления и синхронизации, программного счетчика (он устанавливается в состояние 000СН), управляющих регистров и портов (для определения их состояния после сброса для разных моделей МК, см. приложение 1).
Функция сброса активируется в следующих случаях:
- при подаче низкого уровня на вход /RESET (только для модели 40);
- при включении питания VСС;
- при переполнении сторожевого таймера WDT;
- при восстановлении из режима STOP.
В последнем случае (так называемый "теплый" старт) и в случае переполнения сторожевого таймера в режиме STOP порты и управляющие регистры не реинициализируются.
Функция сброса используется также для защиты памяти МК от падения напряжения питания. Это обеспечивается включением функции сброса при падении питающего напряжения VСС ниже порога защиты VLV (Low Voltage) -2-.6 В. Если уровень напряжения не снизится ниже уровня работоспособности КМОП-логики VCMOS (1.2 В), то возможно сохранение содержимого памяти МК и продолжение нормальной работы после восстановления VСС и автосброса. Это позволяет защитить МК от кратковременных "провалов" питающего напряжения.
Пока сброс активен, на выход /AS подаются импульсы внутренней синхронизации, выход /DS имеет низкий потенциал, R//W -высокий.
Обобщенная структурная схема сброса и сторожевого таймера показана на рис. 1.7.
Рис. 1.7. Схема сброса/сторожевого таймера
Схема содержит генератор сигнала внутреннего сброса, синхронизируемого импульсами основного генератора XTAL. Этот генератор обеспечивает минимальную длительность сигнала сброса 18 периодов TpC частоты XTAL. Запуск генератора осуществляется через фильтр длительности в 4 TpC. Иначе говоря, если длительность запускающего сигнала будет меньше 4 TpC, то сброса не произойдет. Если запускающий сигнал длиннее 18 TpC, то сброс будет удерживаться на время этого сигнала плюс 18 TpC.
Объединение сигналов запуска сброса осуществляется по схеме "монтажное ИЛИ", поэтому к внешнему выводу МК /RESET (только для модели 40) можно подключать схемы с выходными каскадами с открытым стоком. Для сброса МК с помощью кнопки SB "Сброс" следует применять внешнюю RC-цепь, показанную на том же рисунке. Для возможности использования RC-цепи вход запуска дополнен триггером Шмитта.
Таймер автосброса POR (Power-On Reset) и сторожевой таймер WDT (Watch-Dog Timer) выполнены в виде пересчетной цепи, которая, в общем случае, синхронизируется от дополнительного RC-генератора GRC или от основного генератора XTAL. Таймер POR имеет для всех моделей постоянное время, а таймер WDT -программируемое (за исключением моделей 02, 03, 04 и 08).
Запуск таймера автосброса POR осуществляется в следующих случаях:
- если уровень VСС поднимается выше уровня VLV;
- если становится активным сигнал восстановления из режима STOP;
- если имеет место окончание счета сторожевого таймера WDT.
В первом случае сигнал запуска вырабатывается специальным компаратором А. Во втором случае паразитные всплески сигнала источника подавляются фильтром 12 нс.
Во всех этих случаях происходит запуск таймера автосброса POR, время задержки которого гарантирует окончание переходных процессов в цепи питания VСС и выход на нормальный режим основного генератора синхронизации XTAL, после чего корректно выполняется внутренний сброс МК.
При восстановлении из режима STOP в случае применения LCили RC-времязадающих цепей основного генератора (см. п.1.2.3) нет необходимости выдерживать задержку автосброса, т.к. эти конфигурации генератора имеют малое время установления. Для сокращения задержки восстановления из режима STOP в этом случае сигнал от источника может быть подан непосредственно на вход запуска генератора сигнала сброса. При этом необходимо, чтобы сигнал от источника восстановления имел длительность не менее 4 TpC.
В МК, имеющих расширенную группу регистров F (модели 03, 06, 30, 31, 40), управление схемой сброса / сторожевого таймера осуществляется с помощью регистров режима сторожевого таймера WDTMR (Watch-Dog Timer Mode Register) и режима восстановления из режима STOP-SMR (STOP-Mode Recovery Register). Логика управления понятна из рисунка. Следует отметить, что поскольку генератор основной синхронизации выключается в режиме STOP, прежде чем перейти в этот режим необходимо, чтобы бит D4 WDTMR был установлен в состояние 0. Необходимо помнить, что регистр WDTMR доступен для записи только в течение первых 64 тактов (128 TpC) процессора после сброса, вызванного любым источником. Назначение разрядов регистра WDTMR полностью показано на рис. 1.8.
Рис. 1.8. Регистр WDTMR
Запуск и обновление сторожевого таймера осуществляется специальной командой WDT в рабочем режиме выполнения программы RUN. После однократного выполнения этой команды сторожевой таймер постоянно разрешен. Поэтому программа МК должна предусматривать периодическое повторение (с периодом, меньшим установленного времени сторожевого таймера) команды WDT. Это должно быть обеспечено программистом. В этом случае, при нормальной работе процессора сторожевой таймер будет периодически перезапускаться и не достигнет состояния окончания счета. При "зависании" процессора сторожевой таймер достигает состояния окончания счета, что вызывает запуск автосброса МК и выполнение программы с начала. Работа WDT в режимах HALT и STOP разрешается путем программирования соответствующих битов D2 и D3 регистра WDTMR. В этом случае, при переходе в соответствующий режим, WDT продолжает свою работу.
В модели 03 сторожевой таймер имеет фиксированную задержку 15 мс (при синхронизации от GRC) или 512TpC (при синхронизации от XTAL), а состояние битов D1 и D0 регистра WDTMR должно быть 01.
В моделях 02, 04, 08 регистры WDTMR и SMR отсутствуют, поэтому схема имеет фиксированную конфигурацию (соответствует изображенным на рис.1.7 положениям переключателей). Разрешение работы сторожевого таймера в режиме HALT осуществляется исполнением специальной команды WDH (выполняется до перехода в режим HALT). В режиме STOP в этих МК работа сторожевого таймера запрещена.
Запрещение работы сторожевого таймера во всех моделях МК происходит при выполнении внутреннего сброса. Исключение составляют некоторые модели (или отдельные модификации) имеющие программируемый (масочно или однократно) бит постоянного разрешения WDT (Permanent WDT). Если этот бит запрограммирован, то WDT постоянно разрешен и запрещение работы его после сброса не происходит.
Таким образом, функция сброса и сторожевой таймер обеспечивают корректный начальный запуск программы и перезапуск в случае сбоя программы.
0 комментариев