Tengo una pequeña pregunta sobre el TOVn
situado en el TIFRn
registrarse.
La hoja de datos dice, si el TCNTn
se desborda, entonces el TOVn
situado en el registro TIFRn
se establecerá en 1
. (en el mismo ciclo de reloj en que se produjo el desbordamiento).
El código para manejar tal evento es el siguiente:
/* Check if TOV1 flag is set */
if (TIFR1 & _BV(TOV1)) {
/* Since TOV1 is set, we know we missed an overflow interrupt */
/* Handle the event... */
// ... timer_ovf_cnt++;
/* Prevent ISR to be called, because we already handled the overflow */
TIFR1 = _BV(TOV1); // .. but TOV1 is already set in TIFR1?
}
Pero lo que me confunde es: ¿por qué debo fijar el TOV1
cuando ya está configurado por hardware? ¿Establecer el bit TOV1
bandera en TIFR1
a 1
por mano del usuario ¿Desactivar la interrupción del temporizador? (¿Incluso si la bandera TOV1 ya está activada por hardware?)
EDITAR : Encontré la respuesta: ¿Borrar bits de bandera escribiendo 1?
6 votos
+1 por marcar tu propia pregunta como duplicada. Eso es lo que yo llamo disciplina. ¡Bien hecho!