He estado trabajando en una placa de desarrollo PIC24FJ128GA310 desde hace algún tiempo y hace poco conseguí una PCB. Si trato de mover mi código a la nueva placa, todas las funciones y las matemáticas relacionadas con el tiempo fallan en el oscilador HS, incluso las líneas UART no funcionan a la velocidad en baudios deseada. El dispositivo no se ejecuta cuando lo coloco en el oscilador XT.
Después de un poco de depuración, descubrí que el módulo PLL no se estaba bloqueando. Tengo un oscilador de 8 MHz con el bit de configuración PRIPLL activado. Entonces, en lugar de tener FCY de ((8 * 4) / 2) tengo (8/2). El caso es cierto si tengo POSCMD como HS. Pero si pongo POSCMD como XT, el controlador simplemente no funcionará en absoluto. No puedo depurar el código con POSCMD como XT, IDE dice que el dispositivo no está listo para la depuración ya que algunos bits de configuración son incorrectos o el emulador no está conectado correctamente. Estoy seguro de que las conexiones pickit3 están bien porque cuando cambio el POSCMD a HS o pongo el dispositivo en funcionamiento en el oscilador interno, puedo entrar en modo de depuración.
Intenté hacer un tiempo (OSCCONbits.LOCK == 0); en el inicio para comprobar si el temporizador de arranque del módulo PLL está satisfecho. Pero nunca sale de ese bucle. También intenté comenzar con el oscilador interno y luego cambiar al oscilador externo y al PLL sin mucha suerte.
Luego de algunas investigaciones en línea, llegué a este hilo, que dice que el capacitor en el pin Vcore debería estar causando el problema. Cambié ese condensador a un orificio pasante 10uF tantalio. Pero aún queda por resolver el problema.
Aquí está el esquema y el diseño de las secciones relevantes.
Circuito del oscilador
Vcorepin
Diseño de ambos. Capa inferior
Me he quedado sin opciones y necesito ayuda. Por favor sugiera cualquier otro curso de acción. Gracias por cualquier ayuda.