He visto dos casos de los que ahora con dsPIC 30F4013 donde el control era restablecer debido a un indefinido trampa. ¿Por qué estas trampas estaban recibiendo planteadas en el primer lugar es todavía un misterio, pero ese no es mi problema inmediato. Estoy empezando a pensar que sería una buena práctica de programación siempre definir todas las trampas, incluso si las trampas nunca debería producirse, por lo que obtener al menos un claro mensaje de error en lugar de una al azar reset. Esta es una práctica estándar que no me he enterado? ¿Existen desventajas de esta práctica que debo tener en cuenta?
Respuestas
¿Demasiados anuncios?Mi regla informal es:
- Si una interrupción está habilitada, entonces usted debe tener el código que se encarga de ello.
- Si no hay que escribir código para una interrupción, desactívelo.
- Si usted no puede desactivar la función de escritura de código.
Incluso sin esa regla, sin embargo, la hoja de datos explícitamente respuestas a tu pregunta:
Si el usuario no tiene la intención de llevar a cabo la corrección acción en caso de un error de captura condición, estos vectores deben ser cargados con la dirección de un controlador predeterminado que simplemente contiene el RESTABLECIMIENTO de la instrucción. Si, por otro lado, uno de los vectores contiene una dirección no válida se llama, un dirección trampa de error es generado.
(De la fuente, en la sección 8.3, la primera nota)
Dado que usted no puede máscara de trampas, entonces usted debe manejar. Si usted no desea tratar con la trampa en una moda en particular, el método adecuado es ejecutar un RESET
instrucción.