Sesin 6 Laboratorio ARQUITECTURA Y ORGANIZACIN DE COMPUTADORES
Sesión 6 Laboratorio ARQUITECTURA Y ORGANIZACIÓN DE COMPUTADORES Interrupciones daniel. leon@ufv. es Grado en Ingeniería Informática Escuela Politécnica Superior
Interrupciones • • • Flujo normal de ejecución en PIC 16 Concepto de interrupción Mapa de interrupciones en PIC 16 F 886 La interrupción INT (RB 0) Cronograma de interrupción INT Ejemplo de contador polling y por interrupción
Flujo normal de ejecución en PIC 16 • En un flujo normal de ejecución, el contador de programa se incrementa en una posición cada vez que carga una instrucción, salvo: – En el caso de saltos incondicionales “goto aaa”, el contador de programa se carga con el literal “aaa”, de 11 bits, incluido en la instrucción. Los dos bits altos se obtienen del registro PCLATH<4: 3>. – En las instrucciones de modificación del SFR PCL, el funcionamiento es igual que el de la instrucción “goto”. – Con las instrucciones “call aaa”, el comportamiento es igual al descrito anteriormente (además, el contador de programa de la siguiente instrucción, se guarda en la cabeza de la pila) – En las intrucciones de retorno de subrutina, “return” y “retlw” el contador de programa se carga con la dirección guardada en la cabeza de la pila. – Cuando se cumple la condición de las instrucciones ”btfss”, “btfsc”, “decfsz” y “incfsz”, el contador de programa se incrementa en dos posiciones.
Concepto de interrupción • Una interrupción es la alteración del flujo normal de ejecución cuando se producen condiciones externas al procesador (normalmente asíncronas). 0 x. F 1 ; 0 x. F 2 ; 0 x. F 3 ; 0 x. F 4 ; 0 x. F 6. . . Interrupción 0 x. F 1 ; 0 x. F 2 ; 0 x. F 3 Flujo normal de ejecución Se activa un flag (bit) en el sistema. La unidad de control comprueba esos flags en determinados momentos y salta a la dirección predefinida si está activos. 0 x. F 4 ; 0 x. F 6. . . 0 x 04 … Flujo de ejecución con interrupción La dirección de salto puede ser fija o definida por un vector de interrupción configurable. Pueden existir distintas direcciones de salto para distintas interrupciones (no en pic 16). Dirección de programa alternativa Al saltar a una interrupción se deshabilita cualquier nuevo salto para evitar reentradas. El procedimiento para hacerlo es dependiente del procesador. En PIC 16 se deshabilita GIE.
Mapa de interrupciones PIC 16 F 886 Vector fijo en 0 x 004 GIE: Global Interrupt Enable PEIE: Peripheral Interrupt Enable Interrupciones Internas: • Timer 0 • INT en RB 0 • Interrupt-On-Change en PORTB Interrupciones de periférico: • Puerto serie síncrono • Puerto serie asíncrono – – • • • Página 216 del Data Sheet Envío completado Recepción de datos Timers 1 y 2 Conversión A/D completada …
La interrupción INT (RB 0) • Interrupción interna (No afectada por PEIE) • El flag es el bit 1 (INTF) del registro INTCON (replicado en todos los bancos) • Se activa con el bit 4 del registro INTCON (INTE). • Se registra en flanco de bajada o de subida de la señal en RB 0. El flanco se selecciona en el bit 6 (INTEDG) del registro OPTION_REG (bancos 1 y 3). 0 para flanco de bajada y 1 para flanco de subida. • Como todas las interrupciones, requiere el bit 7 (GIE) del registro INTCON activado para que se produzca el salto.
Cronograma de interrupción INT • • • Página 217 del Data Sheet El salto a la interrupción borra GIE La instrucción “retfie” es equivalente a un (return + bsf INTCON, GIE), es decir, retorna al punto previo a la interrupción y vuelve a activar GIE. El flag INTF hay que borrarlo manualmente en la rutina de interrupción. De otra forma, se volverá a saltar a 0 x 04 tras la instrucción “retfie”
Ejemplos polling e interrupción • Contador de pulsaciones en RB 0 – Proyecto MPLAB X : lab 6_polling. X – Proyecto MPLABX : lab 6_interrupcion. X Los proyectos usan el simulador y, en particular, la herramienta ”stimulus”
- Slides: 8