assembly - serial - interrupciones timer arduino
¿Qué ocurre cuando deshabilita las interrupciones y qué hace con las interrupciones que no sabe cómo manejar? (2)
Cuando deshabilita las interrupciones (con la instrucción cli
en x86), ¿qué sucede exactamente?
¿El PIC espera que enciendas las interrupciones y dispara la interrupción cuando eso sucede? (De ser así, ¿cuánto tiempo espera y qué sucede si el tiempo ''expira''?)
¿La interrupción, desde la perspectiva del dispositivo, se envía a un "agujero negro" sin respuesta?
¿El PIC de alguna manera le dice al dispositivo que "la CPU está ocupada" o algo así?
¿O pasa algo más?
Además, ¿cómo manejas una interrupción que no sabes cómo manejar?
¿Hay alguna forma de decirle al PIC (o al dispositivo, si no sabe cuál es el dispositivo), "sí, recibí su mensaje, pero no sé qué hacer con él"?
El 8259a PIC espera la señal INTA de la CPU. La CPU lo envía cuando comienza a manejar la interrupción transfiriendo el control al ISR apropiado. ¿Qué ISR? El PIC le da el vector de interrupción a la CPU, que busca IVT / IDT para la dirección y usted sabe el resto. El PIC no suministrará el vector de interrupción hasta que reciba INTA.
El 8259a PIC tiene una sola comunicación de una vía con dispositivos de E / S. Pueden decir que tienen una interrupción que necesita reparación.
Entonces, todo está en el aire en el PIC si la CPU no responde a las interrupciones. Sin embargo, los dispositivos pueden, a su antojo, desactivar y luego reafirmar las señales de solicitud de interrupción. No sé que hacer. Tampoco sé cuáles tienen requisitos de tiempo para el servicio de interrupción.
Si no está interesado en las interrupciones de una fuente específica, puede enmascararlo y no obtendrá ninguna. Si toma una interrupción pero no sabe cómo procesarla, puede indicarle el PIC que ha manejado. Esto puede dejar el dispositivo interrumpido en un estado "congelado", esperando indefinidamente que se realice el mantenimiento. También puede hacer que el dispositivo mantenga alta su señal de solicitud de interrupción, lo cual será un problema si está tomando interrupciones en el modo de nivel activado: continuamente obtendrá interrupciones.
Las interrupciones aún se disparan, pero la CPU no está escuchando. Cuando empiezas a escuchar de nuevo ( sti
), la señal sigue allí y tendrá efecto en la primera oportunidad.
Un PC PIC tiene varios niveles de interrupciones, y creo que puede contener una interrupción activa para cada nivel de prioridad. Mantendrá cada uno de ellos hasta que la CPU le diga que se ha completado el manejo correspondiente. Tener interrupciones deshabilitadas durante un período de tiempo prolongado probablemente romperá esto, ¡así que no hagas eso!
El dispositivo responsable de una interrupción no recibirá ninguna respuesta mientras espera, que de todos modos es una respuesta. Si no puede esperar, puede entrar en algún estado de error que la CPU verá cuando finalmente llegue.
Solo obtendrá las interrupciones que haya habilitado explícitamente, por lo que no debería haber sorpresas. El controlador del dispositivo que activa una interrupción debe saber cómo manejarlo.