ArduPilot зафіксував у собі стан, якого не мало б бути
Що пише ArduPilot:
- Internal Errors 0x0x…
- PreArm: Internal errors 0x0x… l:N …
ArduPilot веде список того, що ніколи не має траплятися: мікросхему датчика довелося скинути, число виявилося не числом, головний цикл завис, плату перезавантажив watchdog. Від моменту ввімкнення сталося щонайменше одне з цього. Шістнадцяткове число зберігає їх як біти; у рядку перед армуванням «l:» — рядок коду останньої події, а короткі назви в кінці кажуть, що саме сталося. «Internal Errors 0x…» надсилається в мить, коли додається нова подія. Список очищує лише перезавантаження.
Що робити: найімовірніше спершу
Разова подія під час запуску чи налаштування: датчик відповів запізно, скидання після зміни прошивки чи параметрів.
ПеревіртеКожна назва має тут власне пояснення: знайдіть її пошуком.
ВиправтеЗапишіть назви в кінці рядка й перезавантажте. Якщо за кілька запусків воно не повертається — рухайтеся далі.
Воно повертається при кожному запуску або через кілька хвилин: справжня несправність заліза чи підключення.
ВиправтеІдіть за назвою: помилка IMU, SPI чи I2C вказує на плату, її живлення або пристрій на цій шині; від'єднуйте зовнішні пристрої по одному, щоб знайти винного.
Помилка прошивки: та сама назва на справній платі, часто після певної дії.
ВиправтеЗавантажте поточну стабільну прошивку для своєї плати. Якщо лишається — повідомте на форумі ArduPilot, додавши повний рядок, версію прошивки й лог.
Коли «Internal Errors» з'являється в польоті, апарат летить далі, але всередині польотного контролера щось пішло не так: сідайте якнайшвидше й прочитайте лог до наступного польоту.
Де це зробити:Аналізатор прошивки
Код, який це надсилає
Internal Errors 0x0x…
libraries/AP_Vehicle/AP_Vehicle.cpp AP_Vehicle::loop() · Відкрити в ArduPilot Copter-4.7.1
PreArm: Internal errors 0x0x… l:N …
libraries/AP_Arming/AP_Arming.cpp AP_Arming::system_checks() · Відкрити в ArduPilot Copter-4.7.1