el cristal externo no funciona pero el reloj interno funciona normalmente en PIC18F45K22

He diseñado una PCB basada en el microcontrolador PIC18F45K22. Quiero usar un cristal externo (cristal de 4Mhz con dos capacitores de 22pF). Puedo programar con éxito el código pero el PIC no se ejecutará. Al cambiar el modo del oscilador en los ajustes de configuración para usar el reloj interno, funciona bien.

El código que estoy tratando de probar es un código LED de parpadeo simple.

tenga en cuenta que cuando el microcontrolador no se ejecutó, no pude ingresar al modo de depuración.

He probado varios valores de mayúsculas, pero eso no ayudó. Me di cuenta de que la mala soldadura en realidad agregaba una capacitancia perdida entre los pines OSC1/OSC2 y la tierra (medida con un medidor RLC), así que traté de bajar el valor de los capacitores a 15pF.

Probé varios cristales (reemplacé el de 4 MHz, luego probé con un cristal de 16 MHz) pero eso no ayudó. También reemplacé el microcontrolador pero nada cambió.

Intenté hacer exactamente la misma conexión en una placa de pan y funcionó normalmente usando el modo de cristal externo. Solo llené MCLR, VSS, VDD, PGD, PGC y un LED con una resistencia en serie.

He rediseñado el diseño del tablero, pensando que es un problema de diseño con el cristal, pero eso no ayudó.

He buscado sobre un problema similar pero no puedo encontrar ninguna respuesta útil

número de pieza del cristal: ATS040B-E hoja de datos del cristal: http://www.mouser.com/ds/2/96/008-0309-0-32667.pdf

Acabo de lograr que esta placa funcione... El plano de tierra que conecta los capacitores del cristal está conectado a GND en un punto como lo recomiendan muchas notas de aplicación... pero hay un capacitor de 100nF entre este plano y +5V para desacoplamiento... esto fue un error del diseñador de diseño. Quité este capacitor y funcionó. Hay otro entre GND y +5V cerca de los pines del PIC como debería ser.

Todavía no puedo entender por qué esto resolvió el problema ...

Hice una prueba antes para verificar si hay algún voltaje de CA entre este plano y GND del PIC... y el voltaje de CA entre este plano y +5V en el microcontrolador. Eran unos 5 mV, así que supuse que estaba bien...

Ahora la pregunta es ¿cómo diablos este límite de 100nF arruinó el circuito del oscilador para evitar que oscile?

Debe publicar un esquema o al menos el número de pieza de su oscilador.
¿Está utilizando el modo de oscilador XT o HS?
Probé ambos modos HSMP, HSHP y XT sin resultado
Edité la publicación y agregué la hoja de datos para el cristal.
Si funciona en una placa de prueba, con el mismo software y los mismos componentes, entonces probablemente no sea la primera opción para sospechar que son la fuente probable del problema.
Estoy contigo, Roger Rowland... ¿¡Alguna idea de qué sospechar!? :-\ Ya probé otro diseño para el pcb.

Respuestas (3)

¿Has consultado la ficha técnica? Por lo general, cuando no hace nada, es un problema de configuración.

No tengo absolutamente ningún conocimiento sobre esto, pero de la hoja de datos PIC18 (L) F2X / 4XK22 .

Nota 1: Las características del cristal de cuarzo varían según el tipo, el paquete y el fabricante. El usuario debe consultar las hojas de datos del fabricante para conocer las especificaciones y la aplicación recomendada.

2: Verifique siempre el rendimiento del oscilador sobre el VDD y el rango de temperatura que se espera para la aplicación.

3: Para obtener ayuda con el diseño del oscilador, consulte las siguientes notas de aplicación de microchip:

• AN826, “Conceptos básicos del oscilador de cristal y selección de cristal para dispositivos rfPIC® y PIC®” (DS00826)

• AN849, “Diseño básico de oscilador PIC®” (DS00849)

• AN943, “Análisis y diseño práctico de osciladores PIC®” (DS00943)

• AN949, “Cómo hacer que su oscilador funcione (DS00949)

Parece que los problemas del oscilador son comunes. Así que empezaría por ahí. Sé que tiene un prototipo en funcionamiento, pero si no se establece el bit correcto, no sucede nada mágico.

Y:

FIGURA 2-6: FUNCIONAMIENTO DEL CRISTAL DE CUARZO (MODO LP, XT O HS)

Nota 1: Es posible que se requiera una resistencia en serie (RS) para cristales de cuarzo con bajo nivel de excitación.

2: El valor de RF varía según el modo de oscilador seleccionado (normalmente entre 2 MΩ y 10 MΩ).

O:

FIGURA 2-7: FUNCIONAMIENTO DEL RESONADOR CERÁMICO (MODO XT O HS)

Nota 1: Es posible que se requiera una resistencia en serie (RS) para resonadores cerámicos con bajo nivel de excitación.

2: El valor de RF varía según el modo de oscilador seleccionado (normalmente entre 2 MΩ y 10 MΩ).

3: Es posible que se requiera una resistencia de retroalimentación en paralelo (RP) adicional para que el resonador de cerámica funcione correctamente.

También de Cómo hacer que su oscilador funcione

Pregunta: Estoy tratando de usar un resonador de 4 MHz con VDD a 3V. La hoja de datos lo permite, pero el oscilador no funciona. ¿Qué estoy haciendo mal?

Respuesta: Es posible que esté utilizando el oscilador de modo XT. Cuando se eleva VDD, el oscilador puede comenzar a funcionar. Seleccione el oscilador de modo HS en su lugar. Esto permitirá que el oscilador funcione a un voltaje más bajo, pero también consumirá corriente adicional. Alternativamente, cambie el resonador a un cristal, use el modo XT como antes y verifique la selección del capacitor de carga. Al realizar dicho cambio, vuelva a probar el circuito del oscilador para asegurarse de que funcionará como se espera.

No estoy seguro si esto se aplica, pero me hizo sonreír.

También verificaría mi software de programación para ver si realmente está configurando la palabra de configuración de la manera que desea, porque me encontré con los valores predeterminados del sistema en los PIC que no eran los que seleccioné. Oscilador seleccionado pero funcionando muy lentamente porque la temporización RC era la predeterminada del sistema. (OK, tengo algo de conocimiento, solo lo suficiente para hacerme peligroso - Buena suerte SSR).

Simplemente revisó dos veces los bits de configuración. El modo oscilador es correcto. También traté de leer los ajustes de configuración después de programar el PIC. Todo programado correctamente. Como dije antes, el circuito funciona bien en una placa de pruebas con el mismo cristal externo y tapas que las de la placa de circuito impreso.
Hacen referencia a 4 notas de la aplicación en su hoja de datos. No es un problema trivial, comience en las notas de la aplicación. Luego, debe consultar con los ingenieros de aplicaciones de Microchip porque parece ser un problema que no es exclusivo de usted. Lo primero que dirán es revisar las notas de la aplicación. Como diseñador, una de las primeras cosas que verifica es la fe de erratas. El hecho de que tengan 4 notas de aplicaciones publicadas me alerta porque no creo que sea irrazonable esperar que funcione un cristal de 4MHz.
Tienes toda la razón. Estoy trabajando con estos micros desde hace 3 años... he diseñado alrededor de una docena de placas sin ese problema. Es frustrante ver que algo que se supone que es tan simple se convierte en un verdadero dolor de cabeza... Pasé más de 3 días tratando de resolver esto, pero pensé que una lluvia de ideas con ustedes podría traer algunas ideas olvidadas... Probé otro diseño hoy (capacitancia parásita minimizada) y solo llené los componentes mínimos... el mismo problema. También agregué resistencias en serie y en paralelo al cristal... sigue igual...
También intenté encender la placa directamente desde una fuente de alimentación y con diferentes voltajes... El mismo problema... siempre falla en el cristal externo pero funciona bien con el interno.
Iría con 15pF, ya que la hoja de datos de Xtal requiere 18pF. En la página 3 de Cómo hacer que su oscilador funcione, hablan sobre Open Oscillator Loop para comenzar a usar un generador de funciones y un osciloscopio. Concentraría mis esfuerzos allí.

El valor de los capacitores afecta la frecuencia final del cristal más de lo que afecta la capacidad de oscilar. Entonces, un 1 pf perdido adicional no debería matarlo. Pero tal vez es hora de aplicar un poco de investigación. El oscilador de cristal es solo un amplificador con retroalimentación. El pin OSC2 es la salida: debe estar alto o bajo (no en el medio) si no está oscilando. El pin OSC1 es una entrada. Debería estar en el estado opuesto de la salida (de lo contrario, habrá encontrado algo mal). Al ser una entrada, debería poder subirla o bajarla usando una resistencia de gran valor conectada a + o tierra. Arrastrarlo al voltaje opuesto debería cambiar el estado de OSC2. Cualquier cosa que no funcione aquí sugiere una mala configuración o un problema con el circuito.

Los cristales también pueden estropearse, así que es bueno que hayas podido probar más de uno.

Además, muchas veces comenzó a oscilar mientras tocaba las conexiones, así que sigue atento.

He tenido problemas de configuración, y solo lo creí después de haber probado todas esas otras cosas. A veces solo tienes que comprobar todo lo demás para convencerte.

verificado que el pin OSC2 es 5V, el pin OSC1 es entrada...
en realidad, ahora que lo mencionaste, logré que el cristal oscilara en algunos puntos... Traté de cortar (con un cuchillo) todas las pistas que están conectadas a los pines del micro, excepto las relacionadas con el suministro/oscilador/programación y dejé un solo LED parpadeante. Cuando hice eso, el cristal osciló, pero no todas las veces... es decir, desconectar la energía y luego volver a conectarla tuvo un comportamiento diferente cada vez. Me aseguré de que el suministro en el micro fuera cero antes de volver a conectarlo. De hecho, corté el VDD y el VSS antes de enchufar

De hecho, funcionó después de mejoras adicionales en el diseño... No puedo decir que realmente haya identificado dónde estaba el problema. Luego edité las 2 placas que no funcionaban... conecté los rastros por cables y eliminé los rastros de PCB (rastros para cristal, tapas y su GND)... funcionaron bien.