// Сторожевой таймер тактируется от отдельного встроенного генератора частотой 1 МГц. // Инструкция WDR выполняет сброс сторожевого таймера. // Сторожевой таймер также сбрасывается при выключении или во время сброса микроконтроллера. ------------------------------------------------------ WDTCR=0b00001111; // настройка сторожевого таймера --------------------------------------------------------------------------- //WDTCR // 0000 0000 //0... .... - Зарезервированные //.0.. .... - Зарезервированные //..0. .... - Зарезервированные //...1 .... WDCE - Разрешение изменения сторожевого таймера //.... 1... WDE - Вкл. сторожевого таймера //.... .1.. WDP2 - предделитель //.... ..1. WDP1 - предделитель //.... ...1 WDP0 - предделитель ------------------------------------------------------- //WDCE=1 Данный бит необходимо установить непосредственно перед записью лог. 0 в бит WDE. В противном случае запретить работу сторожевого таймере невозможно. После записи в данный бит лог. 1 он автоматически аппаратно сбросится по истечении четырех тактов синхронизации микроконтроллера. На уровнях безопасности 1 и 2 данный бит необходимо устанавливать также перед изменением настроек предделителя. //WDE=1 1-Вкл. сторожевого таймера 0-Выкл. сторожевого таймера Сбросить бит WDE возможно, только если предварительно установить бит WDCE. 1. Записать лог. 1 в WDCE и WDE одной инструкцией. Лог. 1 должна быть записана в бит WDE, даже если до выполнения данной операции в нем уже была записана лог. 2. В течение следующих четырех тактов записать лог. 0 в WDE, что приводит к отключению сторожевого таймера. ------------------------------------------------------- Вкл. сторожевого таймера: WDTCR=0b00011000; // Разрешение изменения сторожевого таймера WDTCR=0b00001000; // Вкл. сторожевого таймера // #asm("wdr") // Сброс сторожевого таймера ------------------------------------------------------- Выкл. сторожевого таймера: WDTCR=0b00011000; // Разрешение изменения сторожевого таймера WDTCR=0b00000000; // Выкл. сторожевого таймера ------------------------------------------------------ предделитель WDP: WDP2 -WDP1 -WDP0 //////////////////////////////////////////////////////////////////////////////////////////// // 000: количество тактов: 16,384; время переполнения: 16,3 mc // 001: количество тактов: 32,768; время переполнения: 32,5 mc // 010: количество тактов: 65,536; время переполнения: 65 mc // 011: количество тактов: 131,072; время переполнения: 0,13 c // 100: количество тактов: 262,144; время переполнения: 0,26 c // 101: количество тактов: 524,288; время переполнения: 0,52 c // 110: количество тактов: 1.048,576; время переполнения: 1,0 c // 111: количество тактов: 2.097,152; время переполнения: 2,1 c ///////////////////////////////////////////////////////////////////////////////////////////