¿Cómo detener / restablecer el temporizador de vigilancia desde el modo de suspensión de baja potencia en un STM32L0C8?

1

En un MCU STM32L0C8, tengo activado el watchdog mientras se ejecuta. En ciertos puntos de la ejecución, me gustaría que el chip entre en modo de suspensión de baja potencia. Sin embargo, cuando pasa al modo de inactividad de baja potencia, el temporizador de vigilancia permanece activado y restablecerá la MCU completa después de que el temporizador se ponga en 0, lo que hace que parezca imposible utilizar los modos de inactividad de vigilancia y de baja potencia al mismo tiempo.

Mi pregunta es, ¿cómo puedo actualizar el temporizador de cuenta regresiva mientras estoy en modo de suspensión de baja potencia o cómo deshabilito el WDT para evitar que se reinicie la MCU?

Busqué en todo el manual de referencia vinculado a continuación para descubrir cómo deshabilitar / actualizar el temporizador, pero parece que esto no es posible. En la página 514 dice:

  

20.3.4 Comportamiento en los modos de parada y espera   Una vez que se ejecuta, el IWDG no se puede detener

(IWDG es el perro guardián independiente) pero no dice nada sobre el modo de suspensión de baja potencia. En muchas otras áreas, sugiere lo mismo, que el IWDG no se puede detener. ¿Me estoy perdiendo de algo? ¿Se supone que no debemos usar el perro guardián si queremos entrar en modo de suspensión? ¿Es posible modificar el código de los temporizadores de cuenta atrás del watchdog para detener la disminución antes de ingresar al modo de suspensión? Por favor, hágamelo saber!

Manual de referencia: enlace

    
pregunta Omnomnious

2 respuestas

2

El watchdog solo se detiene al reiniciar el sistema. De esta manera no puedes apagarlo accidentalmente.

Si quieres usar los modos de suspensión y vigilancia, deberás configurar la vigilancia del reloj más lento y despertarte regularmente para reiniciar la vigilancia.

Esto es válido para casi todos los microcontroladores en el mercado que tienen un perro guardián cronometrado independientemente.

    
respondido por el Jeroen3
0

Sé que llego un poco tarde con mi respuesta, pero aún así.

1) En algunos MCU (como la serie L4) de ST, puede detener los temporizadores de vigilancia en el modo STOP o STANDBY - se dice que se puede hacer escribiendo al FLASH_OPTR register.
Eso solo significa que ST reconoce que en realidad no necesita Watchdog en modo de parada :)

2) Puedes hacer trampa y, en lugar de ir directamente al modo STOP o STANDBY, escribir un valor mágico en el flash o EEPROM y reiniciar el software ( NVIC_Reset() ).
Después de restablecer, busque el valor mágico, bórrelo si está presente, no inicie el perro guardián y vaya a STOPBY o STOPBY. Si no hay un valor mágico presente, proceda como lo haría normalmente.

Acabo de comprobarlo en mi STM32L151 y parece que funciona.

    
respondido por el Amomum

Lea otras preguntas en las etiquetas