El PIC sigue reiniciando: ¿Estoy viendo efectos secundarios por el uso del tablero?

10

Estoy usando PIC18F4680 y tengo problemas para ejecutarlo desde una fuente de reloj externa de 40 MHz o un cristal de 10 MHz en modo HSPLL. El uso de cristal de 10 MHz en modo HS parece estar bien y el cristal de 5 MHz en modo HSPLL también funciona bien.

Lo que sucede es que el PIC se inicia, funciona durante unos segundos y luego se apaga durante un tiempo y comienza de nuevo. El período total del ciclo es de aproximadamente 5 segundos, de los cuales el PIC funciona deja de funcionar temprano en el segundo segundo.

También he notado que, a veces, cuando agrego un condensador suficientemente grande al bus de alimentación de la placa, el PIC funciona bien. El punto interesante es que esto solo sucede si agrego el capacitor mientras el PIC ya está funcionando. Si enciendo la placa de pruebas con el condensador allí o si coloco un condensador que no se ha descargado completamente, el problema continúa.

He leído en algunos sitios que pueden surgir problemas similares a los míos debido al aumento del consumo de energía del PIC a mayor frecuencia y mayor voltaje de operación más bajo. En esos casos, si hay algunas caídas cortas de voltaje en la fuente de alimentación, es más probable que alcancen el voltaje de operación más bajo del PIC en esa frecuencia, por lo que es una buena idea tener capacitores adicionales en el tablero para resolver ese problema. Como bajo carga completa a 40 MHz, todo el circuito usa alrededor de 64 mA, mi primera idea fue poner algo de \ $ 10 \ mbox {} \ mu F \ $ condensadores de tantalio con la esperanza de que sean lo suficientemente grandes y tengan una ESR lo suficientemente baja para solucionar el problema. Uno no ayudó y el segundo tampoco ayudó. Así que agregué un condensador de aluminio \ $ 100 \ mbox {} \ mu F \ $ y eso tampoco ayudó. Luego agregué un capacitor de aluminio \ $ 470 \ mbox {} \ mu F \ $ de aluminio sin ningún efecto. Al final, agregué un condensador electrolítico de aluminio de 1 mF y luego, por primera vez, el circuito funcionó bien hasta que se apagó y se encendió. También debo tener en cuenta que, para realizar pruebas, estoy usando Vcc de 5,5 V, que es el voltaje nominal más alto para este microcontrolador. Esto debería dejarme un poco de espacio hasta los 4.2 V, que es el voltaje de operación más bajo a 40 MHz

A continuación, leí que a veces las salidas flotantes pueden causar fallas, por lo que coloco algunos \ $ 10 \ mbox {} k \ Omega \ $ resistencias desplegables en todos los pines no utilizados y eso tampoco ayudó. Después de eso, leí que a veces podría haber problemas si las entradas del oscilador están flotando, así que intenté conectarlas a GND usando algunas resistencias \ $ 10 \ mbox {} M \ Omega \ $ y eso no ayudó.

Debido a la longitud del cable que va desde la salida del oscilador a la entrada del oscilador en el PIC, esperaba problemas, pero no esperaba problemas con el cristal de 10 MHz que está muy cerca de los pines del oscilador en el PIC . También con el cristal, esperaría problemas en el modo HS también, si la distorsión de la señal del oscilador debida a la placa base fuera el problema, pero en el modo HS, el PIC funciona bien.

Normalmente uso los condensadores de 33 pF para los cristales, pero también probé con 15 pF y no pude detectar ningún cambio.

También debo tener en cuenta que este PIC tiene monitor de reloj a prueba de fallas y conmutador de oscilador interno / externo. He intentado habilitarlos a ambos, con la esperanza de que al menos confirmen que el problema está en el oscilador, pero no ayudan con el problema. No hay diferencia si están encendidos o apagados.

También he desactivado para fines de prueba el temporizador de vigilancia, el restablecimiento de reducción de tensión y el restablecimiento de desbordamiento / desbordamiento de pila. Creo que desactivé todas las fuentes de reinicio para este chip. Además, el programa está en un bucle infinito, por lo que no está terminando.

El PCF8583 no tiene ningún problema y continúa funcionando correctamente incluso cuando el PIC se está reiniciando, pero, por otro lado, tiene un voltaje mínimo mucho más bajo.

Desafortunadamente, no tengo un osciloscopio, pero hice algunas pruebas con una tarjeta de sonido (frecuencia de muestreo de 96 kHz) y noté que cuando el RTC está encendido, hay un ruido de 25 Hz en la línea eléctrica . El programa que estoy usando informa de unos 300 mV pico a pico, pero no sé cuánto confiar y no sé si eso sería suficiente para causar algún problema para el PIC. Cuando todo está apagado, el ruido es de alrededor de 100 mV pico a pico, por lo que debería estar bien.

En caso de que ayude, aquí está la imagen de la propia placa: (clic derecho - > ver imagen para tamaño completo)

Entonces, ¿alguien tiene alguna idea de lo que está pasando aquí?

Al final, podría ejecutar el PIC a 20 MHz, pero si necesito más potencia de procesamiento, me gustaría poder ejecutarlo a 40 MHz.

ACTUALIZAR

He colocado otro regulador en la propia placa y el ruido captado por la tarjeta de sonido es mucho menor ahora (alrededor de 50 mV pico a pico), pero no influyó en el problema principal.

    
pregunta AndrejaKo

6 respuestas

10

Este es un consejo bastante antiguo, y no sé si será relevante para su micro, pero hace aproximadamente 4 años hice un proyecto con un PIC18F que encontró extraños reinicios falsos. Después de leer el informe y volver a trotar mi memoria aquí es lo que parece haberlo resuelto:

¿Tiene habilitado el bit de configuración Low Voltage Programming Enable ? ¿Está su pin PGM en PORTB ? Si es así, es posible que desee considerar la desactivación de Low Voltage Programming Enable y Port B A/D Enable en las entradas digitales al reiniciar. De acuerdo con mi informe anterior, lo que estaba sucediendo era que dejábamos PORTB flotando mientras eran entradas analógicas y activábamos el pin PGM . Mirando hacia atrás, no sé si este diagnóstico fue correcto, pero terminamos el proyecto con éxito, así que vale la pena intentarlo.

    
respondido por el Jon L
6

Con una configuración como esta va a ser casi imposible para nosotros decir exactamente qué está mal. Lo que podemos decir, sin embargo, es lo que está mal. Hay muchas cosas mal, o al menos no tan bien como hace frío. Cualquiera de estas cosas podría ser la fuente real de su problema, pero también podría requerir la combinación de problemas que, al sumarse, son iguales al problema que está viendo.

La única forma real de depurar esto es arreglar cualquier cosa que sepa que está mal, independientemente de si es la pistola humeante o no. Eventualmente, el problema se solucionará de una forma u otra.

Cuando una MCU como esta no se ejecuta correctamente, casi siempre tiene que concentrarse en lo básico: Encendido, Reloj y Reinicio. ¡Con un tablero de pruebas, los tres son sospechosos!

El sospechoso # 1 para mí es el reloj de 40 MHz. 40 MHz es bastante rápido correr sobre un cable que flota en el aire. También es rápido estar metido en una placa de pruebas, donde el "sistema de distribución de señal" no está realmente diseñado para altas velocidades. Si se tratara de un PCB, le diría que se asegure de que la impedancia de su traza sea consistente y que termine correctamente sus señales. Desafortunadamente, realmente no puedes hacer eso en una placa de pruebas. Lo mejor que puedo decirte es que mantengas tus cables lo más cortos posible, ¡y luego hazlos aún más cortos! Use un o-scope en la señal del reloj, sondeado directamente en el pin PIC, con el cable GND de la sonda también directamente en el pin GND más cercano en el PIC. Eso te dirá mucho sobre tu reloj.

(Trata de pedir prestado un o-scope si puedes. Va a ser difícil depurar las cosas sin uno)

El sospechoso # 2 es el poder. La potencia también es un gran problema con las tablas de pruebas, ya que la inductancia y la resistencia del alambre son relativamente altas. Aquí de nuevo, mantén los cables cortos. También tengo en cuenta que no tiene ningún límite de desacoplamiento en el oscilador de 40 MHz. Para el OSC iría con un 0.1 uF y algo más grande (4.7 uF a 100 uF) en paralelo. Su PIC también podría usar algo más grande en paralelo con las tapas de 0.1 uF. Normalmente, las tapas más grandes no serían necesarias, pero nada es normal con una placa de pruebas.

El sospechoso # 3 se reinicia. No nos dio ninguna información sobre la señal de reinicio, y diría que es la más baja de lo que sospecho, pero debería verificarla de todos modos. Ponga un o-scope en él y vea qué está pasando. Es posible que pueda utilizar simplemente un voltímetro. Si el voltaje en el pin de reinicio está cerca del nivel de umbral, entonces necesita repararlo.

Ahora, repasemos las cosas que probaste:

Hiciste muchos experimentos colocando límites en las líneas eléctricas, con resultados escasos o confusos. Este es uno de esos momentos en los que solo tienes que poner algunos límites allí y no te preocupes si están haciendo algo positivo o no. Podría ser que su poder sea ruidoso, pero es solo una de varias cosas que están causando el problema. Agregue tapas más grandes en paralelo con las tapas de 0.1 uF en el PIC. Añadir gorras al oscilador de 40 MHz. Asegúrese de que los cables sean lo más cortos posible. Luego pasa a la siguiente cosa.

Las tapas adicionales en el poder es una de esas cosas que probablemente no causen problemas. Es por eso que puedes ponerte un poco y no preocuparte demasiado por ellos. Especialmente con tapas de 10-100 uF.

Más tarde, una vez que todo esté funcionando, puede eliminar estos límites uno por uno y ver si el problema vuelve. Si no vuelve, entonces las tapas no eran el problema. Pero por ahora necesita eliminar esto como un problema potencial pero agregando mayúsculas.

Si bien los pines flotantes pueden ser un problema, rara vez son un problema lo suficientemente grande como para causar que una MCU se bloquee. Vale la pena arreglarlo, ya que causa otros problemas, pero es muy poco probable que sea el problema aquí. Nota: una forma sencilla de evitar que el pin no utilizado flote es establecerlos como salidas. Alto o bajo, no importa. Pero si el PIC está manejando esos pines, entonces no pueden flotar.

    
respondido por el user3624
4

No mencionaste el pin PGM (a veces llamado LVP). Esto debe estar vinculado bajo o LVP deshabilitado en los bytes de conifig.

¿Estás seguro de que este PIC puede tomar 40 MHz directamente? Algunos solo pueden alcanzar 40 MHz a través del PLL interno. No revisé la hoja de datos, pero debería hacerlo. Incluso si fuera así, no esperaría que 40 MHz en una placa se comportara bien. Creo que debería poder hacer funcionar el PIC con un cristal de 10 MHz y el PLL interno de 4x, aunque si tiene cuidado con el tablero y coloque tapas de desvío en los lugares correctos.

Este tipo de pregunta surge regularmente. En lugar de repetir todos los problemas típicos, consulte enlace .

    
respondido por el Olin Lathrop
2

Debo estar de acuerdo con David. Hay tantos cables largos, y 40MHz en una placa es bastante optimista. No puedo creer que su tiempo realmente valga tan poco que no puede permitirse hacer un pequeño prototipo de PCB . Estas cosas solo cuestan alrededor de £ 30 de PCB Train . Estoy seguro de que habrá alguien cerca de usted que pueda proporcionarle información similar.

¿Por qué no hacer esto? Diseñe una PCB que tenga el PIC, el oscilador y el regulador como componentes SMD, luego una carga completa de tiras de placa perf. De esta manera, aún puede hacer su creación de prototipos, pero asegúrese de que el PIC esté satisfecho.

    
respondido por el Rocketmagnet
1

si tiene un generador externo de variable F, considere usarlo para probar el diseño / chip en busca de problemas. y encuentre una F externa que cause fallas. y recuerde que los cables de tierra extendidos actúan como una antena para interferencia entre ruidos.

    
respondido por el Tony EE rocketscientist
0

sonda parece que necesita una sonda lógica, dvm o alcance... enlace

Coloque la tapa en el chip de reloj V + / gnd y Considere el par trenzado para 40MHZ si está lejos. La imagen xtal tiene entrada y salida. Compruebe el nivel de CC de salida invertida = v / 2? .. ¿Pic se calienta? ha ..

Sugiero el modo de 10MHz Xtal PLL a 40MHz para evitar problemas de diseño.

"El modo HSPLL hace uso del oscilador en modo HS para frecuencias de hasta 10 MHz. A continuación, un PLL multiplica la frecuencia de salida del oscilador por 4 para producir una frecuencia de reloj interno de hasta 40 MHz. El PLL solo está disponible para el oscilador de cristal cuando los bits de configuración FOSC3: FOSC0 están programados para el modo HSPLL (= 0110). "

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas