Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porArturo Marín Rico Modificado hace 8 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.