18 votos

¿Todas las trampas siempre definir?

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?

16voto

jns Puntos 449

¿Sí, es una buena idea - el único inconveniente es un poco de tamaño de código extra, y tienes que decidir qué hacer con la trampa (emitir un mensaje en el puerto serie? gire a la luz en un "error"? Silencio ¿reiniciar? etc.)

13voto

Federico Builes Puntos 1940

Mi regla informal es:

  1. Si una interrupción está habilitada, entonces usted debe tener el código que se encarga de ello.
  2. Si no hay que escribir código para una interrupción, desactívelo.
  3. 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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X