У лозі зафіксовано внутрішню помилку
Що пише ArduPilot:
- ERR INTERNAL_ERROR (Subsys 30)
ERR із підсистемою 30 (INTERNAL_ERROR), код 1, пишеться в лог у момент, коли змінюється список внутрішніх помилок ArduPilot; наземна станція в ту саму мить отримує «Internal Errors 0x…». Внутрішня помилка — це коли код натрапив на те, чого ніколи не має бути, зафіксував це й працює далі, як може. Рядок ERR не каже, якого вона виду: маска — це число після 0x, по одному біту на вид, а в лозі це PM.InE, з рядком вихідного коду, що зафіксував останню, у PM.ErrL. Список тримається до перезапуску плати й блокує армування, доки не порожній.
Що робити: найімовірніше спершу
Під час цього запуску щось один раз пішло не так; маска каже, що саме.
ПеревіртеВставте сюди рядок «Internal Errors 0x…» або значення PM.InE: кожен біт має власне пояснення. Одні вказують на апаратну частину (imu_reset, spi_fail, iomcu_reset), інші на налаштування (bad_rotation), ще інші на прошивку (flow_of_ctrl, stack_ovrflw).
ВиправтеПодивіться в лозі, що апарат робив у той час, потім повторіть це на столі, знявши пропелери. Якщо помилка не повертається — зробіть наступний політ коротким та обережним.
Та сама помилка повертається після кожного запуску: причина постійна — налаштування або апаратна частина.
ПеревіртеЧи з'являється вона, коли від'єднано все, крім USB? Тоді під'єднуйте пристрої по одному.
ВиправтеНе літайте, доки вона не зникне. За поясненням цієї помилки знайдіть пристрій або параметр, що за нею стоїть.
Вона з'явилася після зміни прошивки, власної збірки або нового Lua-скрипта.
ПеревіртеПоверніться на крок назад: попередня прошивка або та сама без скрипта.
ВиправтеЛишайтеся на стабільному релізі для своєї плати й повідомте розробникам ArduPilot про помилку, навівши маску, номер рядка й додавши лог.
Якщо вона з'явилася в польоті — сідайте, щойно це безпечно: апарат ще летить, але на коді, який натрапив на те, чого не очікував. Внутрішню помилку ніколи не виправляють ігноруванням.
Де це зробити:Налаштування й тюнінгНалаштування й тюнінг