8051 importancia de nivel de prioridad de interrupción

3

Estoy trabajando con P89V51RD2 que es un microcontrolador 80C51. Tiene ocho fuentes de interrupción y cuatro niveles de prioridad.

En la tabla anterior, hay una columna Service Priority que suena como Fixed-Priority service de interrupción. Y luego hay dos bits para configurar prioridad de interrupciones individuales ( Interrupt Priority ) que forman 4 niveles.

No pude encontrar la explicación para Priority Bits en la hoja de datos. ¿Cuál es exactamente el propósito de estos bits de prioridad?

    
pregunta vvy

1 respuesta

3

En esta MCU, los niveles de prioridad de interrupción le permiten asignar cada fuente de interrupción de dispositivo a uno de los cuatro grupos de prioridad de interrupción. Los dispositivos que generan interrupciones en un grupo de mayor prioridad pueden causar que ocurra una interrupción incluso si la MCU ya está procesando una interrupción en un grupo de menor prioridad.

El nivel de Prioridad de servicio dentro de un grupo particular se usa para determinar qué dispositivo tendrá la primera oportunidad de interrumpir la MCU cuando más de un dispositivo en el mismo grupo esté afirmando una solicitud de interrupción habilitada al mismo tiempo. Las interrupciones dentro de un grupo se procesan en serie en la orden de servicio hasta que se completen todas las interrupciones en ese grupo.

Cuando se complete el procesamiento de interrupción dentro de un grupo de prioridad más alta, entonces se podrá reanudar el procesamiento de interrupción dentro de un grupo de prioridad más baja. Si se producen nuevas interrupciones de grupo de prioridad más baja mientras un grupo de prioridad más alta está en proceso, entonces esas tienen que esperar hasta que se complete el grupo más alto. Si un grupo de prioridad más baja está en proceso y se producen interrupciones en un grupo de prioridad más alta, el procesamiento para el grupo más bajo se suspende para que se pueda procesar el grupo de prioridad más alta.

El estado de contexto para cualquier interrupción suspendida se mantiene en la pila para la ubicación del contador del programa de manera similar a como se mantiene el contador del programa para el programa de línea principal cuando ocurre una interrupción. Todos los registros comunes en uso, como A, B o DPTR, también deben guardarse en la pila si, a su vez, son utilizados por la rutina de servicio de interrupción de mayor prioridad. Lo mismo también sería cierto para los registros R0-R7 si se utiliza un modo de banco único / compartido para los registros. La arquitectura 8051 tiene cuatro bancos de registro y, a veces, ciertos bancos están asignados para el uso de interrupciones en ciertos niveles de prioridad. Esto puede ahorrar una gran cantidad de empujes y saltos adicionales de la pila cuando una interrupción de alta prioridad necesita procesarse en un período muy corto, si es tiempo.

Los niveles de interrupción de mayor prioridad normalmente se usan para rutinas de servicio extremadamente críticas en el tiempo donde la latencia debe mantenerse en un mínimo absoluto. De la mano con que las interrupciones de mayor prioridad son a menudo las que están codificadas con la menor cantidad de tiempo de ejecución, aunque este no es siempre el caso.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas