PIC sigue reiniciando: ¿Estoy viendo efectos secundarios por el uso de la placa de pruebas?

11

Estoy usando PIC18F4680 y tengo problemas para ejecutarlo desde una fuente de reloj externo 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 por un tiempo y comienza de nuevo. El período total del ciclo es de alrededor de 5 segundos, de los cuales el PIC funciona deja de funcionar a principios del segundo segundo.

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

He leído en algunos sitios que pueden ocurrir problemas similares a los míos debido al mayor consumo de energía del PIC en frecuencias más altas y el voltaje de operación más bajo. En esos casos, si hay algunas caídas de voltaje cortas 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 condensadores 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 unos condensadores de tantalio de con la esperanza de que fueran lo suficientemente grandes y que tuvieran una ESR lo suficientemente baja como para solucionar el problema . Uno no ayudó y el segundo tampoco ayudó. Así que agregué un condensador de aluminio de y eso tampoco ayudó.100 μ F 470 μ F10 μF100 μF470 μF condensador de aluminio sin 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 fines de prueba estoy usando Vcc de 5.5 V, que es el voltaje nominal más alto para este microcontrolador. Esto debería dejarme espacio hasta los 4.2 V, que es el voltaje de operación más bajo a 40 MHz

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

Debido a la longitud del cable que va desde la salida del oscilador hasta la entrada del oscilador en el PIC, esperaba problemas con él, 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, también esperaría problemas en el modo HS, si la distorsión de la señal del oscilador debido a la placa de prueba era el problema, pero en el modo HS, el PIC funciona bien.

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

También debo señalar que este PIC tiene un monitor de reloj a prueba de fallas y un cambio de oscilador interno / externo. He intentado habilitarlos a ambos, esperando 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 deshabilitado para fines de prueba el temporizador de vigilancia, el restablecimiento de caída y el restablecimiento de desbordamiento / desbordamiento de pila. Creo que apagué 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 reinicia, 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 de alimentación. El programa que estoy utilizando informa unos 300 mV pico a pico, pero no sé cuánto confiar en él 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 placa de pruebas en sí: (clic derecho-> ver imagen a tamaño completo) ingrese la descripción de la imagen aquí

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 placa de pruebas y el ruido recogido por la tarjeta de sonido es mucho más bajo ahora (alrededor de 50 mV pico a pico), pero no influyó en el problema principal.

AndrejaKo
fuente
1
Hmm, iba a sugerir WDT y atenuación, pero los has desactivado. ¿Sabes que hay algunas erratas con el apagón para ese PIC? Nunca he intentado ejecutar un PIC tan rápido en una placa de pan. Usamos el 18F4580 todo el tiempo con un oscilador de 10MHz y HSPLL. Funcionan bien
Rocketmagnet
2
Olvide la placa de prueba (nunca la uso) y use una PCB adecuada, le ahorrará mucho tiempo.
Leon Heller
3
@Leon Heller Puede ahorrar mucho tiempo, pero en este momento, el PCB es más costoso que mi tiempo, especialmente porque ni siquiera tengo una lista de todos los componentes principales que usaré.
AndrejaKo
1
@AndrejKo Esto suena como uno de esos problemas que me dan ganas de acurrucarme y llorar. ¿Estás SEGURO de que tu tiempo vale tan poco? Acabo de hacer el PCB, ¡generalmente también es muy divertido!
AngryEE
1
@AndrejaKo: Si no te importa esperar una semana más o menos, he tenido un gran éxito con este pedido grupal de PCB: dorkbotpdx.org/wiki/pcb_order . Si no quieres hacer el tuyo, eso es
Chris Laplante

Respuestas:

12

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 restablecimientos espurios. Después de leer el informe y volver a activar mi memoria, esto es lo que parece haberlo resuelto:

¿Tiene Low Voltage Programming Enablehabilitado el bit de configuración? ¿Está tu PGMpin PORTB? Si es así, puede considerar deshabilitar ambas Low Voltage Programming Enabley Port B A/D Enablelas entradas digitales al reiniciar. Según mi informe anterior, lo que estaba sucediendo era que dejábamos PORTBflotando mientras eran entradas analógicas y activaban el PGMpin. Mirando hacia atrás, no sé si este diagnóstico fue correcto, pero terminamos ese proyecto con éxito, por lo que vale la pena intentarlo.

Jon L
fuente
¡Interesante! Hace solo unos minutos, noté que tener un programador conectado afectó el problema y ahora esta respuesta. Deshabilité el puerto BA / D y el LVP y hasta ahora está funcionando bien. Podría ser algún tipo de interacción extraña en el pin PGM.
AndrejaKo
@AndrejaKo, eso suena muy familiar por lo que experimenté. Espero que se mantenga estable ... el hardware complicado puede ser extremadamente frustrante cuando intentas hacer algo: S
Jon L
1
Bueno, ha estado funcionando bien durante 21 minutos y 30 segundos. Espero que siga así. Lo dejaré funcionando durante la noche y veré si se restablece.
AndrejaKo
¡Excelente! Me alegro de que haya resuelto el problema.
Abdullah Kahraman
1
Hice mi día hermano, pasé un día entero tratando de descubrir por qué en la tierra mi PIC 16F887 se reiniciaba cada pocos ms. Se configuró el bajo voltaje en el circuito programado y el pin PGM flotante estaba recogiendo ruido que activaba el reinicio. +1 representante para ti
Gianluca Ghettini
7

Con una configuración como esta, será casi imposible para nosotros decir exactamente qué está yendo 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, cuando se suman, 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. Finalmente, el problema se solucionará de una forma u otra.

Cuando un MCU como este no funciona correctamente, casi siempre tiene que centrarse en lo básico: encendido, reloj y reinicio. ¡Con una placa de pruebas, los tres son sospechosos!

El sospechoso número 1 para mí es el reloj de 40 MHz. 40 MHz es bastante rápido para correr sobre un cable que flota en el aire. También es rápido estar metido en una placa de prueba, donde el "sistema de distribución de señal" no está realmente diseñado para altas velocidades. Si se tratara de una PCB, le diría que se asegure de que su impedancia de rastreo sea consistente y que termine correctamente sus señales. Desafortunadamente 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 osciloscopio 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.

(Intente pedir prestado un o-scope si puede. Será difícil depurar las cosas sin uno).

El sospechoso # 2 es el poder. La potencia también es un gran problema con las placas de prueba, ya que la inductancia y resistencia del cable es relativamente alta. Aquí nuevamente, mantenga los cables cortos. También noto 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 no se requerirían las tapas más grandes, pero nada es normal con una placa de prueba.

El sospechoso # 3 se reinicia. No nos dio ninguna información sobre la señal de reinicio, y yo diría que es lo más bajo de lo que sospecho, pero debe verificarlo de todos modos. Póngale un o-scope y vea qué está sucediendo. Es posible que pueda simplemente usar un voltímetro. Si el voltaje en el pin de reinicio está cerca del nivel de umbral, entonces debe solucionarlo.

Ahora, repasemos las cosas que probaste:

Hiciste muchos experimentos colocando tapas en las líneas eléctricas, con pocos o confusos resultados. Este es uno de esos momentos en los que solo tienes que poner algunas tapas allí y no te preocupes si están haciendo algo positivo o no. Puede ser que su energía sea ruidosa, pero es solo una de varias cosas que causan el problema. Agregue tapas más grandes en paralelo con las tapas de 0.1 uF en el PIC. Agregue tapas al oscilador de 40 MHz. Asegúrese de que los cables sean lo más cortos posible. Luego pase a lo siguiente.

La limitación de potencia adicional es una de esas cosas que es poco probable que cause 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 quitar estas tapas de una en una y ver si el problema vuelve. Si no regresa, entonces los límites no fueron el problema. Pero por ahora necesita eliminar esto como un problema potencial pero agregando mayúsculas.

Si bien los pines flotantes podrían ser un problema, rara vez son un problema lo suficientemente grande como para provocar un bloqueo de una MCU. Vale la pena arreglarlo, ya que causa otros problemas, pero es muy poco probable que sea el problema aquí. Nota: ¡una manera simple de evitar que el pin no utilizado flote es configurarlos como salidas! Alto o bajo, no importa. Pero si el PIC está impulsando esos pines, entonces no pueden flotar.


fuente
2
Una buena respuesta Todos esos cables largos y desordenados solo me hicieron pensar que tratar de hacer que esto funcionara en una placa de prueba desagradable no valía el tiempo y la miseria.
Rocketmagnet
Buena lista! Informaré los resultados cuando lo revise.
AndrejaKo
4

No mencionaste el pin PGM (a veces llamado LVP). Esto debe estar atado bajo o LVP deshabilitado en los bytes coníferos.

¿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ías. Incluso si es así, no esperaría que 40 MHz en una placa se comporten bien. Sin embargo, creo que debería poder ejecutar el PIC con un cristal de 10 MHz y el PLL interno de 4x si tiene cuidado con la placa de pruebas y coloca las tapas de derivación en los lugares correctos.

Este tipo de pregunta surge regularmente. En lugar de repetir todos los problemas típicos, consulte /electronics//a/29620/4512 .

Olin Lathrop
fuente
Parece que tenemos dos respuestas correctas aquí :)
Abdullah Kahraman
2

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

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

PC prototype perf board

Rocketmagnet
fuente
2
¡Ah, me encanta el 3D de Altium! Por cierto, £ 30 puede ser alto para un estudiante :) Es mejor usar una placa de perf o mejor, una PCB casera.
Abdullah Kahraman
1
Debería lograr hacer una PCB casera, definitivamente intentaré con esta idea.
AndrejaKo
2
@AndrejaKo - Genial. Danos una marca entonces :) - O incluso solo coloca dos filas de tiras de alfiler, para que puedas enchufarlo en una placa de pruebas.
Rocketmagnet
1

Si tiene un generador externo variable F, considere usarlo para probar el diseño / chip en busca de problemas. y encuentre la F externa que causa la falla. y recuerde que los cables de tierra extendidos actúan como antena para la interferencia de ruido.

Tony Stewart Sunnyskyguy EE75
fuente
0

la sonda parece que necesita una sonda lógica, dvm o alcance ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

Coloque la tapa sobre el chip de reloj V + / gnd y considere el par trenzado para 40MHZ si está lejos. Pic xtal tiene entrada y salida ... verifique el nivel de CC de salida invertida = v / 2 .. se calienta Pic? decir ah..

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

"El modo HSPLL utiliza el oscilador del modo HS para frecuencias de hasta 10 MHz. Un PLL luego multiplica la frecuencia de salida del oscilador por 4 para producir una frecuencia de reloj interna de hasta 40 MHz. El PLL solo está disponible para el oscilador de cristal cuando el FOSC3: los bits de configuración FOSC0 se programan para el modo HSPLL (= 0110) ".

Tony Stewart Sunnyskyguy EE75
fuente
De hecho, intenté usar HSPLL y cristal de 10 MHz, pero en modo HSPLL muestra los mismos resultados que el oscilador. Funciona bien en modo HS.
AndrejaKo
Además, el PIC no se calienta durante el uso, por lo que puedo ver.
AndrejaKo