|
>Получается, что надежнее всего WatchDog обнулять в прерывании.
> Меньше шансов пропустить зацикливание.
Это не совсем так. Вы можете в прерывании ввести дополнительную проверку адреса возврата в стеке. Если адрес возврата подозрительный, то немедленно перезагрузить контроллер, а сброс вотчдога оставить в фоне. Так что, разницы все равно нет.
На самом деле, PC в неположенном месте окажется, только если изменятся какие-то биты в RAM (при грамотно написанной программе). А с этим, сколько-нибудь эффективно бороться вотчдог не умеет (и не должен). Конечно, иногда, случайно, если повезет, может и помочь. Помолиться за это стоит, а всерьез рассчитывать - нет. Вероятность того, что программа продолжит работу с неверными данными и угробит то, чем управляет, в сотни раз выше.
Ну и если ваша жизнь зависит от правильной работы контроллера, и вероятны изменения в RAM, вы ведь прислушаетесь к советам почетных краеведов и примените дублирование? Правильно? На счастливую случайность ведь не будете рассчитывать?
E-mail: info@telesys.ru