← Усі інструменти

Пояснення повідомлень і помилок

Що означає повідомлення ArduPilot і що з ним робити

English

Головний цикл простояв пів секунди

Діяти негайноПлата, внутрішні помилки, CAN, скрипти

Що пише ArduPilot:

Головний цикл читає датчики й керує моторами сотні разів на секунду. Окремий наглядач кожні 100 мс дивиться, чи він ще працює. Після 200 мс без нього наглядач починає писати в лог, що робив цикл (повідомлення MON); після 500 мс, якщо ArduPilot не очікував затримки (стирання флеш-пам'яті, калібрування), він фіксує main_loop_stuck. Число l: тоді — рядок коду, де головний цикл чекав на блокування. Якщо цикл так і стоїть, сторожовий таймер перезапускає плату.

Що робити: найімовірніше спершу

  1. Lua-скрипти працюють із підвищеним пріоритетом і не пускають головний цикл до процесора.

    ПеревіртеSCR_THD_PRIORITY не 0. Зупиніть скрипти й подивіться, чи помилка з'являється далі.

    ВиправтеПоверніть SCR_THD_PRIORITY на 0 (Normal) і перезавантажте.

  2. Дві частини прошивки чекають одна на одну (взаємне блокування): помилка, імовірніша в бета- чи власній збірці.

    ПеревіртеРазом із нею може з'явитися «CRITICAL Deadlock …». Занотуйте число l: і що ви робили: завантаження параметрів, завантаження логів, калібрування.

    ВиправтеВикористовуйте стабільний реліз і надішліть розробникам ArduPilot рядок, лог і послідовність дій.

  3. Датчик або сховище відповідає так повільно, що цикл на нього чекає.

    ПеревіртеУ тій самій масці є spi_fail чи i2c_isr, або помилка зникає, коли від'єднати пристрій.

    ВиправтеЗамініть цей пристрій або його кабель.

Пів секунди без керування досить, щоб втратити коптер. Не літайте, доки на столі, знявши пропелери, не відпрацюєте цілу батарею без цієї помилки.

Параметри, на які варто глянути

ПараметрЩо це
SCR_THD_PRIORITYScripting thread priority
BRD_OPTIONSBoard options

Тут написано для: Коптер, 4.6. В інструменті можна вибрати свій апарат і версію, побачити значення власних параметрів поруч із названими тут і перетягнути лог польоту, щоб отримати пояснення до кожного повідомлення в ньому.

Відкрити в інструменті