Go Down

Topic: Desactivar interrupciones, ¿para qué? (Read 751 times) previous topic - next topic

curro92

Hola,
tengo una duda: cuando se utilizan interrupciones externas, hay dos funciones que sirven para activar y desactivar interrupciones.
- sei()para activar
- cli() para desactivarlas

Mi pregunta es: si las activo una vez en el setup(), para qué  necesito desactivarlas? ¿Existen tareas o funciones que no son compatibles con las interrupciones activadas?



jorgepl

Las interrupciones no hace falta activarlas en el setup. Ya están activas

Estas instrucciones se utilizan en trozos de código críticos que no se pueden "interrumpir". Por ejemplo, dentro de la función millis(), cuando se va a leer el registro del timer del micro se paran las interrupciones para que esa lectura sea correcta, ya que, imagínate, que el timer salta justo entre la lectura de dos bytes del registro y los modifica, tendrías un byte "viejo" y otro "nuevo" y una lectura mala.

En principio, salvo que entres en funciones muy cercanas al hardware y críticas, no es necesario que utilices esas instrucciones.

curro92


Go Up