STM32 и две его собаки
 

Немного о сторожевых таймерах

Речь пойдёт о сторожевых таймерах (watch dog). На контроллерах семейства STM32 их сразу два. Один независимый (IWDG), второй – оконный (WWDG).

Задача обоих таймеров – сбросить контроллер в случае его зависания или несанкционированного ухода в какое-либо ветвление внутри программы. Независимый сторожевой таймер тактируется отдельным, низкочастотным генератором LSI. Направление счёта таймера – сверху вниз. При достижении нуля таймер сбрасывает контроллер. После запуска независимого сторожевого таймера его невозможно будет остановить, поэтому программа должна периодически обновлять значение сторожевого таймера. Если программа вошла в замкнутый бесконечный цикл и не обновляет сторожевой таймер, то процессор войдёт в сброс через некоторое время и устройство восстановит функциональность.

Оконный сторожевой таймер тактируется от того же источника, что и ядро STM32. Задача этого таймера похожа на описанную выше. Таймер по-прежнему считает вниз, правда, синхронно с выполнением программы. Досчитав до нуля, он сбрасывает контроллер. Кроме того, оконному сторожевому таймеру можно выставить значение времени: «можно обновлять не ранее чем». При попытке обновиться ранее установленного значения происходит сброс. Таким образом, можно «поймать» такую ситуацию:


При известном времени выполнения программы пользователя можно отслеживать каждый этап её выполнения. Несанкционированный переход на обновление WWDG приведёт к изменению его значения раньше разрешённого «окна времени», что приведёт к сбросу микроконтроллера. Таким образом, можно гораздо точнее отладить работу программы.

Как получить классический сторожевой таймер из оконного? Необходимо установить верхнюю границу времени обновления равной (или выше) значению таймера.

Инженеры компании "Промэлектроника" выполнили простую лабораторную работу для платы STM32F4Discovery, демонстрирующую работу независимого сторожевого таймера совместно с работой RTC, энергосберегающим режимом, контроллером внешних прерываний и портов ввода вывода. Достаточно загрузить программу в контроллер и по светодиодной индикации можно увидеть моменты перезагрузки микроконтроллера. Код проекта можно взять здесь.



За более подробной информацией обращайтесь:

Бренд-менеджер: Сорокин Сергей

Задать вопрос техподдержке вы можете на нашем форуме  


Автор документа: Промэлектроника , http://www.promelec.ru"
Дата публикации: 22.06.2012
Дата редактирования: 22.06.2012
Кол-во просмотров 2413
 
 Все новости одной лентой