- Сброс по включению питания.
- Сброс по внешнему сигналу /MCLR при нормальной работе.
- Сброс по внешнему сигналу /MCLR в режиме SLEEP.
- Сброс по окончанию задержки таймера WDT при нормальной работе.
- Сброс по окончанию задержки таймера WDT в режиме SLEEP.
Есть еще несколько исключений. Программный счетчик всегда сбрасывается в ноль (0000h). Биты статуса TO и PD устанавливаются или сбрасываются в зависимости от варианта сброса. Эти биты используются программой для определения природы сброса.
Алгоритм сброса при включении питания
Кристалл PIC16C84 имеет встроенный детектор включения питания. Таймер запуска начинает счет выдержки времени после того, как напряжение питания пересекло уровень около 1,2...1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер-выдержка на стабилизацию кварцевого генератора.
Программируемый бит конфигурации позволяет разрешать или запрещать выдержку от встроенного таймера запуска. Выдержка запуска меняется от экземпляров кристалла, от питания и температуры.
Таймер на стабилизацию генератора отсчитывает 1024 импульса от начавшего работу генератора. Считается, что кварцевый генератор за это время вышел на режим. При использовании RC генераторов выдержка на стабилизацию не производится.
Затем включается таймер ожидания внешнего сброса /MCLR. Это необходимо для тех случаев, когда требуется синхронно запустить в работу несколько PIC контроллеров через общий для всех сигнал /MCLR.
Если такого сигнала не поступает, то через время Tost вырабатывется внутренний сигнал сброса и контроллер начинает ход по программе. Время Tost программируется битами конфигурации в EEPROM.
Здесь существует проблема, когда Vdd нарастает слишком медленно и все выдержки на запуск, а питание еще не достигло своего минимального значения Vdd(min) работоспособности. В таких случаях рекомендуем использовать внешние RC цепочки для сброса по /MCLR. На рис. 1 показана схема такой цепочки.
Схема сброса
WatchDog таймер
Watchdog таймер представляет собой полностью независимый встроенный RC генератор, который не требует никаких внешних цепей. Он будет работать, даже если основной генератор остановлен, как это бывает при исполнении команды SLEEP.
Таймер вырабатывает сигнал сброса. Выработка таких сбросов может быть запрещена путем записи нуля в специальный бит конфигурации WDTE. Эту операцию производят на этапе прожига микросхем.
Выдержка времени WDT
Номинальная выдержка WDT составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, от особенностей типов микросхем. Если требуются большие задержки, то к WDT может быть подключен встроенный делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд.
Команды "CLRWDT" и "SLEEP" обнуляют WDT и делитель, если он подключен к WDT. Это сначала запускает выдержку времени и предотвращает на некоторое время выработку сигнала сброс. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит "TO" в регистре статуса (f3). В приложениях с высоким уровнем помех, содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени. Следует учесть, что наихудшей комбинацией является: Vdd=min, температура=max и max коэффициент деления делителя - это приводит к самой большой выдержке времени, она может достигать нескольких секунд.
Источник: electronica.h10.ru