Выбрать главу

Если OCR1A содержит значение $0000 или конечное значение (ТОР), вывод ОС1 остается в том состоянии, которое определяется установками СОМ1А1 и СОМ1А0. Это показано в табл. 2.11.

В режиме ШИМ флаг переполнения таймера 1 (TOV1) устанавливается, когда счетчик изменяет направление счета в точке $0000. Прерывание по переполнению таймера 1 работает как при нормальном режиме работы таймера/счетчика, т. е. оно выполняется, если установлен флаг ТОV1 и разрешены соответствующие прерывания. То же самое касается флага совпадения и прерывания по совпадению.

Сторожевой таймер

Сторожевой таймер работает от отдельного встроенного генератора, работающего на частоте 1 МГц (это типовое значение частоты для питания 5 В). Управляя предварительным делителем сторожевого таймера, можно задавать интервал сброса таймера от 16 до 2048 мс. Команда WDR сбрасывает сторожевой таймер. Для работы сторожевого таймера можно выбрать одно из восьми значений частоты, что позволяет в широких пределах изменять время между исполнением команды WDR и сбросом процессора. При отработке периода работы сторожевого таймера, если не поступила команда WDR, AT90S2313 сбрасывается, выполнение программы продолжается с вектора сброса.

Для предотвращения нежелательного отключения сторожевого таймера, для его запрещения должна выполняться определенная последовательность, которая описана при рассмотрении регистра WDTCR.

Рис. 2.35. Регистр управления сторожевым таймером — WDTCR

Биты 7…5 — в AT90S2313 зарезервированы и всегда читаются как 0.

Бит 4 — YVDTOE — разрешение выключения сторожевого таймера. При очистке бита WDE этот бит должен быть установлен, иначе работа сторожевого таймера не прекращается. Через четыре такта после установки этого бита он аппаратно сбрасывается.

Бит 3 — WDE — разрешение сторожевого таймера. Если бит установлен, работа сторожевого таймера разрешена, если бит сброшен — запрещена. Сброс бита производится только в том случае, если бит WDTOE установлен в 1.

Биты 2…0 — WDP2…0 — биты предварительного делителя сторожевого таймера. Если работа сторожевого таймера разрешена, эти биты определяют предварительный коэффициент деления для сторожевого таймера. В табл. 2.12 приведены различные значения установок предварительного делителя и соответствующие им временные интервалы при напряжении питания Vcc = 5 В.

Для запрещения включенного сторожевого таймера должна исполняться следующая процедура:

1. Одной командой записать 1 в WDTOE и WDE. Единица в WDE должна записываться даже в том случае, если этот бит был установлен перед началом процедуры остановки таймера.

2. В течение следующих четырех тактов процессора необходимо записать в WDE логический 0, при этом работа сторожевого таймера запрещается.

2.7. Чтение и запись в энергонезависимую память

Регистры доступа к энергонезависимой памяти (EEPROM) расположены в пространстве ввода/вывода.

Время записи лежит в диапазоне 2,5…4 мс и зависит от напряжения питания. Если программа пользователя производит запись в энергонезависимую память, должны быть предприняты некоторые меры предосторожности. При использовании в источнике питания конденсаторов большой емкости напряжение питания нарастает и спадает достаточно медленно. Это приводит к тому, что процессор некоторое время работает при напряжении питания ниже минимума, достаточного для нормальной работы схем тактирования. При этом он может совершать нежелательные переходы, попадая на части программы, производящие запись в EEPROM. В таких случаях для защиты содержимого EEPROM необходимо использовать внешние схемы, формирующие сигнал сброса при уменьшении напряжения питания. При использовании внешнего супервайзера питания (например, К1171СП47 — для него граница срабатывания составляет 4,7 В), подающего на вывод Reset напряжение низкого уровня при напряжении питания ниже допустимого, практически можно быть уверенным в том, что содержимое памяти EEPROM не будет портиться независимо от емкости конденсатора на выходе источника питания.

При записи или чтении EEPROM процессор приостанавливается на 2 машинных цикла до начала выполнения следующей команды.

Рис. 2.36. Регистр адреса EEPROM — EEAR