я бы попробовал повесить линию сброса собаки на аппаратную ножку
таймера и перед обновлении флеша конфигурировал бы его на
автоматический ногодрыг по переполнению, к примеру. По-моему
однажды сконфигурированный таймер, до аппаратного ресета будет
работать независимо от состояния флеши (не пробовал, но возможно
да) Навсегда так делать не надо (а то пропадёт смысл вачдога, но на
период обновления флеши, - вполне), кстати само "взбадривание собаки" я обычно делаю тоже по сложному условию. Завожу "регистр" (ячейу памяти), в которой каждый битик - флаг своей критически важной процедуры программы. При сбросе собаки устанавливаю этот регистр в 0xFF, а каждая процедура (период исполнения которой гарантированно меньше периода вачдога, сбрасывает свой флажок в этом "регистре". В главном цикле, в процедуре сброса WDT "дёргаю собаку", только если регистр флагов - нулевой.