Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп лек по ЭиУА.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
934.4 Кб
Скачать

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

Многие системы на базе микроконтроллеров работают в сложной электро­магнитной обстановке, когда помехи наводятся как по сигнальным линиям, так и по линиям питания. Типичным примером такого устройства является система уп­равления приборной панелью автомобиля, на которую воздействуют помехи, со­здаваемые высоковольтными разрядами в блоке зажигания, и пульсации напря­жения питания, вызываемые работой генератора. Даже если поместить блок в эк­ран, а на всех линиях поставить фильтры, никто не сможет гарантировать, что в какой-нибудь момент времени программа не собьется с корректного положения в памяти программ и микроконтроллер не «сойдет с ума». Это может привести к серьезным последствиям в работе системы управления. Иногда эти проблемы можно решить ручным сбросом системы. Однако во многих случаях это невозможно, например, в случае космического зонда.

Один из способов решения данной проблемы заключается в использовании связки генератор - двоичный счетчик, которая будет сбрасывать микропроцессор при переполнении счетчика. Если программа будет периодически обнулять этот счетчик во избежание переполнения, то микроконтроллер никогда не сбросится. Если по какой-либо причине микроконтроллер выйдет из основного цикла, в котором выполнялся сброс счетчика, то счетчик рано или поздно переполнится и микроконтроллер будет сброшен, а программа начнет выполняться с самого начала. Эта схема называется сторожевым таймером (watchdog timer), поскольку увеличивает безопасность системы.

Все микро­контроллеры PIC имеют встроенный модуль сторожевого таймера. Встроенный генератор сторожевого таймера никак не связан с основным тактовым генератором процессора и, если сторожевой таймер включен то, постоянно генерирует собственный сигнал с номинальным периодом 18 мс.

Генератор сторожевого таймера подключен к 8-битному постделителю (postscaler). С его помощью номинальный период тайм-аута сторожевого таймера можно увели­чить до 0,018128 = 2,3 с. Конкретное значение периода тайм-аута оп­ределяется состоянием битов PS[2:0] регистра OPTION_REG. Ге­нератор сторожевого таймера и счетчик постделителя сбрасываются при выполнении команды Clrwdt (Clear Watch DOG Timer — сброс сторожевого таймера). Соответствен­но, для предотвращения наступления тайм-аута сторожевого таймера необходимо периодически вызывать эту команду.

Поскольку генератор сторожевого таймера полностью независим от системного тактового сигнала, он продолжает работать даже после перевода микроконтроллера в «спящий» режим. Для этого команда Sleep сбрасывает сторожевой таймер и флаг ТО регистра Status. К тому же она активизирует флаг PD регистра Status, указывающий на то, что процессор находится в «спящем» режиме. Благодаря всем этим действиям между выполнением команды Sleep и наступле­нием тайм-аута сторожевого таймера проходит время, равное одному периоду сторожевого таймера. Если тайм-аут наступит при нахождении микроконтролле­ра в спящем режиме, то микроконтроллер проснется и продолжит выполнение программы с команды, следующей за командой Sleep. Обычно этой командой является команда сброса сторожевого таймера Clrwdt