¿Una interrupción de alta prioridad interrumpiría otra interrupción de alta prioridad?

3

En la hoja de datos del 18F4620 y otros, sección 9.0 (página 91), leer:

  

Los dispositivos PIC18F2525 / 2620/4525/4620 tienen múltiples fuentes de interrupción y una función de prioridad de interrupción que permite que a la mayoría de las fuentes de interrupción se les asigne un nivel de prioridad alto o un nivel de prioridad bajo. El vector de interrupción de alta prioridad está en 0008h y el vector de interrupción de baja prioridad está en 0018h. Los eventos de interrupción de alta prioridad interrumpirán las interrupciones de baja prioridad que puedan estar en curso.

Veo que cuando se ejecuta una rutina de servicio de interrupción de baja prioridad y se produce una interrupción de alta prioridad, el ISR de alta prioridad será runt.

Sin embargo, ¿qué sucede cuando se produce una interrupción de prioridad alta durante un ISR de prioridad alta ? ¿O cuando se produce una interrupción de baja prioridad durante un ISR de baja prioridad?

    
pregunta Keelan

1 respuesta

3

Creo que la respuesta es ... nada.

  

Cuando se responde a una interrupción, la interrupción global   el bit de habilitación se borra para deshabilitar más interrupciones. Si el   El bit IPEN se borra, este es el bit GIE. Si la prioridad de la interrupción   se utilizan niveles, este será el bit GIEH o GIEL.

Cuando se produce una interrupción, se borra el bit GIE respetado.

  

La interrupción   los bits de bandera deben borrarse en el software antes de volver a habilitar   Interrupciones para evitar interrupciones recursivas.   La instrucción "volver de la interrupción", RETFIE, sale   la rutina de interrupción y establece el bit GIE (GIEH o GIEL   si se utilizan niveles de prioridad) que vuelve a habilitar las interrupciones.

Tiene que eliminar la interrupción periférica y, al salir de su ISR, establecerá el bit GIE respetado.

Si observa la Figura 9-1, muestra la lógica detrás de todo.

Cuando se produce la interrupción, se borra el GIE y, por lo tanto, la puerta O no será verdadera y no provocará un salto a su vector de interrupción de alta prioridad.

Lo más probable es que cuando salga de su ISR, salte al servicio una interrupción diferente.

    
respondido por el efox29

Lea otras preguntas en las etiquetas