¿Cómo probar un controlador de CPU a bordo?

3

El watchdog de un ATMEL ATXMega128 debería haberse habilitado con fusibles. Activa un restablecimiento, si el temporizador no se restableció dentro del intervalo de tiempo configurado. Quiero estar seguro de que está habilitado y que funciona correctamente .

¿Cuál es un buen método para verificar que el watchdog está habilitado y trabajando en el PCB terminado?

¿Es una práctica común preparar una señal de entrada de repuesto para desencadenar artificialmente el perro guardián? ¿Debería activarse el watchdog, si jalo el oscilador externo a GND, o esto también detendrá al watchdog?

    
pregunta Jonas Stein

2 respuestas

1

Puedes probar a través de una secuencia. Utilice una salida no crítica existente como un led como señal de prueba. Programe la placa con una secuencia de prueba que alternará el led y el bucle, Y no acaricia al perro guardián. Prueba para el bucle. Luego, programelo para hacer un segundo bucle, donde no se alcanzará si el temporizador de vigilancia especificado no se reinicia. Prueba para asegurarte de que pasa el perro guardián acariciando. Estos dos pasos asegurarán que la parte de hardware del perro guardián sea buena.

El resto es asegurarse de que su código final no afecte al perro guardián desactivándolo o acariciándolo cuando algo que no debería encerrarse se bloquea.

En cuanto a su pregunta acerca de la detención del reloj externo, no estoy familiarizado con ningún microcontrolador que tenga dos fuentes de reloj independientes que mantendrían el tictac de vigilancia cuando la fuente del reloj principal esté desactivada. En una situación de reloj con conexión a tierra externa, un reinicio de vigilancia no solucionaría eso de todos modos, a menos que su código pueda cambiar a un reloj interno para el código principal después de esa reinicialización. la vigilancia tiene la intención de eliminar bloqueos relacionados con el software . Pero estoy seguro de que existen para aplicaciones de misión crítica.

    
respondido por el Passerby
0

Cuando su perro guardián expire, llamará a una función específica.

La acción normal de esa función será tomar cualquier medida correctiva que se requiera en esas circunstancias. Sin embargo, antes de hacerlo, debe verificar una variable llamada algo como WDT_test, y solo hacer lo correcto si es falso.

Si WDT_test es verdadero, en su lugar debería registrar un informe (realizar alguna acción) que el WDT está funcionando.

Para probar el WDT, establezca WDT_test true, deje de patear el WDT y espere el informe dentro de un tiempo determinado.

Esa es la forma no intrusiva de hacerlo. Para hacer una prueba más completa de extremo a extremo, simplemente deje de patear el WDT y espere a ver si finalmente realiza la acción correctiva.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas