МК состоит из статических триггеров, регистров и счётчиков. После подачи питания их надо принудительно установить в определённое логическое состояние, иначе из-за всеобщего хаоса выполнение программы станет непредсказуемым. Импульс начального сброса подаётся на выводы RST (ReSeT) или RES (ин-
версный RESet). Отличаются они между собой, соответственно, положительной (Рис. 2.16) и отрицательной (Рис. 2.17) формой сигнала.
Резисторы RRST и Rres полупроводниковые. Их роль играют не полностью закрытые полевые транзисторы, находящиеся внутри МК. Назначение резисторов — обеспечить привязку входа триггера Шмитта DD1 к общему проводу или к шине питания. Тем самым цепь сброса не будет «висеть в воздухе» и не будет ловить внешние помехи. Следует учитывать, что полупроводниковые резисторы, в отличие от обычных, имеют нелинейную зависимость сопротивления от напряжения питания (Рис. 2.18). Кроме того, по технологическим причинам трудно обеспечить их одинаковые сопротивления от партии к партии и от микросхемы к микросхеме. Разброс неконтролируемый и составляет десятки процентов.
Диод VD1 защищает вход сброса от статического электричества и случайных выбросов отрицательного напряжения. Ток через диод в импульсе не должен превышать 10...20 мА.
МК, совместимые с MCS-51, традиционно используют схему «положительного» сброса. С этим связана поучительная история. Старожилы помнят, что первые микросхемы 18051 (без буквы «С» в названии) в начале 1980-х годов делались по технологии и-МОП. Как следствие, контроллер потреблял значительный ток в статике. Для снижения энергопотребления разработчики применили следующий трюк — вход сброса RST совместили с входом подачи резервного питания от внешней батареи. Если основное питание пропадало, то активизировалось резервное. При этом на входе RST постоянно был ВЫСОКИЙ уровень, который приостанавливал работу ядра ЦПУ, но сохранял информацию в ОЗУ. Если бы сброс производился импульсом отрицательной формы, то разработчики не смогли бы воспользоваться таким техническим решением.
В дальнейшем произошёл переход на более прогрессивную КМОП-технологию, при которой логические вентили практически не потребляют ток в статике. Теперь сигнал сброса может иметь любую полярность с «привязкой» входного резистора к общему проводу или к питанию.
Интересное наблюдение. Фирмы, разрабатывающие новые семейства МК, почему-то дружно используют схему с «отрицательным» сбросом. Её и предлагается ввести в состав идеализированного МК.
Организация начального сброса
Начальное обнуление современных МК производится в следующих случаях (Рис. 2.19):
• Power-On — внутренний автоматический сброс, который активизируется сразу после подачи питания;
• Brown-Out — сброс от внутреннего детектора «просадок» питающего напряжения;
• External Reset — внешний сброс НИЗКИМ уровнем на выводе RES;
• Watch-Dog — сброс от внутреннего «сторожевого» таймера при случайной остановке работы ЦПУ или зависании программы;
• JTAG — программный сброс через отладочный интерфейс JTAG.
Все источники сброса равноценны, что подчёркивает логический элемент «ИЛИ», находящийся внутри МК. Установка режимов сброса производится конфигурационными битами, а также программно-доступными регистрами из области SFR. Настраиваться могут: порог срабатывания детектора «просадок» напряжения, длительность времени задержки таймера ожидания Watch-Dog, моменты включения/отключения генератора G1.
Узел аппаратного сброса Power-On присутствует во всех без исключения МК. Если напряжение питания стабильно во времени и подаётся резким скачком, то внешние элементы для сброса теоретически вообще не нужны. Обнуление производится автоматически узлом Power-On по достижению определённого порога.
При высокой скорости нарастания питания (ориентировочно за время не более 1...5 мс) вход сброса RES подключают к цепи VCC тремя способами: напрямую, че-
рез внешний резистор сопротивлением 1...10 кОм или оставляют свободным, полагаясь на внутренний резистор МК.
Первый вариант полностью устраняет путь помехам, но исключает «кнопочный» сброс и возможность повторного программирования. Второй вариант позволяет подключить кнопку сброса, что удобно при лабораторном макетировании в домашних условиях. Третий вариант разрешается при отсутствии помех и наличии внутри МК подтягивающего резистора Rres сопротивлением до 100 кОм.
Если напряжение питания нарастает более длительное время (для разных семейств МК по-разному), то рекомендуется установка внешних RC-цепочек (Рис. 2.20, а, б) со стандартными значениями:
• R1 = 10 кОм, С1 = 0.1 мкФ при времени нарастания 5...20 мс. Например, подача питания VCC переключателем, который располагается между интегральным стабилизатором напряжения +5 В и МК;
• R1 = 10 кОм, С1 = 10 мкФ при времени нарастания 20...100 мс. Это актуально, например, при включении устройства в сеть 220 В общим тумблером. Если ёмкость конденсатора С1 больше 1 мкФ, то для ускорения его разряда ставят диод VD1 типа 1N4148 (КД522Б), а для защиты входа сброса от перенапряжения ещё и резистор R2. Эти перестраховки продлевают МК жизнь.
Узел детектора Brown-Out появился в архитектуре МК сравнительно недавно. В частности, в семействе Atmel AT90S его ещё не было, что приводило к непредсказуемым сбоям и самопроизвольному стиранию ячеек памяти EEPROM. Физика процессов простая. При критически низком напряжении питания узел программирования памяти ещё работоспособен, а ЦПУ уже не управляем. Следовательно, в ячейки памяти может заноситься произвольная информация. Налицо конструктивный дефект, поэтому семейство AT90S было полностью снято с производства и заменено семействами ATmega, ATtiny, в которых детектор Brown-Out предусмотрен на постоянной основе.
Детекторная цепь измеряет напряжение питания VCC и вырабатывает сигнал сброса ЦПУ при достижении программно заданного порога в районе 2...4 В. Имеется гистерезис 0.1...0.15 В, что препятствует повторному рестарту при небольших колебаниях напряжения. В результате повышается помехоустойчивость при питании от полуразряженных батарей/аккумуляторов, а также при мощных электромагнитных наводках.
Детектор получил название «Brown-Out», поскольку отслеживает кратковременные «коричневые» (англ. «brown») просадки напряжения. Почему «коричневые»? Потому что этот цвет более светлый, чем чёрный, которым на сленге обозначают полное пропадание питания «Black-Out».
Детектор Brown-Out можно включить и выключить установкой определённых конфигурационных битов. Через них же задаются пороги срабатывания напряжения 2...4 В, которые, кстати, имеют приличный технологический разброс.
Здесь находится «подводный камень», о который часто «спотыкаются» разработчики, если устанавливают порог срабатывания детектора Brown-Out равным или выше, чем рабочее питание. Типичный пример: VCC = 3.6 В, а конфигурационные биты настроены на порог 4 В. В таком случае МК примерно через секунду после подачи питания сбросится внутренним сигналом Brown-Out, затем вновь начнёт программу и опять сбросится, не успев толком ничего сделать.
Напрашивается вывод — первичную отладку программного обеспечения следует проводить при выключенном узле Brown-Out, но затем обязательно его включить, проверить и постоянно эксплуатировать на объекте.
Узел Watch-Dog, он же «сторожевой таймер», «пограничный пес», «собака в карауле». Если сторожевой таймер включен, то он постоянно увеличивает значение своего счётчика. Через промежуток времени, равный «тайм-ауту» Watch-Dog, выполняется принудительный сброс МК. Однако, пользователь имеет возможность вставить в программу специальную команду WDR (Watch-Dog Reset), чтобы обнулить счётчик и тем самым отсрочить момент сброса. Если отсрочку производить вовремя, то устройство будет нормально функционировать, а разработчик будет уверен в том, что его детище «не зациклилось». Время «тайм-аута» задаётся регистрами из области SFR и может составлять от одной миллисекунды до нескольких секунд.
Если программа почему-то «зависла» на одном месте или произошёл сбой, то очередная команда WDR в ЦПУ не поступает, «спящий дог» просыпается и принудительно сбрасывает МК. Программа стартует заново, как после нажатия кнопки сброса. Тем самым предотвращаются аварийные остановки программы, что полезно при автономной работе устройства в необслуживаемых человеком пунктах.
Такт ируется Watch-Dog от отдельного внутреннего Ж*-генератора G1 частотой 0.1..Л МГц, что позволяет ему выполнять свою функцию даже при полном пропадании внешнего тактового сигнала. Частота генерации зависит от температуры и напряжения питания. Общее разрешение/запрет на работу «сторожевого таймера» устанавливается конфигурационными битами.
Узел Watch-Dog является полезным, но не обязательным для домашнего применения. Чтобы не запутаться, на первых порах его лучше вообще не использовать. Благо, при начальных заводских настройках конфигурационных битов, Watch-Dog по умолчанию отключён и никак не влияет на работу МК.
Узел внешнего сброса активизируется, если на входе RES в течение нескольких микросекунд удерживается НИЗКИЙ уровень. На более короткие импульсы вход сброса не реагирует. Это сделано специально, чтобы повысить помехоустойчивость. Источниками внешнего сброса могут служить: механическая кнопка, управляющий логический уровень, микросхема монитора питания, а также любой узел автоматики, имеющий выход «сухой контакт» или «открытый коллектор».
Узел сброса через JTAG характерен только для самых новых МК, в которых присутствует одноимённый интерфейс. Программисту предоставляется возможность при отладке послать команду с условным названием «МК_RESET», принудительно сбрасывая МК в начальное положение. Такая технология полезна для опытных разработчиков, поскольку требует специальных знаний и навыков.
Выбор конкретной схемы сброса зависит от условий эксплуатации. Например, если суммарная ёмкость конденсаторов фильтра между цепями VCC и GND составляет более 1000 мкФ, то, скорее всего, понадобится внешняя RC-цепочка (Рис. 2.20, а, б). Если рядом с выводом RES на печатной плате проходит силовая коммутационная цепь, то для выяснения причин сбоев полезно временно соединить линию сброса МК с питанием. Если прибор располагается вблизи от источника мощных индустриальных помех, то на входе сброса рекомендуется поставить дополнительную микросхему супервизора питания, которая продублирует узел Brown-Out. Логика рассуждений простая. Копеечный супервизор «кашу маслом не испортит», зато он сможет спасти в непредвиденной ситуации.