Сторожевой таймер
Аппаратный обратный отсчёт, перезагружающий систему, если программа перестала доказывать, что жива.
Прошивка должна регулярно писать в регистр — «гладить» или «пинать» собаку, — пока счётчик не дошёл до нуля. Если программа застряла в бесконечном цикле, взаимной блокировке или шторме прерываний, сигнал не приходит, и сторожевой таймер дёргает линию сброса. Для устройства, замурованного в электросчётчик или стоящего на вершине горы, двухсекундная перезагрузка — зачастую лучшая доступная обработка ошибок.
Классическая ошибка — «пинать» собаку из прерывания таймера: прерывание тикает ещё долго после смерти главного цикла, и сторожевой таймер превращается в украшение. Лучше сбрасывать его только после того, как отчитались все задачи; а оконные сторожевые таймеры срабатывают и при слишком раннем сбросе — признак того, что программа что-то пропустила.