Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

388 Микроконтроллеры AVR от азов программирования... Рис. 6.17. Блок-схема сторожевого таймера Режимы работы В нормальном режиме работы необходимо, чтобы программа пери ­ одически сбрасывала охранный таймер при помощи команды WDR. Программа должна быть написана таким образом, чтобы команда сброса всегда приходила раньше, чем содержимое таймера достигнет конца. Если система зависнет и перестанет перезапускать счетчик, то он досчи ­ тает конца. Это вызовет прерывание или системный сброс. В результате программа начнет работать сначала. В режиме прерываний при истечении заданного времени система WDT вырабатывает запрос на прерывание. Этот запрос может использо ­ ваться для пробуждения микроконтроллера из любого спящего режима. Пробуждение происходит таким же образом, как в случае прерыва ­ ния от системного таймера. Один из вариантов использования такого режима — ограничение максимального времени выполнения некото ­ рых операций. Таймер вызывает прерывание, если выполнение опера ­ ции происходит дольше, чем положено. В режиме системного сброса при истечении заданного времени WDT вызывает системный сброс. Обычно это используется для того, чтобы предотвратить зависание системы в случае ошибки в программе. Третий режим объединяет возможности двух первых режимов. Сначала вызывается прерывание, а затем происходит системный сброс. Этот режим применяется, например, в том случае, когда перед вызовом системного сброса необходимо сохранить важные параметры. Если при помощи соответствующего fuse -переключателя (WDTON) выбран режим, при котором сторожевой таймер постоянно включен, то срабатывание этого таймера всегда вызывает сброс системы. При этом

RkJQdWJsaXNoZXIy MTExODQxMg==