Сторожевой таймер esp32

Здравствуйте
Иногда при подаче питания на esp32, происходит зависание микроконтроллера. И через не которое время (9 секунд) происходит перезагрузка с ошибкой rst:0x10 (RTCWDT_RTC_RESET)
Как выяснил из даташита, срабатывает сторожевой таймер rtc, у которого время по умолчанию установлено 9сек.

Подскажите как изменить это время, например на 3 секунды?

то есть , почему зависает вам известно и вас это устраивает ?

Голосую за исправление ошибок в текущем коде …

Да, мне известна причина зависания. И она не в коде. Меня это устраивает, только хочу уменьшить время ожидания перезагрузки.
Поэтому интересует, как можно изменить время именно этого сторожевого таймера, с 9 секунд по умолчанию, на 3 секунды.

Что-то не густо тут с народом :frowning:

ЧатГПТ сюда ещё не подключили, обработать запрос и искать за вас некому, приходите попозжа.

1 лайк

А нам очень интересно !

Вот

Вам нужно скомпилировать свой бутлоадер с нужным временем. Но задача эта очень специфичная (для обычного пользователя) и скорее всего готового решения вы здесь не получите. Попробуйте спросить на форуме ESP32 (наверное такой есть) - насколько это сложно.
Дополнение. Это справедливо, если зависание и перезагрузка происходят действительно до начала выполнения основной программы.

1 лайк

2UPPER: глубокомысленные и бессмысленные советы. Ты посмотри на ник. его историю и пойми, что уровень вопроса совершенно не соответствует подготовке персонажа.

  1. делать этого не надо. 9 сек не просто так придуманы. В некоторых случаях старт - долгий.
  2. Если уверен, что так надо сделать, то очень легко найти ответ - как?
  3. В IDF - это в меню-конфиге настраивается. Опция: CONFIG_BOOTLOADER_WDT_TIME_MS

В Ардуино, без камлания и бубна меню-конфиг недоступен (тыц). Менять файлы в аддоне - некоторые смогут, но точно не ТС. :wink:

А я было расстроился, дамал не то что дельного совета не получишь, так еще и не поиздеваются) А нет, все тот же любимый форум)))
Думаю, 9 сек взято по умолчанию, лишь как перестраховка под полный потенциал микроконтроллера. А старт моего проекта вкладывается примерно в секунду, вот и подумал уменьшить время сброса.
Ну раз, таким как я, решить этот вопрос программно не под силу, тогда воспользуюсь костылем по железу из даташита. Просто не очень хотелось разводить плату по-новому.
В любом случае, всем спасибо за советы.

Ну и зачем губки надувать, как в детском саду? Я же дал ссылку на то, ПОЧЕМУ, меню-конфиг не доступен в Ардуино.

Правь константы на свой страх и риск. Чего ты ещё хочешь? Я указал, что править.

Так я ж без обид) мне не впервой))
Я прекрасно осознаю, что это для меня далеко не простая задача, но все же. Думаю во всем можно разобраться, было бы желание.
Всех услышал, вектор направления получил)
Решу проблему железом, а параллельно буду разбираться с меню-конфиг)
Еще раз спасибо!

Вы нам так и не рассказали - почему срабатывает WDT ? Чем таким занят быстродействующий МК аж 9 секунд ???

1 лайк

Он ни чем не занят, так он зависший, и продолжал бы быть таковым и дальше, если бы не защита ввиде RTCWDT, настроенного по умолчанию на 9сек. И защита эта добавлена изначально неспроста, судя по информации из даташита, такое зависание “обычное дело” для esp, при определенных условиях.

Это ваш код его зацикливает и/или периферия ?

Никак не поменять этот таймер. Настройки касаются загрузчика, который должен сперва запуститься. Чини железо.

1 лайк

Нет. Зависал бы он в моем коде, я бы применил сторожевой таймер в коде и проблемы б не было. Сразу отвечу, я добавлял WDT в код, это не помогает, так как до моего кода дело не доходит.
Как бы правильно выразился, чтоб не резало слух дядькам с бородой, он может зависать и зависает в начале, инициализируя какие-то внутренние параметры/настройки, ХЗ чем он там занимается на старте пред началом выполнения кода. Но факт на лицо. Я бы не был в этом так уверен, если б об этом не упоминалось в документации.
Периферия тоже исключена, проверено.

rkit, это точно? В даташите вроде шла речь об параметрах этого таймера, о чем здесь выше уже писал WladDrakula (меню конфиг), но я пока не разобрался. Переспрашиваю, чтоб зря не ломать голову, а решать вопрос с железом.
Железом тоже занимаюсь.

А я почему то уверен, что зависает контроллер именно из за некорректно написанного кода. Если бы он зависал из за системного кода - давно бы уже это обсуждалось многими пользователями.
У всех все работает и не зависает, а у вас зависает. Есть о чем задуматься, не так ли?
У меня используются и ESP32 и ESP8266 в большом количестве.
При старте, на всех, инкрементируется счетчик стартов и записывается в энергонезависимую память. счетчик стартов публикуется по MQTT на OpenHAB.
По нулям счетчики годами, увеличиваются только при перебоях с питанием, но это на всех контроллерах + уведомление об отключении питания в OpenHAB, а из него PUSH на телефон.
Нет перезапусков по WDT.

1 лайк