Servers by jDrones

ArduCopter 4.0 on v2450 - internal error 0x8000?

Just tried to flash the Copter-4.0 branch onto my Sky Viper. Unfortunately, the prearm check now fails with an internal error 0x8000. Some grepping revealed that this seems to be an indicator for a too slow main loop. A sort test with disabled pream checks showed that the drone was flying normally.

Anybody else with the same problem?

dataflash log please :slight_smile:

Peter

000026.BIN (385.2 KB)

I trackked the problem down to this line . If I comment out that line, the problem is gone. There was never a single “MON” message in the DF logs, however. So either the loop_delay is always below 200 ms, while it is >= 500ms at the same time, or logging just doesn’t work at the time of error.

May be early in the startup? Or an uninitialized variable?

PS: what happens, if the watchdog has never been patted when the _monitor_thread loop is run for the very first first time? Now minus zero is probably way larger than 500ms?

@hsteinhaus the problem is almost certainly here: https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Radio/AP_Radio_cypress.cpp#L294

… assuming your 2450 is using a Cypress chipset not the cc2500.

A reset is done as part of the init call on the radio. I’ve no trouble believing that can happen before logging starts. At the moment we throw away the MON message if we’ve no logging present. I’m thinking we should probably stash away a copy of what we would have logged for later in that case and log it when possible.

@peterbarker I have the same problem, can’t fly. Is there a fix for this?

Servers by jDrones