Si tengo un sistema trabajando en modo 2 de interrupciones, un dispositivo puede interrumpirse a si mismo?
O qué pasa cuando llega una nueva solicitud de interrupción a un controlador en servicio?
Si tengo un sistema trabajando en modo 2 de interrupciones, un dispositivo puede interrumpirse a si mismo?
O qué pasa cuando llega una nueva solicitud de interrupción a un controlador en servicio?
Está explicado en la sección 3 del manual:
"3. Descripción funcional
Cuando el periférico genera un flanco creciente en la entrada IRQ, es registrada una
solicitud en un flip flop interno (IFF) y se pone IEO = '0'. Si lo permite la entrada IEI ( = '1'), se baja
la salida INT y se espera al reconocimiento. Cuando el microprocesador realiza un ciclo de
reconocimiento e IEI = '1' el controlador coloca el vector de interrupciones en el bus de entrada al
microprocesador. Si dentro del ciclo de reconocimiento la entrada IEI baja a '0', es retirado el vector
del bus. De este modo es atendido el problema de la propagación IEI – IEO entre controladores.
Mientras se está ejecutando la subrutina de atención de un periférico, éste puede solicitar
una nueva interrupción. Esta nueva solicitud es registrada y atendida al finalizar la subrutina, si los
periféricos de mayor prioridad lo permiten. El usuario puede borrar una nueva solicitud mientras la
anterior está siendo atendida.
La salida SRV permanece activa mientras se ejecuta la subrutina de atención al periférico
conectado al controlador. Luego de ser reconocida la interrupción se genera un pulso a '0', de un
período de reloj de duración, en cada una de las salidas M1_out_n y IORQ_out_n. Estas pueden ser
conectadas un periférico diseñado para modo 1 para darle el reconocimiento de interrupción."
Dos preguntas me surgen de esto,
Si se consulta el estado del controlador en ese caso, que atendiendo una interrupción tiene otra pendiente, al leer su estado, es "en servicio" o "con solicitudes pendientes"? En el caso que sea "en servicio", hay forma de consultar si tiene una solicitud pendiente?
Esto funciona solo para una interrupción pendiente o se pueden anidar ilimitadas solicitudes de interrupción?