A pin or a data channel of the processor misbehaved
What ArduPilot says:
- Internal errors 0x2000000 (gpio_isr)
- Internal errors 0x8000000 (dma_fail)
gpio_isr: an input pin that raises an interrupt on every pulse (an RPM sensor, a PWM input, a camera feedback pin) sent more than 10,000 interrupts in 100 ms. ArduPilot switches that pin's interrupt off and says “ISR flood on pin N”; the internal error is recorded only when armed, and after disarming the pin is tried again every 10 seconds. dma_fail: DMA, the hardware that moves bytes to and from serial ports and DShot outputs without the processor's help, reported a transfer error on a serial port or on bidirectional DShot.
What to do, most likely first
gpio_isr: the pin is set as an input but nothing is connected, or its wire picks up noise.
CheckThe pin number is in “ISR flood on pin N” and in the pre-arm line “Pin N disabled (ISR flood)”. Which function uses that pin?
FixConnect the sensor properly, with a short shielded or twisted wire and a common ground, or remove the function from the pin.
dma_fail with bidirectional DShot in use.
Check
SERVO_BLH_BDMASKis not 0, and the error comes when the motors run.FixCheck that every ESC in the mask speaks bidirectional DShot and that the signal grounds are connected. If it persists on good wiring, report it with the board name and firmware version.
dma_fail on a serial port: a hardware fault or a firmware made for another board.
FixFlash the firmware for exactly your board; if it stays, the board is suspect.
Parameters to look at
| Parameter | What it is |
|---|---|
SERVO_BLH_BDMASK | BLHeli bitmask of bi-directional dshot channels |
Where to do it:Board & Wiring Planner