Reinicio del microcontrolador

1

Estoy enfrentando un problema de reinicio del microcontrolador. Estoy pensando en implementar lo siguiente para encontrar la función en la que sucede y luego la causa raíz. Tan pronto como ingrese a una función, incrementaré una variable global y la almacenaré en eeprom. Una vez que se realiza un reinicio, puedo identificar el evento, ya que comenzaré desde main, y leeré el último valor de eeprom. De esto puedo saber en qué función se realizó el restablecimiento. Ahora mi principal preocupación es si terminaré el ciclo de escritura de esa ubicación de memoria de eeprom. El reinicio ocurre aproximadamente después de cada 2 horas. Cualquier idea mejor o está bien escribir en eeprom.

    
pregunta rajesh

1 respuesta

2

Es poco probable que su enfoque ayude. Primero, el restablecimiento puede no estar relacionado con la función actual: un tiempo límite de vigilancia o un ISR mal configurado son causas comunes. En segundo lugar, incluso si descubre la función que activa el restablecimiento, no hay ninguna indicación de que esta función tenga errores. Quizás una variable utilizada por esta función fue destruida por un desbordamiento de pila que ocurrió en otro lugar.

Mi consejo es simplificar su firmware a la funcionalidad básica más básica y verificar si esa parte puede ejecutarse limpiamente. Luego, incluirá funciones adicionales hasta que vuelva a aparecer el restablecimiento, y buscará los errores en la función que se incluyó en último lugar.

También asegúrate de tener suficiente espacio de pila. Si tiene funciones recursivas, comience eliminándolas o al menos revisándolas escrupulosamente.

Como mencionas que estás usando CAN, te sugiero que revises XCP que se puede usar para el registro de errores.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas