Ahora he visto dos casos con dsPIC 30F4013 donde el controlador se reiniciaba debido a una trampa indefinida. Por qué estas trampas se estaban levantando en primer lugar sigue siendo un misterio, pero esa no es mi pregunta inmediata. Estoy empezando a pensar que sería una buena práctica de programación definir siempre todas las trampas, incluso si las trampas nunca deberían ocurrir, así que recibo al menos un mensaje de error claro en lugar de un reinicio aleatorio. ¿Es esta una práctica estándar que desconozco? ¿Hay desventajas para esta práctica que debería considerar?
microcontroller
interrupts
reset
firmware
best-practice
Stephen Collings
fuente
fuente
Respuestas:
Mi regla informal es:
Sin embargo, incluso sin esa regla, la hoja de datos responde explícitamente a su pregunta:
( Fuente , sección 8.3, primera nota)
Dado que no puede enmascarar trampas, debe manejarlas. Si no desea lidiar con la trampa de una manera particular, el método apropiado es ejecutar una
RESET
instrucción.fuente
Sí, es una buena idea: el único inconveniente es un poco de tamaño de código adicional, y debe decidir qué hacer con la trampa (¿emitir un mensaje en el puerto serie? ¿Encender una luz "FALLIDA"? ¿Reiniciar en silencio? Etc. )
fuente