La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sesión 07: Interrupciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad.

Presentaciones similares


Presentación del tema: "Sesión 07: Interrupciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad."— Transcripción de la presentación:

1 Sesión 07: Interrupciones

2 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Antes de Comenzar  Procesamiento en paralelo CPU/Periféricos CPU 00111001 Serial 1001110001100011 Metodología de Excepciones/Interrupciones Señor CPU, estoy libre ahora mismo Listo, ya le envío un nuevo dato para Tx Ok, he finalizado, otro dato más para Tx? Muy bien, acá va el siguiente dato Revisando puertos… Haciendo op. matemáticas Cambiando algunas Salidas… Nada más por hacer Dormir entonces…

3 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Agenda para la clase 11 Interrupciones Caso especial de las excepciones, relacionadas con HW 22 Procesamiento Interrupciones Cómo son tratadas por parte de la CPU 33 Excepciones e Interrupciones en los PICs Cómo trata la CPU estos eventos 44 Programación de la IRQ Ejemplo de cómo emplear la interrupción más simple

4 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Programación de la IRQ Excepciones e Interrupciones Procesamiento de Interrupciones Interrupciones en una CPU

5 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Denominadas también Excepciones Externas.  Generadas por periféricos conectados a la CPU (requieren atención de la CPU):  Internos: UART, A/D, SCI, TIMERs, I 2 C…  Externos: Líneas de IRQ…  Básicamente se trata de una transición generada en una línea de IRQ: Interrupt Request.

6 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás  Tenga en cuenta  La CPU ejecuta normalmente su programa…  Cuando hay transición de la línea IRQ, se pasa a ejecutar una subrutina especial…  La subrutina le debe decir en algún momento al periférico que retire la petición en IRQ…  Finalmente la subrutina especial finaliza y el programa continúa su ejecución normal… CPU Periférico Línea IRQ Línea ACK Interrupciones Instrucción 1 Instrucción 2 Instrucción 3 Instrucción 4 Instrucción 5 … Instrucción n Volver a 3 Programa principal Instrucción 3 Instrucción 1 Instrucción 2 Instrucción 3 Instrucción 4 Rec. ACK 5 Instrucción 6 Retorno Código Especial

7 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  En el procesamiento intervienen:  Petición por parte del periférico IRQ.  Máscara de Interrupción.  Atención por parte de la CPU.  Detener la ejecución actual.  Prioridad. Qué pasa si se dan varias al tiempo?  Almacenamiento de contexto.  Vector de Interrupción  Ejecutar subrutina de atención a interrupción. Reconocimiento por parte del software.  Retorno a la ejecución normal.

8 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Programación de la IRQ Excepciones e Interrupciones Procesamiento de Interrupciones Interrupciones en una CPU Procesamiento de Interrupciones

9 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Línea IRQ Procesamiento de INTs  Petición por parte del periférico IRQ.  Máscara de Interrupción. P P Mask CPU Línea IRQ Máscara Deshabilitada Línea IRQ P P Mask CPU Línea IRQ Máscara Habilitada Mask Máscara Deshabilitada

10 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Procesamiento de INTs  Atención por parte de la CPU.  Detener la ejecución actual.  Prioridad. Qué pasa si se dan varias al tiempo? CPU Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Me han interrumpido, debo detener la ejecución actual y evaluar la prioridad…

11 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Procesamiento de INTs  Almacenamiento de contexto. CPU Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. XX $XXXX PC XX $XXXX XX $XXXX XX $XXXX XX $XXXX XX $XXXX Estado Reg. 2 Reg. 3 Reg. 4 Se almacena en la pila del sistema Pila del Sistema Para saber donde estoy, guardo el Contexto

12 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Procesamiento de INTs  Vector de Interrupción  Ejecutar subrutina de atención a interrupción. CPU Busco en los vectores de excepción la instrucción a ejecutar Asociada con cada fuente de INT. $8000 Vector de RESET $8200 Vector de IRQ $835A Vector de TE SCI $8A00 Vector de RF SCI $8200  Inst 1. $8202  Inst 2. … Retorno de Excepción. $8200  Inst 1. $8202  Inst 2. … Retorno de Excepción. $8200

13 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás CPU Periférico Línea IRQ Línea ACK Procesamiento de INTs  Reconocimiento desde Software  Se hace escribiendo o leyendo determinado registro del periférico.

14 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Procesamiento de INTs  Retorno de Subrutina CPU Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. XX $XXXX PC XX $XXXX XX $XXXX XX $XXXX XX $XXXX XX $XXXX Estado Reg. 2 Reg. 3 Reg. 4 Se toma de la pila del sistema Pila del Sistema Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Instrucción 1. Instrucción 2. Instrucción 3. … Instrucción 4. Volver a 1. Ahora recupero el contexto para continuar

15 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Programación de la IRQ Excepciones e Interrupciones Procesamiento de Interrupciones Interrupciones en una CPU Excepciones e Interrupciones

16 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  La CPU realiza ejecución secuencial de instrucciones.  Primer paso, se genera cuando se da la petición de Excepción…  Segundo paso, en caso propiamente de interrupciones, se reconoce si está habilitada…  Tercer paso, reconocimiento por parte de la CPU…  Aquí, se detiene la ejecución normal del programa y se comienza el procesamiento…

17 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Reconocimiento por parte de la CPU  Momento en que se detecta la Excepción.  Asíncrono: Se suspende la ejecución de toda instrucción de manera inmediata. Reset Externo. Reset Interno: WatchDOG, PowerOnReset y LVI.  Ejemplo: La instrucción instruc1 requiere 4 ciclos para ejecutarse.  Se da un Reset Externo…  Instrucción suspendida en el momento de la Excepción Instrucción instruc1 Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Excepción No se ejecuta el cuarto ciclo de instruc1

18 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Reconocimiento por parte de la CPU  Momento en que se detecta la Excepción.  Síncrono: La atención se hace en el último ciclo de ejecución de la instrucción actual. Reset Interno: Illegal Address. Interrupciones. Instrucción instruc1 Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Excepción Reconocer Reconocimiento por parte de la CPU  Ejemplo: La instrucción instruc1 requiere 4 ciclos para ejecutarse.  La instrucción no se suspende al darse la INT.  Se reconoce en el último ciclo.  ¿Qué ocurre si la INT se presenta en el último ciclo? La CPU la reconoce en el último ciclo de la siguiente instrucción.

19 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Prioridad de las Interrupciones:  El RESET (Interno – Externo) tiene la mayor prioridad.  El resto de interrupciones tiene una prioridad asignada por el fabricante.  A menor número, mayor prioridad.  RESET tiene prioridad 0, SWI 0, IRQ 1, etc. CPU08 IRQ 1 IRQ 1 TIMER 6 TIMER 6 KBI 15 KBI 15 SCI 13 SCI 13 ACK El orden de atención será IRQ, TIMER, KBI Antes de atender a TIMER, se requiere que IRQ desaparezca Ejecutando Subrutina de IRQ Ejecutando Subrutina de TIMER Mientras se ejecuta esta ISR, aparece una nueva petición… ¿Qué interrupción se atiende luego? Ejecutando Subrutina de SCI Ejecutando Subrutina de KBI

20 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Almacenamiento del Contexto  Después de almacenar Registro de códigos de condición en la pila, la bandera I es llevada a ‘1’.  Pero, ¿Quién es I? Máscara de Interrupción Global. Cuando está en ‘1’, no se admiten interrupciones. Cuando está en ‘0’, se admiten las interrupciones que tengan su máscara individual desactivada. CLI: I = ‘0’, SEI: I = ‘1’.  ¿Para qué se pone en ‘1’ al procesar una INT?  ¿Todas las interrupciones son enmascarables? CPU08 IRQ TIMER KBI SCI SPI ADC MASK ADC MASK IRQ MASK TIMER MASK KBI MASK SCI MASK SPI MASK GLOBAL MASK KBI I = ‘0’ MASK GLOBAL I = ‘1’ La petición no desaparece hasta hacer ACK CLI I = ‘0’ CLI I = ‘0’

21 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Ejecución de la subrutina de atención a INT  Y ahora, ¿Qué porción de código debe ejecutar la CPU para atender la Interrupción?  Cada interrupción debe tener una porción de código que se ejecute en respuesta a ella.  ¿Cómo sabe la CPU cuál porción ejecutar? #INT_EXT// $8150 ext_isr(){ inst1; … Int main (void){// $8000 inst1; … #INT_TIMER0// $8243 timer_isr(){ inst1; … Instrucción a ejecutarse después del RESET Instrucción a ejecutarse cuando se da la IRQ Instrucción a ejecutarse cuando se da la INT de TIMER

22 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Vector de Interrupción  Zona de Memoria.  Cada vector está asociado a una fuente de interrupción.  Cada vector corresponde a dos direcciones de memoria (Ej, $FFFE-$FFFF).  En cada vector se almacena la dirección de la primera instrucción que se debe ejecutar.  El contenido corresponde a la dirección de la primera instrucción de la subrutina de atención a Interrupción. #INT_EXT// $8150 ext_isr(){ inst1; … Int main (void){// $8000 inst1; … #INT_TIMER0// $8243 timer_isr(){ inst1; … $XXXX Vector de RESET $FFFE-$FFFF $XXXX Vector de IRQ$FFFA-$FFFB $XXXX Vector de TIMER OV$FFF2-$FFF3 $FFF4-$FFF5 $FFF6-$FFF7 $FFF8-$FFF9 $FFFC-$FFFD $8243 $8150 $8000

23 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupciones  Subrutina de Atención a Interrupción  Código que se ejecuta en respuesta a una interrupción.  La dirección donde está ubicada su primera instrucción debe ser almacenada en el vector de interrupción respectivo.  El código de una subrutina normalmente es muy corto ¿Por qué? Reconocimiento, Salvar Registros, Código Propio de la Subrutina, Recuperar Registros, Retornar.

24 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Atención de INT’s  Las interrupciones  Son atendidas basándose en un diagrama de flujo.

25 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás A continuación… Programación de la IRQ Excepciones e Interrupciones Procesamiento de Interrupciones Interrupciones en una CPU Programación de la IRQ

26 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  Características de la IRQ  Pin dedicado, algunos MCU cuentan con dos.  Programación para flanco de caída o flanco de caída y nivel.  PullUp Interno (En algunos MCU se puede quitar).  Descripción funcional  Un ‘0’ lógico en el Pin de IRQ activa una interrupción de IRQ.

27 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  Funcionamiento Flanco Caída  Cada petición de interrupción es tomada si:  La máscara de interrupción está deshabilitada.  Se ha hecho previamente reconocimiento por software. IRQ P P INT Request INT Request INT Request

28 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  Funcionamiento Flanco Caída y Nivel  Útil para eventos periódicos:  La máscara es habilitada periódicamente.  Imagínese un Reloj!!! Cuando se ajustan los minutos... IRQ P P Peticiones continuas de IRQ

29 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  Funcionamiento Flanco Caída y Nivel: Utilidad  Peticiones solo cuando se desactiva la máscara.  Interrupciones activan máscara, TIMER las deshabilita. IRQ P P INT Req. Máscara Deshabilitada Máscara habilitada TIMER_INTERRUPT IRQ_INTERRUPT

30 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  En Flanco, la señal de interrupción se mantiene activa hasta que se genere:  Vector fetch.  Software clear.  Reset.  En Flanco y nivel, la señal de interrupción se mantiene activa hasta que se cumplan las siguientes dos condiciones:  Retorno del pin de IRQ a ‘1’ Lógico.  Vector fetch o Software clear.

31 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás ‘0’ ‘1’ ‘0’ ‘1’ ‘0’ ‘1’ ‘0’ Interrupción Externa IRQ

32 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Interrupción Externa IRQ  Retirar la petición mediante Software.  El registro de estado y control tiene la bandera ACK.  Al poner ACK en ‘1’ se retira la petición de interrupción, es decir, se lleva a ‘0’ la bandera IRQF.

33 Fin de la Sesión 07


Descargar ppt "Sesión 07: Interrupciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad."

Presentaciones similares


Anuncios Google