На картинке ситуация: пешеходы переходят на зелёный, соблюдая ПДД, авто едет на красный и при попытке остановиться обнаруживает неисправность тормозов. Ну и вопрос: как должен поступить автопилот в такой ситуации?
Принципиально разные значения средней длины полового члена были выявлены двумя исследованиями: 15 см и 25 см…
Первое исследование проводилось методом измерения, второе — опросом
Уйдёт Жаров, найдут другого. Он просто инструмент, а инструмент не может быть кретином или м… ком, он выполняет свои функции. В отличие от человека им управляющего.
сброс watchdog ставится на таймер например 100 Гц: if (WatchdogCounter)
{
WatchdogCounter--;
ResetWatchdog();
}
Максимальное время исполнения цикла примерно известно, перед каждым циклом устанавливаем счётчик на необходимое количество тактов таймера: WatchdogCounter = 1000;
for (unsigned int i = 0; i < 10; i++)
{
// тут ваш код
}
Примерно так.
А если ваша программа написана так, что
ждет какого-то события которое никогда не произойдёт или давно и безнадёжно пропущено или ещё что-то вроде дедлока но в рамках общего цикла
это не проблема контроллера, это проблема кода программы. Атмега тут ни причём. На каждое ожидание должен быть установлен свой таймаут, после которого программа продолжит нормальную работу.
С атмегой всё в порядке, отличный, зарекомендовавший себя контроллер. Я промахнулся и случайно ответил на ваш комментарий, ответ предназначался комментатору выше.
Отвечал я вот на это
Вач-дог спасает от аппаратного зависания, а от зацикливания рабочей программы не спасёт.
Интереса ради посмотрел с чего началась эта ветка обсуждений:
Отличная затея! Хоть кто-то пытается привить людям нормальный подход в разработке, а не очередных быдлокодеров наплодить, которые кое-как с Ардуины смогут переползти на HAL+Cube и начать лепить очередной «умный дом» на китайских модулях.
Ну вы же как-то передвигаетесь по городу? Такси, общественный транспорт, они в первую очередь будут оборудованы автопилотом.
(каюсь, не обновил комментарии)
Но мы же обсуждаем обработку исключительных ситуаций.
Методом Фридрих (F2L и тд) сборка должна быть меньше минуты.
if (WatchdogCounter)
{
WatchdogCounter--;
ResetWatchdog();
}
Максимальное время исполнения цикла примерно известно, перед каждым циклом устанавливаем счётчик на необходимое количество тактов таймера:
WatchdogCounter = 1000;
for (unsigned int i = 0; i < 10; i++)
{
// тут ваш код
}
Примерно так.
А если ваша программа написана так, что
это не проблема контроллера, это проблема кода программы. Атмега тут ни причём. На каждое ожидание должен быть установлен свой таймаут, после которого программа продолжит нормальную работу.
Отвечал я вот на это