Cuando un microcontrolador "se va a error", quiere decir que se va a una dirección de memoria que tiene asociada para cuando tiene algún problema.

En el caso de los PIC32 se va al General Exception Handler.

Cuando un programa falla y se va a este error es muy tedioso solucionarlo.

La manera más sencilla es incluir el archivo "GenExcep.c" y ver la dirección de memoria que ha producido la excepción.

La variable "_excep_addr" nos dice la dirección que ha provocado la excepción y la variable "_excep_code" nos da el error en leído del registro CAUSE.

Una vez sabemos la dirección de memoria y el error, iremos a la memoria del programa y buscaremos la dirección.

Al encontrarla, haremos click con el 2º botón del ratón y pulsaremos sobre posicionar el PC sobre esa dirección. Ya sabemos el punto del programa desde donde se ha ido a error.

Posibles errores a tener en cuenta:

- When both prefetch and instruction cache are enabled, a Data Bus Exception (DBE) may occur if an interrupt is encountered by the CPU while it is accessing constant data (not instructions) from Flash memory.

Para desactivar prefetch: CHECONbits.PREFEN=0;