Estoy utilizando una interrupción de temporizador para la multiplexación, sin embargo, mi pregunta se relaciona más estrechamente con las rutinas de servicio de interrupción.
Si configuro el prescaler y enciendo un temporizador, usando el código de abajo, puedo ejecutar el código asíncrono al bucle principal en un cierto intervalo dependiendo del prescaler. O al menos este es mi entendimiento de ello.
ISR(TIMER1_OVF_vect) {
//code to run asynchronously at a certain interval
}
Ahora, por ejemplo, si configuro mi temporizador para que interrumpa cada milisegundo (16000 ciclos a 16Mhz AVR) y el código que ejecuto toma, por ejemplo, 2 milisegundos para ejecutarse; es el código completamente ejecutado por la interrupción del segundo temporizador. Es decir, ¿la siguiente interrupción del temporizador depende de que se complete la anterior y podría tener un código lento ralentizar una interrupción?
Estoy usando un Atmega328P-PU con un cristal externo de 16Mhz como reloj.