# 3.WDTCR (сторожевой регистр)
## Теория
[16. Таймер и счетчик со сторожевым регистром](/QEqiBwRDTyKwdVh2CG5uog)
### Регистр WDTCR

#### Очень кратко:
7-5 - Не нужны
4 WDTOE - (turn off enable) - если 1, то можно выключить
3 WDE- (enable) - если 1, то работает. Если 0, то не работает только если у 4 - 1
2-0 WDP (timer prescaler) - число от 0 до 7 определяющее время для сброса. Минимальное для 0 - 16тиков (17мс), каждое последующее значение увеличивает время в 2 раза
#### Подробно на инглише
1. Bits 7..5 – Res: Reserved Bits
These bits are reserved bits in the ATmega16 and will always read as zero.
2. Bit 4 – WDTOE: Watchdog Turn-off Enable
This bit must be set when the WDE bit is written to logic zero. Otherwise, the Watchdog will not be disabled. Once written to one, hardware will clear this bit after four clock cycles.
3. Bit 3 – WDE: Watchdog Enable
When the WDE is written to logic one, the Watchdog Timer is enabled, and if the WDE is written to logic zero, the Watchdog Timer function is disabled. WDE can only be cleared if the WDTOE bit has logic level one. To disable an enabled Watchdog Timer, the following procedure must be followed:
* In the same operation, write a logic one to WDTOE and WDE. A logic one must be written to WDE even though it is set to one before the disable operation starts.
* Within the next four clock cycles, write a logic 0 to WDE. This disables the Watchdog.
5. Bits 2..0 – WDP2, WDP1, WDP0: Watchdog Timer Prescaler 2, 1, and 0
The WDP2, WDP1, and WDP0 bits determine the Watchdog Timer prescaling when the Watchdog Timer is enabled.
#### Вроде корректный перевод:
Bits 7..5 - Res: Reserved bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при считывании всегда будут 0.
Bit 4 - WDTOE: Watch Dog Turn Off Enable - Разрешение отключения сторожевого таймера
Данные биты должны быть установлены в состояние 1 при очистке бита WDE. В ином случае сторожевой таймер не будет запрещен. Установленный бит аппаратно очищается после четырех тактовых циклов. См. описание бита WDE в процедуре запрета сторожевого таймера.
Bit 3 - WDE: Watch Dog Enable - Разрешение сторожевого таймера
Если бит WDЕE установлен в состояние 1 (сторожевой таймер разрешен) и если бит WDE очищен, то функционирование сторожевого таймера запрещено. Бит WDE может быть очищен только если установлен бит WDTOE. Для запрещения разрешенного сторожевого таймера необходимо выполнить следующую процедуру:
В одной операции записать логическую 1 в WDTOE и WDE. Логическая 1 должна быть записана в WDE даже если этот бит был установлен перед началом операции запрета сторожевого таймера.
За время последующих четырех тактовых циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен.
Bits 2..0 - WDP2, WDP1, WDP0: Watch Dog Timer Prescaler 2, 1 and 0 - биты установки коэффициента предварительного деления сторожевого таймера
Состояния битов WDP2, WDP1 и WDP0 определяют коэффициент предварительного деления тактовой частоты разрешенного сторожевого таймера. Коэффициенты и соответствующие им промежутки времени представлены в таблице.
| Wdp2 | Wdp1 | Wpd0 | Длительность цикла сторожевого таймера | Приблизительный Timeout на 3 вольтах|
| -------- | -------- | -------- | -------- | -------- |
| 0 | 0 | 0 | 16 тыс. циклов | 17 ms |
| 0 | 0 | 1 | 32 тыс. циклов | 34.3 ms |
| 0 | 1 | 0 | 64 тыс. циклов | 68.5 ms |
| 0 | 1 | 1 | 128 тыс. циклов | 0.14 s |
| 1 | 0 | 0 | 256 тыс. циклов | 0.27 s |
| 1 | 0 | 1 | 512 тыс. циклов | 0.55 s |
| 1 | 1 | 0 | 1024 тыс. циклов | 1.1 s |
| 1 | 1 | 1 | 2048 тыс. циклов | 2.2 s |
## Синтаксис
WDR - сбросить сторожевой таймер
## Пример кода (с даташита)
```cp=
WDT_off:
; Reset WDT
WDR
; Write logical one to WDTOE and WDE
in r16, WDTCR
ori r16, (1<<WDTOE)|(1<<WDE)
out WDTCR, r16
; Turn off WDT
ldi r16, (0<<WDE)
out WDTCR, r16
ret
```