sesión 07: interrupciones. 2009/1 circuitos digitales iii 2010/1 circuitos digitales iii 2010/1...
TRANSCRIPT
Sistemas Digitales IISesión 07: Interrupciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
Procesamiento en paralelo CPU/Periféricos
CPUCPU
00111001SerialSerial
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 datoRevisandopuertos…
Haciendo op. matemáticas
Cambiando algunasSalidas…
Nada más por hacerDormir entonces…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Agenda para la claseAgenda para la clase
11Interrupciones Caso especial de las excepciones, relacionadas con HW
22Procesamiento Interrupciones Cómo son tratadas por parte de la CPU
33Excepciones e Interrupciones en los PICs Cómo trata la CPU estos eventos
44Programación de la IRQ Ejemplo de cómo emplear la interrupción más simple
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Programación de la IRQ
Excepciones e Interrupciones
Procesamiento de Interrupciones
Interrupciones en una CPUInterrupciones en una CPU
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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, I2C… Externos: Líneas de IRQ…
Básicamente se trata de una transición generada en una línea de IRQ: Interrupt Request.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas 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…
CPUCPUPeriféricoPeriféricoLínea IRQ
Línea ACK
InterrupcionesInterrupciones
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
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Programación de la IRQ
Excepciones e Interrupciones
Procesamiento de Interrupciones
Interrupciones en una CPU
Procesamiento de Interrupciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Línea IRQ
Procesamiento de INTsProcesamiento de INTs
Petición por parte del periférico IRQ. Máscara de Interrupción.
PP MaskMask CPUCPULínea IRQ
Máscara Deshabilitada
Línea IRQPP MaskMask CPUCPULínea IRQ
Máscara Habilitada
MaskMask
Máscara Deshabilitada
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Procesamiento de INTsProcesamiento de INTs
Atención por parte de la CPU. Detener la ejecución actual. Prioridad. Qué pasa si se dan varias al
tiempo?
CPUCPU
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…
Me han interrumpido, debo detener la ejecución
actual y evaluar la prioridad…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Procesamiento de INTsProcesamiento de INTs
Almacenamiento de contexto.
CPUCPU
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 PCXX$XXXXXX$XXXXXX$XXXXXX$XXXXXX$XXXX
EstadoReg. 2Reg. 3Reg. 4
Se almacena en la pila del
sistema
Pila del Sistema
Para saber donde estoy,
guardo el Contexto
Para saber donde estoy,
guardo el Contexto
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Procesamiento de INTsProcesamiento de INTs
Vector de Interrupción Ejecutar subrutina de atención a interrupción.
CPUCPU
Busco en los vectores de excepción la instrucción a
ejecutar
Busco en los vectores de excepción la instrucción a
ejecutar
Asociada con cada fuente
de INT.
Asociada con cada fuente
de INT.
$8000Vector de RESET$8200Vector de IRQ$835AVector de TE SCI$8A00Vector de RF SCI
$8200 Inst 1.$8202 Inst 2.
…Retorno de Excepción.
$8200 Inst 1.$8202 Inst 2.
…Retorno de Excepción.
$8200
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
CPUCPUPeriféricoPeriféricoLínea IRQ
Línea ACK
Procesamiento de INTsProcesamiento de INTs
Reconocimiento desde Software Se hace escribiendo o leyendo
determinado registro del periférico.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Procesamiento de INTsProcesamiento de INTs
Retorno de Subrutina
CPUCPU
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 PCXX$XXXXXX$XXXXXX$XXXXXX$XXXXXX$XXXX
EstadoReg. 2Reg. 3Reg. 4
Se toma de la pila del sistema
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
Ahora recupero el
contexto para continuar
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Programación de la IRQ
Excepciones e Interrupciones
Procesamiento de Interrupciones
Interrupciones en una CPU
Excepciones e Interrupciones
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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 1Ciclo 2Ciclo 3Ciclo 4
Excepción
No se ejecuta el cuarto ciclo
de instruc1
No se ejecuta el cuarto ciclo
de instruc1
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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 1Ciclo 2Ciclo 3Ciclo 4
ExcepciónReconocer
Reconocimiento por parte de la
CPU
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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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.
CPU08CPU08
IRQ1
IRQ1
TIMER6
TIMER6
KBI15
KBI15
SCI13
SCI13
ACK
ACK
ACK
ACK
El orden de atención será IRQ,
TIMER, KBI
El orden de atención será IRQ,
TIMER, KBI
Antes de atender a TIMER, se requiere
que IRQ desaparezca
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…
Mientras se ejecuta esta ISR,
aparece una nueva petición…
¿Qué interrupción se atiende luego?
¿Qué interrupción se atiende luego?
Ejecutando Subrutina de SCI
Ejecutando Subrutina de KBI
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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?
CPU08CPU08
IRQIRQ TIMERTIMER KBIKBI SCISCI SPISPIADCADC
MASKADC
MASKIRQ
MASKTIMER
MASKKBI
MASKSCI
MASKSPI
MASKGLOBAL
MASKKBI
I = ‘0’I = ‘0’
MASKGLOBAL
I = ‘1’I = ‘1’
La petición no desaparece hasta
hacer ACK
La petición no desaparece hasta
hacer ACK
CLII = ‘0’
CLII = ‘0’
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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 // $8150ext_isr(){
inst1;…
Int main (void){ // $8000inst1;… #INT_TIMER0 // $8243
timer_isr(){inst1;…
Instrucción a ejecutarse después
del RESET
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 IRQ
Instrucción a ejecutarse cuando se
da la INT de TIMER
Instrucción a ejecutarse cuando se
da la INT de TIMER
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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 // $8150ext_isr(){
inst1;…
Int main (void){ // $8000inst1;… #INT_TIMER0 // $8243
timer_isr(){inst1;…
$XXXXVector de RESET $FFFE-$FFFF
$XXXXVector de IRQ $FFFA-$FFFB$XXXX
$XXXX$XXXX$XXXX$XXXXVector de TIMER OV $FFF2-$FFF3
$FFF4-$FFF5$FFF6-$FFF7$FFF8-$FFF9
$FFFC-$FFFD
$8243
$8150
$8000
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
InterrupcionesInterrupciones
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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Atención de INT’sAtención de INT’s Las interrupciones
Son atendidas basándose en un diagrama de flujo.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Programación de la IRQ
Excepciones e Interrupciones
Procesamiento de Interrupciones
Interrupciones en una CPU
Programación de la IRQ
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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
PP IRQIRQ
INTRequest
INTRequest
INTRequest
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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
PP IRQIRQ
Peticiones continuas de IRQ
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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
PP IRQIRQ
INT Req.
INT Req.
INT Req.
INT Req.
INT Req.
Máscara Deshabilitada
Máscara habilitada
TIMER_INTERRUPT
IRQ_INTERRUPT
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
‘0’
‘1’‘1’
‘0’
‘1’‘1’
‘1’
‘1’
‘0’‘0’
‘0’
‘1’‘1’
‘1’
‘0’‘0’
‘0’
‘0’‘0’
Interrupción Externa IRQInterrupción Externa IRQ
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Sistemas Digitales II Universidad Santo Tomás
Interrupción Externa IRQInterrupció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.
Sistemas Digitales IIFin de la Sesión 07