"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.