¿Cuál es la razón detrás del microcontrolador 8051 no está ejecutando el código hasta que lo reinicie manualmente?

Estoy simplificando un poco aquí, pero su microcontrolador tiene mucha memoria volátil dentro. Tiene RAM, registros de CPU, SFR, etc. También tiene otros circuitos lógicos que tienen algún tipo de ‘memoria’ en su interior. Pero las celdas de memoria volátiles están destinadas a mantener un valor previamente establecido siempre que tengan poder. Cuando se desconecta la alimentación y luego se vuelve a conectar, no puede predecir qué valores pueden tener estas celdas. Algunos de ellos pueden mantener sus valores previamente establecidos, algunos de ellos pueden haber perdido sus valores anteriores.

Por esta razón, todos los microcontroladores tienen un pin de reinicio, que cuando se activa, restablece todas las celdas de memoria interna a sus estados iniciales válidos. Por ejemplo, establece todos los registros de la CPU en 0 y el contador del programa al inicio de la memoria flash. Y las placas que usan microcontroladores tendrán un circuito POR (reinicio de encendido) que, al encenderse, activa el pin de reinicio durante un tiempo suficientemente largo para garantizar que se haya realizado un reinicio. Una vez que esto sucede, el microcontrolador comenzará a extraer instrucciones una por una. Si un circuito POR no está presente o no funciona correctamente, es posible que deba reiniciarlo manualmente para que se inicie la ejecución del programa.

Um, está bien … todos hemos estado allí, y lo hemos hecho también.

Entonces, ¿dices que hasta que reinicies el código no se ejecuta?

Responda, ¿lo hace siempre cuando lo reinicia? Va y se detiene en alguna parte?

Si su respuesta es sí, supondré que sí.

Entonces, ahora, debes averiguar dónde está la verdadera parada. Déjame decirte que para nosotros puede parecer que el controlador ha detenido la ejecución, pero no es el caso. En realidad se está ejecutando, algo. Un controlador no puede y no se detendrá ante algo, a menos y hasta que usted lo solicite. Si se ha detenido, entonces es un diseño realmente fundamentalmente malo. Y el sistema integrado no debe detenerse.

Ok, volviendo a tu problema.

Veo las siguientes posibilidades:

  • Su sistema integrado no se ejecuta infinitamente.
  • El controlador está atascado en un bucle infinito. [Es decir, es posible que hayas escrito un código que dice: busca algo y, a menos que lo encuentres, no vuelvas. Ejemplo: busque presionar un botón o espere hasta que ADC o DAC o cualquier otra cosa haya hecho su trabajo]
  • Un escenario poco probable, pero échale un vistazo: ¿el código se muestra correctamente? ¿Están los puertos inicializados? ¿Está bien el reloj? Echa un vistazo de todos modos, nadie perfecto, podemos equivocarnos en alguna parte.

Creo que si echas un vistazo a los anteriores, tu pregunta debería ser respondida. Pero incluso si no encuentra al culpable, eche un vistazo a su código C, puede haber violaciones de memoria, etc.

Siempre para resolver algo como esto, un depurador debería ayudarte. Si no tiene uno, escriba un depurador de software usted mismo.

¡Espero que encuentres el error! Buena suerte

Comparta lo que hizo antes de reiniciar el microcontrolador. El conocimiento de los eventos anteriores es necesario antes de que alguien pueda intentar responderte, aparte de adivinar tu problema y su solución.

Para borrar los valores de los registros y es RAM.

More Interesting

¿Es necesario aprender sobre microcontroladores y microprocesadores para sistemas integrados?

¿El sistema wifi está integrado o necesitamos un sistema operativo incorporado para wifi?

¿Qué tipo de pasantías son mejores si uno está interesado en sistemas integrados, investigación o capacitación industrial?

Empecé a trabajar en Raspberry Pi usando Python. Tengo el problema de que los programas que se ofrecen en Internet no se explican. P.ej. para ejecutar UART se proporciona un archivo llamado 'serial'. ¿Cómo sabría qué funciones se dan en este archivo y qué opciones de parámetros están disponibles?

¿Cuáles son algunos sitios de autoformación en sistemas integrados para un estudiante de ECE?

¿Cuál es la diferencia entre AVR y ARM?

¿Por qué son importantes los sistemas integrados, que son herramientas, dispositivos y equipos pequeños, rápidos y muy potentes que se han convertido en parte de nuestra vida cotidiana?

¿Cuáles son las cosas que uno debe aprender en un sistema integrado?

¿Cuál es la mejor manera de aprender AVR?

¿Cuáles son los temas candentes de los sistemas embebidos?

¿Qué puedo hacer para hacer crecer una carrera en sistemas integrados?

¿Cuáles son algunas competencias para sistemas integrados y robótica para individuos?

¿Cuáles son las características del sistema embebido?

¿Qué debo prepararme para descifrar el trabajo del firmware incorporado?

¿Hay algún trabajo para los programadores de C en campos distintos de los sistemas integrados?