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;