F20-23 (1041603), страница 26
Текст из файла (страница 26)
регистр указателястека сбрасывается, стек фактически теряется, хотя данные в нем не изменяются.Защелки портов ввода/вывода сбрасываются в состояние 0xFF (все логические единицы), активируявнутренние слаботоковые подтяжки, которые удерживают на внешних портах ввода/вывода высокийлогический уровень. Следует иметь ввиду, что слаботоковые подтяжки отключаются во время сброса ивключаются, когда МК выходит из состояния сброса. Это позволяет уменьшить энергопотребление, когда МКудерживается в состоянии сброса. Если источником сброса является схема слежения за напряжением питания,то на выводе /RST удерживается низкий логический уровень до истечения таймаута сброса по питанию.При выходе из состояния сброса МК использует внутренний тактовый генератор, работающий поумолчанию на тактовой частоте 2 МГц.
Программный счетчик (РС) сбрасывается и выполнение программыначинается с адреса 0x0000. Информация о выборе и настройке источников системного тактового сигналаприведена в разделе 14. Сторожевой таймер включен и настроен на максимальный таймаут. (Подробноеописание сторожевого таймера приведено в разделе 13.8).Семь источников могут перевести МК в состояние сброса: включение/исчезновение питания, внешнийвывод /RST, внешний сигнал CNVSTR, программный сброс, компаратор 0, детектор исчезновениятактирования, сторожевой таймер. Каждый источник сброса описан ниже.Рисунок 13.1. Структурная схема источников сбросаVDDПорт ввода/выводаМатрицаCNVSTRСхема слеженияза питанием(CNVSTRразрешение сброса)Компаратор 0CP0+(CP0разрешение сброса)ДетекторисчезновениятактированияТактовыеимпульсыГенераторPREWDTStrobeENWDTEnableMCDEnableВнутреннийтактовыйгенераторКаналсбросаWDTENXTAL2ВыборгенератораCIP-51процессорноеядроПрограммныйсбросСистемныйсбросБлок обработкипрерываний127/RST(монтажное «ИЛИ»)+-CP0-XTAL1Таймаутсброса попитанию+-Ред.
1.4C8051F020/1/2/313.1. Сброс при включении питания (Power-on Reset - POR)МК C8051F020/1/2/3 содержат схему слежения за напряжением питания, которая удерживает МК всостоянии сброса, пока напряжение питания VDD не превысит в процессе включения уровень VRST. (См.временную диаграмму на рис.13.2 и электрические характеристики в табл.13.1). В течение таймаута схемыслежения за напряжением питания (100 мс) на выводе /RST удерживается низкий логический уровень, чтопозволяет напряжению питания стабилизироваться.При завершении сброса типа POR флаг PORSF (RSTSRC.1) аппаратно устанавливается в 1. Все другиефлаги сброса в регистре RSTSRC являются неопределенными. Флаг PORSF сбрасывается в 0 при сбросе отлюбого другого источника.
Т.к. при сбросе любого типа выполнение программы начинается с одного и того жеадреса (0x0000), программа может опросить флаг PORSF, чтобы определить, было ли включение питанияпричиной сброса. Содержимое внутренней памяти данных после сброса типа POR следует считатьнеопределенным.Схема слежения за напряжением питания включается соединением вывода MOVENнепосредственно с шиной питания VDD. Вывод MOVEN рекомендуется использовать именно такимобразом.вольтыРисунок 13.2.
Временная диаграмма работы схемы слежения за напряжением питания2.70VRST2.55VDD2.01.0tЛог. 1/RST100мс100мсЛог. 0Сброс при включениипитания(Power-On Reset)Сброс от схемы слеженияза напряжением питания(VDD Monitor Reset)13.2. Сброс при исчезновении питания (Power-fail Reset – PFR)Когда при выключении или сбое питания напряжение питания VDD опускается ниже уровня VRST,схема слежения за напряжением питания установит на выводе /RST низкий логический уровень и переведетCIP-51 в состояние сброса. Когда VDD превысит уровень VRST, CIP-51 выйдет из состояния сброса точно также, как при сбросе типа POR (см. рис.13.2). Следует иметь ввиду, что, хотя содержимое внутренней памятиданных и не изменяется при сбросе типа PFR, невозможно определить, опускалось ли напряжение VDD нижеуровня, необходимого для сохранения данных. Если флаг PORSF установлен в 1, данные нельзя более считатьдействительными.Ред.
1.4128C8051F020/1/2/313.3. Внешний сбросВнешний вывод /RST позволяет внешней схеме перевести МК в состояние сброса. Подача на вывод/RST сигнала с низким активным уровнем заставит МК перейти в состояние сброса. Несмотря на наличиевнутренних слаботоковых подтяжек, желательно обеспечить на выводе /RST внешние подтягивающие и/илиразвязывающие цепи, чтобы предотвратить ложные сбросы, вызванные шумом. После снятия сигнала с низкимактивным уровнем с вывода /RST МК будет оставаться в состоянии сброса еще по крайней мере 12 тактовыхциклов. При завершении внешнего сброса устанавливается в 1 флаг PINRSF (RSTSRC.0).13.4. Программный сбросУстановка в 1 бита SWRSEF вызовет сброс типа POR, который описан в разделе 13.1.13.5. Сброс от детектора исчезновения тактированияДетектор исчезновения тактирования (Missing Clock Detector – MCD) фактически представляет собойодновибратор, который управляется системным тактовым сигналом.
Если системный тактовый сигнал исчезнетболее чем на 100мкс, то одновибратор сработает и сгенерирует сброс. После сброса типа MCD будетустановлен в 1 флаг MCDRSF (RSTSRC.2), показывая, что источником сброса был MCD; в иных случаях этотбит читается как 0. Состояние вывода /RST не влияет на сброс этого типа. Работа детектора исчезновениятактирования разрешается установкой в 1 бита MSCLKE в регистре OSCICN (см. раздел 14).13.6. Сброс от Компаратора 0Установка в 1 флага C0RSEF (RSTSRC.5) настраивает Компаратор 0 как вход сброса с низкимактивным уровнем.
Компаратор 0 следует включить, используя бит CPT0CN.7 (см. раздел 11), как минимум за20мкс до записи бита C0RSEF, чтобы дребезг на выходе не привел к генерации нежелательного сброса. Когданапряжение на неинвертирующем входе (CP0+) меньше, чем напряжение на инвертирующем входе (CP0-), то,если компаратор 0 настроен как источник сброса, МК перейдет в состояние сброса. После сброса отКомпаратора 0 флаг C0RSEF (RSTSRC.5) будет читаться как 1,показывая, что Компаратор 0 был источникомсброса; в иных случаях этот бит читается как 0. Состояние вывода /RST не влияет на сброс этого типа.13.7. Сброс от внешнего вывода CNVSTRУстановка в 1 флага CNVRSEF (RSTSRC.6) настраивает внешний сигнал CNVSTR как вход сброса сактивным низким уровнем.
Сигнал CNVSTR может появиться на любых выводах портов ввода/вывода Р0, Р1,Р2 или Р3, как описано в разделе 17.1. (Необходимо отметить, что матрица должна быть сконфигурированатаким образом, чтобы сигнал CNVSTR был выведен на соответствующий порт ввода/вывода). Матрицу следуетнастроить и включить до установки бита CNVRSEF. Когда сигнал CNVSTR настроен как источник сброса, онпредставляет собой чувствительный к уровню сигнал с активным низким уровнем.
После сброса от сигналаCNVSTR флаг CNVRSEF (RSTSRC.6) будет читаться как 1,показывая, что сигнал CNVSTR был источникомсброса; в иных случаях этот бит читается как 0. Состояние вывода /RST не влияет на сброс этого типа.13.8. Сброс от сторожевого таймераМК содержит программируемый сторожевой таймер (Watchdog Timer - WDT), работающий независимоот системного тактового сигнала.
WDT переводит МК в состояние сброса в случае своего переполнения. Чтобыпредотвратить сброс, WDT должен перезапускаться из прикладной программы до того, как произойдет егопереполнение. Если в системе происходит программный/аппаратный сбой, не позволяющий программеперезапустить WDT, то WDT переполнится и вызовет сброс. Это предотвращает выход системы из подконтроля.При завершении сброса всех типов WDT автоматически включается и запускается по умолчанию смаксимальным таймаутом. При необходимости WDT можно программно запретить или заблокировать, чтобыпредотвратить его случайное запрещение. После блокирования WDT его нельзя запретить до следующегосистемного сброса.
Состояние вывода /RST не влияет на сброс этого типа.WDT состоит из 21-разрядного таймера, работающего с программируемой тактовой частотой. Этоттаймер измеряет период между операциями записи определенных значений в его регистр управления. Если этотпериод превышает установленный предел, то генерируется сброс от WDT. WDT может быть программноразрешен или запрещен, кроме этого можно заблокировать функцию отключения WDT. Управление WDTосуществляется посредством регистра управления WDT (WDTCN), показанного на рис.13.3.129Ред. 1.4C8051F020/1/2/313.8.1.
Включение/сброс WDTWDT как включается, так и сбрасывается записью значения 0xA5 в регистр WDTCN. Программапользователя должна периодически записывать значение 0xA5 в регистр WDTCN, чтобы предотвратитьпереполнение сторожевого таймера. WDT включается и сбрасывается в результате любого системного сброса.13.8.2. Отключение WDTЗапись в регистр WDTCN значения 0xAD вслед за значением 0xDE отключает WDT. Следующийсегмент программного кода иллюстрирует операцию отключения WDT:CLR EAMOV WDTCN,#0DEhMOV WDTCN,#0ADhSETB EA;;;;запрет всех прерыванийотключениесторожевого таймераразрешение прерыванийМежду записью значений 0xDE и 0xAD должно пройти не более четырех тактовых циклов, иначе операцияотключения игнорируется.
На время этой процедуры следует запретить прерывания во избежание задержкимежду двумя операциями записи.13.8.3. Блокировка отключения WDTЗапись значения 0xFF в регистр WDTCN заблокирует функцию отключения WDT. Будучизаблокированной, операция отключения игнорируется до следующего системного сброса. Запись значения 0xFFне включает и не сбрасывает сторожевой таймер. Приложения, планирующие использовать WDT постоянно,должны записывать значение 0xFF в регистр WDTCN в процессе начальной инициализации.13.8.4.