Процесор перезапущено сторожовим таймером
Що пише ArduPilot:
- Forcing logging for watchdog reset
- Internal errors 0x800 (watchdog_reset)
Апаратний таймер — сторожовий таймер, watchdog (біт 0 у BRD_OPTIONS, типово ввімкнений) — перезапускає процесор, коли головний цикл перестає виконуватися. Стартуючи після такого перезапуску, ArduPilot фіксує watchdog_reset, надсилає рядок «WDG: …», де сказано, на чому зупинився код, а якщо в ту мить було заармовано — одразу вмикає логування («Forcing logging for watchdog reset»). Коптер знову стартує дизармованим: у польоті це означає, що мотори зупиняються.
Що робити: найімовірніше спершу
Прошивка зависла або аварійно завершилася: помилка, найчастіше в бета- чи власній збірці, новому драйвері або скрипті.
ПеревіртеСкопіюйте рядок «WDG:» повністю; при аварійному завершенні є ще «CrashDump data detected». Що змінювали перед першим перезапуском?
ВиправтеНе літайте. Прошийте стабільний реліз для своєї плати, приберіть нові скрипти й надішліть розробникам ArduPilot рядок «WDG:» разом із логом.
Пристрій або код, що з ним спілкується, затримує головний цикл.
ПеревіртеЧисло IE в рядку «WDG:» — маска внутрішніх помилок запуску, що був перед перезапуском: main_loop_stk, spi_fail чи i2c_isr у ній указують на пристрій. Від'єднайте те, що додали останнім.
ВиправтеЗамініть пристрій або його кабель і, перш ніж знову літати, протестуйте на столі стільки, скільки триває політ.
Просідання живлення — це інше: після втрати живлення плата стартує як після ввімкнення, без watchdog_reset. Звичайне перезавантаження його знімає.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
BRD_OPTIONS | Board options |
Де це зробити:Налаштування й тюнінгНалаштування й тюнінг
Код, який це надсилає
Forcing logging for watchdog reset
libraries/AP_Logger/AP_Logger.cpp AP_Logger::init() · Відкрити в ArduPilot Copter-4.7.1