El circuito PIC no se mantendrá encendido

1

He construido un simple secuenciador de LED utilizando PIC 18f4550. Las salidas son 10 pines en los puertos C y amp; D. Ahora he construido (soldado) este circuito 3 veces y todavía solo se enciende de forma intermitente. Instalé un LED de encendido muy bajo para ayudar a solucionar problemas. Observo que si toco el chip o ciertas áreas del tablero, el circuito funciona (y la luz de encendido está encendida). Pero se apaga intermitentemente. Casi como si hubiera una conexión suelta o algún problema capacitivo. El circuito funciona bien cuando la luz de encendido está encendida. Los síntomas son los mismos ya sea para el tablero o para soldar. Ideas?

Gracias

disculpe la crudeza de este dibujo.

    
pregunta Mark

7 respuestas

5

Es probable que falte un pullup en el pin de reinicio (/ MCLR)

    
respondido por el Jim Paris
5

"TODO" lo que debes hacer es pasar la lista de verificación de cordura estándar y funcionará:

Agregue a estos, ajústelos a sus perspectivas, luego imprímalos y póngalos en la frente para futuras referencias.

Cuando esté en problemas, reagrúquese, acorte las líneas de batalla, retírese tácticamente y concentre sus fuerzas en las áreas de ataque conocidas, también conocido como el sistema mínimo posible que no falla, apague cualquier código que no sea necesario, desactive todos los periféricos, etc. no es necesario, descarte todo lo que pueda incluso de lo que "necesita" hasta que vuelva a un estado estable. Luego avanza un cambio a la vez. Tenga en cuenta que si realiza 3 cambios a b c en orden y a y b funcionan bien yc no, entonces, por ejemplo, a + c puede producir una falla combinada entre ellos, puede que no sea la única culpa la que falla c.

Si no muestra lo que hay en cada pin en su diagrama de circuito, está abusando de aquellos que buscan ayudarlo y corre el riesgo de engañarse a sí mismo *.

Si ha establecido un estado modificable mediante programación o inicialización en cualquier pin, debe decir lo que ha hecho; de lo contrario, está abusando de quienes buscan ayudarlo y corre el riesgo de engañarse a sí mismo *.

Ir a través de la hoja de datos y confirmar que CADA pin está conectado a algo válido en función de su estado lógico. Escribe lo que has hecho en el diagrama del circuito y las notas asociadas.

Describa TODAS las acciones configurables programáticas o de inicialización que haya realizado. Se asume el valor predeterminado de la hoja de datos para cualquier cosa que no diga que haya establecido. Indicar cuál es el valor predeterminado de la hoja de datos en cada caso ayuda a las personas a ayudarle y no a engañarse.

Cada pin de tierra debe estar conectado a tierra.

Cada pin Vdd debe estar conectado a Vdd.

CADA la entrada debe estar conectada a un estado definido conocido por una ruta de resistencia no superior a la permitida legalmente por la hoja de datos. (El caso límite, si no se especifica lo contrario, es (voltajes de compensación + corrientes de polarización x Trayectoria de la resistencia + voltaje del punto de terminación) todo configurado en el peor valor de caso y la polaridad en cada caso siempre debe colocar el pin en un rango de voltaje válido. (Un pullup interno o pulldown califica como un estado conocido siempre y cuando realmente lo implementes).

Cada estado de pin de control debe conocerse y establecerse en un nivel que especifique un estado que sea aceptable para usted en la configuración general que haya elegido.

Cualquier tiempo de generación de interrupciones operativas debe producir resultados conocidos y conocibles.
 Conocido: por ejemplo, si tiene una operación de interrupción del temporizador de vigilancia, se debe evitar que actúe por acción del programa o del hardware O debe producir un resultado válido cuando actúa.
 Conocible: si tiene una interrupción en vivo, el vector debe configurarse y debe ir a un código válido cuyo resultado sea aceptable.
Las interrupciones de interrupción de tensión deben configurarse para que las fuentes de alimentación utilizadas sean válidas.

Sepa qué hay en los registros de datos, ya sea mediante una configuración masiva durante el inicio o mediante una configuración explícita que es una parte inevitable de una rutina O bien, sepa que no importa en un caso determinado. Si la configuración masiva al inicio, asegúrese de que esta sea una razón válida para usar el registro con confianza posteriormente. No hay condiciones ESD.

IC no dañado.

La fuente de alimentación no es puntiaguda / ruidosa / marrón.

"Demasiado difícil" y "no puedo entender" no son condiciones entendidas por un microcontrolador o Murphy. Si un periférico o registro tiene opciones que no puede dominar con confianza, entonces para estar seguro de los resultados, DEBE seleccionar alguna otra opción para ese periférico o registrar que está seguro de que [tm] entiende completamente. por ejemplo, si hay un temporizador del que no es maestro, desactívelo. Si usa un vector de interrupción, entiéndalo completamente. Si no lo hace y no puede o no quiere pasar el tiempo, NO GUIAR: deshabilítelo en esta etapa hasta que el sistema esté estable.

TODO lo anterior constituye un grado mínimo de rigor al programar e implementar incluso los sistemas de microcontroladores más triviales. Si no puede o no hará todo lo anterior en cada ocasión, entonces no está haciendo lo mínimo necesario para hacer el trabajo correctamente.

    
respondido por el Russell McMahon
1

Déjame intentar decir lo obvio, pero a veces eso es lo que se necesita ...

¿Conectó los pines 11, 12, 31 y 32 a la alimentación y al GND? Sé que esto suena como una pregunta estúpida, pero no lo es. He visto que los chips que no tienen energía / energía conectada aún funcionan como debido a fugas y otras cosas en los pines de E / S. ¡Incluso he visto que esto suceda en PCB's que estaban en producción en volumen! Sus esquemas muestran límites en esos pines, pero no en potencia / gnd. Pensé que valía la pena mencionarlo.

    
respondido por el user3624
1

Cada vez que puede tocar un componente y obtener el resultado deseado, casi siempre es un problema de conexión a tierra. Como se indicó anteriormente, asegúrese de que todos los pasadores de gnd necesarios estén tirados hacia abajo y use una conexión a tierra común. Por lo general, cuando toca la PCB, el chip o la placa y se pone en funcionamiento la imagen, se debe a que existe un problema de bucle a tierra y su cuerpo actúa como una resistencia gigante de mega ohmios que arrastra el circuito a tierra y crea una conexión a tierra común para su circuito.

    
respondido por el KP44
0

El PIC puede estar ingresando en el modo de Programación de baja tensión (LVP). De la

  

Mientras se realiza la programación con programación de un solo suministro, se aplica VDD a   el pin MCLR / VPP / RE3 como en el modo de ejecución normal. Para entrar en Programación   modo, VDD se aplica al pin PGM.

Por defecto, la programación LVP está habilitada. Esto significa que cada vez que el pin PGM se eleva, el PIC se reinicia.

Una forma fácil de verificar si esto soluciona el problema es agregar una resistencia desplegable (4.7k - 50k) desde el pin PGM de su dispositivo a tierra. Este es el pin 38 en el dispositivo en su esquema.

La otra solución es borrar el bit LVP en los registros de configuración de dispositivos:

¡No modifique el registro de configuración si necesita utilizar el modo LVP para programar su chip!

    
respondido por el justing
0

Ya hay muchas respuestas geniales aquí, pero no he visto a nadie mencionar que no hay un oscilador en el esquema. ¿Está utilizando un oscilador interno? Si no tiene un oscilador configurado correctamente, su circuito no funcionará. También estoy de acuerdo KP44, el comportamiento intermitente suena como un problema de conexión a tierra.

    
respondido por el Brandon Bailey
0

Tuve un problema similar. En mi caso / MCLR fue elevado pero no había eliminado PGM bajo. Tirar del registro PGM solucionó mi problema

Quizás esto puede ahorrarle a alguien un poco de tiempo

    
respondido por el Andre

Lea otras preguntas en las etiquetas