Пока сброс активен, на выход /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 постоянно разрешен и запрещение работы его после сброса не происходит.
Таким образом, функция сброса и сторожевой таймер обеспечивают корректный начальный запуск программы и перезапуск в случае сбоя программы.
1.2.5. Порты ввода/вывода
МК Z8 имеет до 32 линий ввода/вывода, сгруппированных в четыре восьмибитных порта Р0, Р1, Р2, Р3 (физическое наличие соответствующих выводов портов для каждой модели МК указано в табл.1.2). Порты размещены в адресном пространстве регистрового файла по адресам соответственно 00H, 01H, 02H, 03H.
Порты Р0, Р1 и Р2 построены по типовой структуре, показанной на рис. 1.9. Каждый порт имеет входной и выходной регистры, входной и выходной буферы. Выходные буферы -двухтактные, однако, могут программироваться как схемы с открытым стоком (Open Drain). Кроме того, выходные буферы могут быть переведены в малошумящий режим.
Рис. 1.9. Структурная схема портов P0, P1 и P2
Работа линий портов может программироваться на ввод или вывод: Р0 -потетрадно, Р1 -побайтно (т.е. целиком), а Р2 -побитно (см. табл. на рис. 1.9). Порты могут работать в режиме синхронного программного обмена, в режиме обмена с квитированием, в режиме стробируемого ввода/вывода.
При синхронном программном обмене ввод или вывод реализуется в момент исполнения команд чтения или записи регистра порта. При этом внешнее устройство должно быть постоянно готово к обмену.
Режим обмена с квитированием или "рукопожатием" (Handshake) заключается в том, что МК и внешнее устройство обмениваются сигналами (квитанциями) ГОТОВНОСТИ к обмену -RDY (Ready) и ДЕЙСТВИТЕЛЬНОСТИ ДАННЫХ -/DAV (Data is Available). Ввод и вывод с квитированием подробно поясняются временными диаграммами, рис.1.10 и 1.11.
Состояние 1. | Сигнал RDY имеет высокий уровень, что указывает MK принять данные. |
Состояние 2. | Внешнее устройство помещает данные на выводы порта и активизирует сигнал /DAV. Это приводит к фиксации данных во входном регистре порта МК и генерирования запроса прерывания. |
Состояние 3. | МК переводит выход RDY в низкое состояние, сигнализируя внешнему устройству, что данные зафиксированы. |
Состояние 4. | Внешнее устройство возвращает линию /DAV в высокое состояние после получения низкого уровня сигнала RDY. |
Состояние 5. | МК должен среагировать на запрос прерывания и прочитать содержимое порта для завершения последовательности квитирования. На линии RDY устанавливается высокий уровень тогда и только тогда, когда порт уже прочитан и /DAV имеет высокий уровень. Это возврощает интерфейс в его начальное значение. |
Рис. 1.10. Ввод с квитированием
Состояние 1. | Вход RDY имеет высокий уровень, что указывает на готовность внешнего устройства к приему данных. |
Состояние 2. | МК записывает данные в регистр порта для инициализации передач данных. Запись в порт новых данных и переход выхода /DAV в состояние низкого уровня происходит только тогда, когда RDY имеет высокий уровень. |
Состояние 3. | Внешнее устройство делает уровень сигнала RDY низким после фиксации данных. Низкий уровень RDY вызывает генерирование запроса прерывания. МК может уже записать новые данные в ответ на низкий уровень DRY, однако эти данные не выводятся до состояния 5. |
Состояние 4. | Уровень выхода /DAV МК становится высоким в ответ на переход выхода RDY в состояние низкого уровня. |
Состояние 5. | Уровень выхода /DAV остается высоким, внешнее устройство может установить высокий уровень RDY, что возвращает интерфейс в его начальное состояние. |
Рис. 1.11. Вывод с квитированием
Для приема и передачи сигналов квитирования используются соответствующие линии ввода/вывода порта Р3 (см. табл. на рис.1.9). Выбор направления обмена с квитированием осуществляется в соответствии с направлением, запрограммированным для старшей тетрады порта Р0 и для старшего бита порта Р2.
Режим стробируемого ввода/вывода реализуется как частный случай обмена с квитированием по схеме рис. 1.12.
Рис. 1.12. Стробируемый ввод/вывод
а) вывод; б) ввод.
Дополнительно к основным функциям порты P0 и P1 могут использоваться для интерфейса внешней памяти (Р0 -старшие разряды адреса A8...A15, P1 -мультиплексированная шина адреса/данных AD0...AD7), а порт P2 -для последовательного интерфейса SPI в модели 06 (P20 -вход DI, P27 -выход D0).