Antes de nada cambiar mi post anterior, despues de haberlo probado para reducir aun mas los fallos:
1º Bajar todas las interrupciones por debajo de la interrupción de la UART, en el caso de que se necesite una interrupcion mas prioritaria...te fastidias.Es obligatorio poner la prioridad numero 7 a la interrupcion de la UART, en la funcion de interrupcion te sera imposible poner que mire el vector de la UART con prioridad 7, por eso debes de desactivar la interrupcion de la UART. ( si si no estoy loco, hay que darle prioridad maxima pero no activar la interrupcion).
2º Olvidarse de mirar los registros y comprobaciones a traves de las librerías o definiciones del PIC, hay que mirar los registros a pelo.
3º Checkear el flag de interrupción por pulling en el while(1), nada de poner una función de interrupción.
4º Cada vez que se borre una pagina de memoria, las dos lineas siguientes deben ser, un DISABLE UART, y un ENABLE UART.
Esto esta ya puesto en conocimiento de microchip.
Ya en proyectos nuevos me está interesando la familia Kinetis
buena opción migsantiago, no te vas a arrepentir si usas estos micros son muy buenos, ademas freescale te ofrece un IDE gratuito para la familia kinetis, la documentacion de la mejor (si no la mejor de todos los fabricantes).
y los perifericos estan en la mayoria de los casos muy por encima de sus competidores, flexCAN, adc de 16 bits, PGA, control de DDR....
muy buena opción. Lo unico que hecho en falta es una herramienta de programacion propia de freescale para no recurrir a un tercero.
Yo tambien estoy pensando en migrar a kinetis para los microcontroladores.
voy a abrir otro post con las erratas que he encontrado en otro aparato de microchip el MCP39F501 para que otra persona no tenga que darse tantos cabezazos como yo con este IC
un saludo.