¿En un AVR (ATtiny2313), que se atiende primero cuando TIMER0_OVF y TIMER0_COMPA vencen al mismo tiempo?

3

Si el registro de comparación del temporizador de 8 bits de un AVR es 255 y el temporizador se desborda (según la hoja de datos, la interrupción de la comparación se produce en el siguiente ciclo del reloj del temporizador), entonces tanto la interrupción por desbordamiento como la interrupción de la comparación deben ser iguales. hora. ¿Cuál será el primer servicio?

    
pregunta joeforker

2 respuestas

5

Consulte la hoja de datos de ATtiny2313: enlace

La prioridad de las interrupciones está determinada por el orden de los vectores de interrupción. Vea la página 46 para la lista. Cuanto menor sea el número, mayor es la prioridad. Dado que el Desbordamiento del Temporizador / Contador0 tiene un número menor (7) que el Combate A del contador del Temporizador / Contador0 (14), el ISR de desbordamiento se ejecutará primero.

    
respondido por el nootropic
2

Realmente espero que alguien sepa esto, y que obtenga una respuesta directa con un buen razonamiento de los documentos, ejemplos de cómo planificar interrupciones simultáneas, etc., pero todo lo que puedo decir ahora es que es el que sigue corriendo cuando lo haces

ISR(TIMER0_OVF_vect)
{
  printf("OVF ISR Ran First\n"); //or whatever your console output uses
  fflush(stdout);

  while(1);
}

ISR(TIMER0_COMPA_vect)
{
  printf("COMPA  ISR Ran First\n"); //or whatever your console output uses
  fflush(stdout);

  while(1);
}
    
respondido por el Kevin Vermeer

Lea otras preguntas en las etiquetas