¿Qué es mejor después de reescribir la ROM en un PIC16F? Una instrucción de reinicio de software o un reinicio de watchdog

0

Estoy trabajando en un proyecto donde la uP se puede calibrar en cualquier momento. Los nuevos valores calibrados se almacenan en la ROM de uPs. Una vez completada la calibración, tengo que restablecer la uP para que la función de inicialización pueda leer los nuevos valores calibrados.

Sin embargo, no estoy seguro de cuál podría ser una mejor implementación ... restablecer la uP con un reinicio del software (incluido en la biblioteca) o usar un temporizador de vigilancia para realizar el trabajo. Mientras que ambos pueden proporcionar la misma función; No estoy seguro de cuál será la mejor implementación.

También pensé que sería una buena discusión para conocer las opiniones de las personas :)

¡Gracias!

PS: estoy usando un PIC16f1936 y desarrollo mi código en C usando MPLAB X IDE v2.15.

    
pregunta user1651453

2 respuestas

2

Yo diría que su programa es subóptimo si solo lee los valores de calibración una vez (al inicio). Si los vuelve a leer continuamente, puede evitar la necesidad de un reinicio por completo y evitar la posibilidad de que se produzca un fallo en los valores almacenados en la RAM.

En lo que respecta al reinicio real, hay una instrucción RESET y una ejecución que probablemente sería la mejor (compruebe las fuentes o desmonte el código emitido para ver qué hace realmente esta función de biblioteca). Esto debería establecer todos los registros a sus valores predeterminados de encendido y dejar los que son 'u' iguales.

Inhibir sus restablecimientos periódicos de WDT tiene cierto atractivo, ya que en realidad probaría que WDT es funcional. Sin embargo, si está probando la fuente del reinicio en su inicio, no se podrá distinguir de un reinicio de WDT a menos que haga algo como marcarlo en una ubicación EEPROM predeterminada y luego reescribirlo en el encendido.

Dependiendo de lo que esté diseñando, es posible que desee iniciar sesión o tratar con los restablecimientos de WDT. Los reinicios de WDT pueden ser un indicio de un problema grave que debe atenderse lo antes posible.

    
respondido por el Spehro Pefhany
0

La respuesta de Spehro fue muy detallada y correcta, pero solo para responder claramente el comentario del OP:

Si está escribiendo en ensamblador:

reset

Si estás escribiendo en C:

__asm__ volatile ("reset");

Esa instrucción ha sido diseñada específicamente para restablecer su dispositivo mediante software.

    
respondido por el Mishyoshi

Lea otras preguntas en las etiquetas