Estoy usando el controlador Atmega128L. Una de las tareas principales es controlar un actuador lineal. La alimentación del accionador y la alimentación del controlador son diferentes (inicialmente fue diseñado para compartir una conexión a tierra común). Los relés que se utilizan para controlar el actuador utilizan la misma alimentación que el controlador. Todas las demás entradas y salidas son a través del aislamiento. La línea de 3.3 V al controlador no es tan ruidosa, incluso durante el encendido del relé, apague.
El problema al que me estoy enfrentando está relacionado con el reinicio del microcontrolador. Este reinicio ocurre cuando el actuador golpea el interruptor de límite eléctrico incorporado (que corta la potencia del motor). Al parecer, este es el momento en que el motor utiliza la máxima potencia.
El flujo de código es de tal manera que un restablecimiento normal no afectaría su funcionalidad. Se recuperaría a la perfección. Sin embargo, cuando se produce el restablecimiento, el controlador parece funcionar incorrectamente, omite parte del código, no siguiendo el procedimiento de inicialización adecuado, ejecuta funciones que están en la memoria pero que no se llaman en ningún lugar del código actual. Debido a esto, el controlador muestra algún estado de error ilógico (según el código), o corrompe los Ic con los que está conectado. La mayoría de las veces, un reinicio de encendido o reinicio externo adecuado hace que el controlador funcione correctamente.
¿Cómo puedo asegurarme de que el controlador se reinicie correctamente?
Editar: Perdóname por la mala letra.
Editar: No niego que haya un ruido en el rango de nanosegundos en el suministro de 3.3V. Estoy muy preocupado por la respuesta del controlador al ruido. Espero que se restablezca correctamente el restablecimiento de la tensión o se reinicie el watchdog cuando se produzca el ruido, en lugar de que la PC salte a una ubicación aleatoria o se dañe la pila.
Mi controlador funciona con un reloj externo de 8Mhz, la velocidad máxima es de 8Mhz