Construí un secuenciador LED simple usando PIC 18f4550. Las salidas son 10 pines en los puertos C&D. Ahora he construido (soldado) este circuito 3 veces y todavía solo se enciende de forma intermitente. Instalé un LED de "encendido" de corriente muy baja para ayudar a solucionar problemas. Noto que si toco el chip o ciertas áreas de la placa, el circuito funciona (y la luz de encendido se enciende). 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 en tablero o soldado. ¿Ideas?
Gracias
por favor disculpe la crudeza de este dibujo.
Probablemente te falte un pullup en el pin de reinicio (/MCLR)
"TODO" lo que debe hacer es pasar la lista de verificación de cordura estándar y funcionará:
Agréguelos, ajústelos para que se adapten a sus perspectivas, luego imprímalos y fíjelos en su frente para futuras referencias.
Cuando esté en problemas, reúnase, acorte las líneas de batalla, retírese tácticamente y concentre las fuerzas en las áreas de ataque conocidas, es decir, ponga en marcha el mínimo sistema posible que no falle, apague cualquier código que no sea necesario, deshabilite cualquier periférico, etc. necesita, deseche todo lo que pueda incluso de lo que "necesita" hasta que vuelva a un estado estable. LUEGO avance un cambio a la vez. Tenga en cuenta que si realiza 3 cambios abc en orden y a y b funcionan bien y c no, por ejemplo, a+c puede producir una falla combinada entre ellos; puede que no sea solo c la falla.
Si no muestra lo que hay en cada pin en su diagrama de circuito, entonces está abusando de aquellos que buscan ayudarlo y arriesgándose a engañarse a sí mismo*.
Si ha establecido un estado modificable programáticamente o de inicialización en cualquier pin, debe decir lo que ha hecho, ya que de lo contrario está abusando de aquellos que buscan ayudarlo y corre el riesgo de engañarse a sí mismo *.
Revise la hoja de datos y confirme que CADA pin esté conectado a algo válido en función de su estado lógico. Escriba lo que ha hecho en el diagrama del circuito y las notas asociadas.
Describa TODAS las acciones configurables mediante programación o de inicialización que haya realizado. Se asume el valor predeterminado de la hoja de datos para cualquier cosa que no diga que ha establecido. Indicar cuál es el valor predeterminado de la hoja de datos en cada caso ayuda a las personas a ayudarlo y lo ayuda a no engañarse a sí mismo.
Cada pin de tierra debe estar conectado a tierra.
Cada pin Vdd debe estar conectado a Vdd.
CADA 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 (voltaje de compensación + corrientes de polarización x ruta de resistencia + voltaje del punto de terminación) todo configurado en el peor de los casos 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 que realmente lo implemente).
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 ha elegido.
Cualquier tiempo de generación de interrupción operativa debe producir resultados conocidos y conocibles.
Conocido: por ejemplo, si tiene un temporizador de vigilancia que interrumpe la operación, se debe evitar que actúe mediante el programa o la acción del hardware O debe producir un resultado válido cuando actúa.
Conocible: si tiene una interrupción en vivo, su vector debe establecerse y debe ir a un código válido cuyo resultado sea aceptable.
Las interrupciones de caída de voltaje 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 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. Sin condiciones ESD.
IC no dañado.
La fuente de alimentación no presenta picos, ruidos ni caídas de tensión.
"Demasiado difícil" y "no se puede entender" no son condiciones comprendidas 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 registro que esté seguro [tm] de que comprende completamente. por ejemplo, si hay un temporizador que no domina, 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 ADIVINE.- Desactívelo en esta etapa hasta que el sistema se estabilice.
TODO lo anterior constituye un mínimo grado de rigor a la hora de programar e implementar incluso los sistemas de microcontroladores más triviales. Si no puede o no quiere hacer todo lo anterior en cada ocasión, entonces no está haciendo lo mínimo necesario para hacer el trabajo correctamente.
Permítanme tratar de 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 GND? Sé que suena como una pregunta estúpida, pero no lo es. He visto chips que no tienen alimentación/GND conectados y que todavía funcionan debido a fugas y otras cosas en los pines de E/S. ¡Incluso he visto que esto sucede en PCB que estaban en producción en volumen! Su esquema muestra tapas en esos pines, pero no power/gnd. Pensé que valía la pena mencionarlo.
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 pines de conexión a tierra necesarios estén bajados y use una conexión a tierra común. Por lo general, cuando toca la placa de circuito impreso, el chip o la placa y hace que la imagen funcione, se debe a que hay un problema de bucle de tierra y su cuerpo actúa como una resistencia gigante de mega ohmios que lleva el circuito a tierra y crea una conexión a tierra común para su circuito.
El PIC puede estar ingresando al modo de programación de bajo voltaje (LVP). De la hoja de datos PIC18f4550 :
Mientras se programa utilizando Programación de suministro único, VDD se aplica al pin MCLR/VPP/RE3 como en el modo de ejecución normal. Para ingresar al modo de programación, se aplica VDD al pin PGM.
Por defecto la programación LVP está habilitada. Esto significa que cada vez que el pin PGM sube, el PIC se reinicia.
Una manera fácil de verificar si esto soluciona el problema es agregar una resistencia desplegable (4.7k - 50k) desde el pin PGM en 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:
¡Sin embargo, no cambie el registro de configuración si necesita usar el modo LVP para programar su chip!
Ya hay muchas respuestas excelentes aquí, pero no he visto a nadie mencionar que no hay un oscilador en el esquema. ¿Estás usando un oscilador interno? Si no tiene un oscilador configurado correctamente, su circuito no funcionará. También estoy de acuerdo con KP44, el comportamiento intermitente suena como un problema de conexión a tierra.
Tuve un problema similar. En mi caso, /MCLR se elevó alto pero no había bajado PGM. Extraer el registro de PGM solucionó mi problema
Tal vez esto pueda ahorrarle a alguien un poco de tiempo.
m.alin
m.alin
Marca
Marca
m.alin
leon heller
m.alin
david tweed
Marca
Marca