il-2 (12.05.2018 07:01, просмотров: 152) ответил m16_home на сегодня мне один товарищ заявил : Если программа не работает с выключеным ватчдогом - это нерабочая программа. ну да ладно. у меня вопрос : пользуете ли Вы вачдог в своих разработках? я - да.
Мне приходилось писать программу с так сказать - интегрированной в алгоритм поддержкой дог-таймера. Это когда программа работает и выполняет свои функции как ни в чем не бывало, несмотря на единичные (но все-же довольно частые) срабатывания дог-таймера.
Это не очень сложно. Зато получается приятный и очень впечатляющий результат :-)
Первое, что надо сделать - это отделить код, выполняющийся после сброса всегда - это как правило инициализация периферии процессора. Так-же следует выделить код, выполняющийся только при сбросе по дог-таймеру.
Второе - необходимо выделить переменные, определяющие однозначно текущее состояние твоей программы. При правильном подходе этих переменных будет немного. Нужно обеспечить, чтобы эти переменные не инициализировались после сброса по дог-таймеру. Их следует инициализировать в программе только при аппаратном сбросе.
В результате получается программа, которая работает как будто нет никаких сбросов по дог-таймеру.
Ко всему прочему следует учитывать, что в любой момент выходы процессора могут переходить в Z-состояния и принять соответствующие аппаратно-программные меры.
Тестировать такую программу просто. Нужно только закомментировать код перезагрузки дог-таймера, и сделать инициализацию дог-таймера случайным значением :-)
Так-же добавлю, что такой подход не защитит от ПРОГРАММНЫХ ошибок и сбоев. Даже наоборот - при входе программы в какое-либо левое состояние она там и останется. Можно отсечь неопределенное состояние - после сброса по дог-таймеру выполнять проверку состояния программы, если оно неопределенное - то выполнять коррекцию к какому-либо определенному состоянию. Но опять-же - это все надо определять и делать БЕЗОШИБОЧНО :-)