Sesión 08: Interrupciones - IRQ. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.

Slides:



Advertisements
Presentaciones similares
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Advertisements

MICROCONTROLADORES NOCIONES BÁSICAS.
Fernando Escribano Pro 1º de Bachillerato
TEMPORIZADORES.
Programación básica de la interfase RS232 C
Introducción a los MCU´s de Motorola
Teoría de lenguajes y compiladores
SISTEMAS OPERATIVOS UNIDAD 1..
Sistemas Digitales Curso 2007/2008 Departamento de Tecnología E l e c t r ó n i c a Periféricos E/S. VIA 65C22 Sistemas Digitales 2º curso Ingeniero Técnico.
Entrada / salida digital con ccs
PICmicro GAMA MEDIA: PIC16F87X
ConceptoDefiniciónCaracterísticas (palabra clave) Ejemplo/Aplicación Sistema operativo Un sistema operativo es un software, es decir, forma parte de la.
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
Microcontroladores PIC16F84A.
INTERRUPCIONES Y TEMPORIZADORES Programación en C para electrónica.
Unidad 2: Organización del CPU
SEMANA 9_3.
José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.
INTERRUPCIONES Introducción.
TIMER 1 El módulo TIMER1 así como el TIMER0 es un temporizador/contador con las siguientes características. Trabaja con 16 bits (con 2 registros de 8 bits:TMR1H.
Maquinas Digitales  La idea principal es dividir el procesamiento de cada una de las instrucciones en una serie de pasos totalmente independientes.
Conceptos Arquitectónicos del computador
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Objetivos Generales Entender el funcionamiento de un microcontrolador
Introducción al tiempo real en sistemas empotrados
Departamento de Informática. Curso ENTRADA Y SALIDA LECCIÓN 12 ORGANIZACIÓN DE ENTRADA Y SALIDA.
Ing. Jorge A. Abraham Técnicas Digitales II
Puertos I/O Los puertos son los encargados de enviar y recibir la información en un computador, pero como hace el procesador para hacer este intercambio.
Organización del Computador Entradas / Salidas. Modelo de I/O.
Funcionamiento de la CPU
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Lenguaje Ensamblador Pic 16F84A.
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.
Unidad 2: Segmentación Excepciones en la Segmentación Docente: Ing. José Díaz Chow ARQUITECTURA DE MÁQUINAS COMPUTADORAS III.

MÓDULO II: El microcontrolador PIC16F8X
Nombre: Cristian Achina Curso: 4to «A» Fecha:
PIC16F877 Timers.
“Organización y Arquitectura de Computadores” William Stallings
MICROCONTROLADORES TATIANA HURTADO RIVAS LILIANA PORTELA NOREÑA
Sesión 11: - Comparador, Captura y PWM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.
Sesión 09: TIMER como base de tiempo.
Programar PIC`s en lenguaje C18 En 64 horas. El siguiente material está desarrollado como complemento didáctico para la materia de microcontroladores,
Sesión 10: Conversión Análoga a Digital
Clase 14: Memoria EEPROM.
Microprocesadores II PIC16C5X Ing. Nelwi Báez.
Sesión 1: Presentación del curso. 2009/1 Circuitos Digitales III Universidad Santo Tomás Sistemas Digitales II Presentación  Nombre:  Sebastian Villa.
Tema 4: El microcontrolador PIC16F876
Sesión 6: Repaso LCD - Keyboard. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1Universidad Santo.
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.
Clase 12: Comunicación Serial Asíncrona UART-RS232.
1.1 Introducción A Los Sistemas Informáticos
NOCIONES BÁSICAS COMPUTO II
Estructura Microcontrolador
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 17 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
INTERRUPCIONES – ABRAZO MORTAL
INTRODUCCIÒN MICROCONTROLADORES
PICmicro GAMA MEDIA: PIC16F84 [I]
Alumno: Gerardo Mario Valdés Ortega
INTEGRANTES: JOSE ESTEVEZ _HUGO ANDRADE CURSO: 5TO “B”
ESTADO Registro de ESTADO más utilizado  Es el registro más utilizado.  Ocupa la dirección 03 H tanto del Banco 0 como el Banco 1 de la Memoria de Datos.
LA CPU Ing. Manuel Andrés Belalcázar S. Corporación Universitaria Autónoma del Cauca.
José Alvarado – Cristian Anzola
Curso: Fundamentos de Computación
Programación de microcontroladores PIC16f877a en linux
Arquitectura de Computadores
Arquitectura de Computadores Clases Interrupciones de software y hardware IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica.
Parte I Pines de E/S Interrupciones
Arquitectura de PCs Arquitectura básica del PC. Introducción El PC es el resultado de una especificación técnica de IBM El hardware se organiza de forma.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
Transcripción de la presentación:

Sesión 08: Interrupciones - IRQ

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

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… Interrupcion Externa (IRQ) Interrupciones en C Registro Control de Interrupciones Interrupciones en una CPU

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  Las interrupciones permiten:  A cualquier suceso interior o exterior  Interrumpir la ejecución del programa principal en cualquier momento.  En el momento de producirse la interrupción:  El CPU ejecuta un salto a la rutina de atención a la interrupción  La interrupción debe ser previamente definida por el programador  Allí se atenderá la interrupción.

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  Cuando se termina de ejecutar dicha rutina:  Se retorna a la ejecución del programa principal en la misma posición de la memoria de programa donde se produjo la interrupción.

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

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  El manejo de interrupciones permite:  Realizar programas que no tienen que estar continuamente consultando sucesos internos o externos mediante técnicas de consulta o polling  Estás consultas provocan retardos o paradas en la ejecución del programa principal.

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 interrupciones PIC16F887

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 posee unos registros de control donde mediante la utilización de banderas:  Se puede determinar qué es lo que ha producido la interrupción  Se pueden habilitar o no las distintas fuentes de interrupción (máscaras de interrupción) CPU IRQ TIMER CCP1 SCI SPI ADC MASK ADC MASK IRQ MASK TIMER MASK CCP1 MASK SCI MASK SPI MASK GLOBAL MASK CCP1 I = ‘1’ MASK GLOBAL I = ‘0’ La petición no desaparece hasta hacer ACK I = ‘1’

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… Interrupcion Externa (IRQ) Interrupciones en C Registros Control de Interrupciones Interrupciones en una CPU Registros Control de Interrupciones

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Registros Control de Interrupciones  La familia PIC16F88X posee:  14 fuentes de interrupción.  1 registro de control, INTCON que permite la habilitación de interrupciones y el manejo de las flags.  4 registros adicionales para la gestión de las interrupciones: PIR1, PlR2, PIE1y PIE2.

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Registros  Organización de la memoria de datos RAM Banco 0 Banco 1 Banco 2 Banco 3 8-bits bits SFR GPR 8-bits

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás Registros  Organización de la memoria de datos RAM Banco 0 Banco 1 Banco 2 Banco 3 Registros que almacenan el estado de los puertos Registros que almacenan la dirección de los puertos Registros Para la Gestión de Puertos 0x07F 0x001 0x002 0x004 0x005 0x007 0x008 0x00A 0x00B 0x000 0x003 0x006 0x009 0x00C 0x00D 8-bits 0x080 0x081 0x082 0x0FF 0x084 0x085 0x087 0x088 0x08A 0x08B 0x083 0x086 0x089 0x08C 0x08D 8-bits TRISA TRISB TRISC TRISD TRISE PORTA PORTB PORTC PORTD PORTE INTCON PIR1 PIR2 INTCON PIE1 PIE2 Registros Para la Gestión de Interrupciones

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás INTCON ( Interrupt control register )  Cuando se responde a una interrupción:  GIE es inhabilitado para evitar interrupciones sucesivas  Atención por parte de la CPU.  Detener la ejecución actual.  Almacenamiento de contexto Dirección de la instrucción del programa principal en la pila.  Vector de Interrupción El PC (contador de programa) se carga con la dirección 0004h.  Ejecutar subrutina de atención a interrupción. Determinar la fuente de la interrupción Reconocimiento por parte del software.  Retorno a la ejecución normal.

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás INTCON ( Interrupt control register )  GlE: Bit de habilitación global de las interrupciones.  PElE: Bit de habilitación de las interrupciones de periféricos.  T0IE: Bit de habilitación de la interrupción por desbordamiento TMR0.  lNTE: Bit de habilitación de la interrupción externa RB0/lNT.  RBlE: Bit de habilitación de la interrupción por cambio en el PORTB.  T0lF: Bit de flag de la interrupción del TMR0.  INTF: Bit de flag de la interrupción del RB0/INT.  RBlF: Bit de flag de la interrupción por cambio en PORTB.

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás PIRx PIEx  Los registros adicionales contienen los flags de las distintas interrupciones.  PIEx: Peripheral Interrupt Enable Register.  PIRx: Peripheral Interrupt Request Register

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás PIRx PIEx  El compilador C se encarga de generar el código necesario para leer y borrar dichos registros.

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… Interrupcion Externa (IRQ) Interrupciones en C Registros Control de Interrupciones Interrupciones en una CPU Interrupciones en C

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 C  La directiva habitual en el manejo de las interrupciones:  #INT_xxxx.  Especifica que la función que le sigue es una función de interrupción  #INT_AD  #INT_EEPROM  #INT_EXT  #INT_TIMER1  #INT_TIMER2 ……

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 C  La directiva, #INT_GLOBAL implica:  La función sustituye todas las acciones que inserta el compilador al aceptarse una interrupción.  Se ejecuta solamente lo escrito en dicha función.  No se suele utilizar y si se hace debe hacerse con mucho cuidado.

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 C  Si se utilizan las directivas de interrupción el compilador:  Genera el código necesario para ejecutar la función que sigue a la directiva.  Genera el código necesario para guardar al principio y restituir al final el contexto.  Borra el flag activo por la interrupción.

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 C  El compilador C incluye funciones para el mejor manejo de las directivas de interrupción: enable_interrupts (nivel);  “nivel” es una constante definida en un fichero de cabecera (16F88X.h)  Se genera el código necesario para activar las máscaras correspondientes: Afecta los registros: ITCON, PIE1 y PIE2.

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 C  Niveles: NIVEL REGISTROS ITCONPIE1PIE2 GLOBAL Genérica INT_RTC / INT_TIMER0 Reloj / Timer0 INT_EXT Externa RB0 INT_RB Cambio PORTB INT_AD Conversión ADC INT_RDA Recepción USART INT_TBE Transmisión USART INT_SSP Puerto Serie Síncrono INT_CCP1 Comparador 1 INT_TIMER2 Timer 2 INT_TIMER1 Timer 1 INT_EEPROM Memoria EEPROM INT_BUSCOL Bus Datos INT_CCP2 Comparador 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 Interrupciones en C  La función contraria a la anterior disable_interrupts (nivel);  Inhabilita las mascaras de la interrupción correspondiente. CPU IRQ TIMER CCP1 SCI SPI ADC MASK ADC MASK IRQ MASK TIMER MASK CCP1 MASK SCI MASK SPI MASK GLOBAL MASK CCP1 enable_interrups (GLOABL); MASK GLOBAL desable_interrups (GLOBAL); enable_interrups (INT_CPP1); enable_interrups( GLOBAL);

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… Interrupcion Externa (IRQ) Excepciones e Interrupciones Procesamiento de Interrupciones Interrupciones en una CPU Interrupcion Externa (IRQ)

2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad Santo Tomás IRQ (Interrupt Request)  Es una interrupción básica  Común a la mayoría de los MCU.  Permite generar una interrupción tras el cambio de nivel de alto a bajo o de bajo a alto en pin externo.  PIC16F88x: cambio de nivel en la entrada RB0

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 C  La directiva utilizada es:  #INT_EXT  se debe acompañar de siguientes funciones:  ext_int_edge (H_TO_L); La interrupción es por flanco de bajada  ext_int_edge (L_TO_H); La interrupción es por flanco de subida

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 C  La directiva utilizada es #INT_EXT afectan al bit 6 del registro OPTION_REG.  INTEDG: Bit de selección del flanco de interrupción de RB0.  1 = La interrupción es por flanco de subida del pin RB0/INT.  0 = La interrupción es por flanco de bajada del pin RB0/lNT,

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 RB  Son interrupciones básicas  Común a la mayoría de los MCU.  Permite generar interrupciones tras el cambio de nivel de alto a bajo y de bajo a alto en pin externo.  PIC16F88x: cambio de nivel en la entrada RBx

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 C  La directiva utilizada es:  #INT_RB  se debe acompañar de siguientes funciones:  enable_interrupts (INT_RBx); La interrupción es habilitada La interrupción es por flanco de subida y de bajada

Fin de la Sesión 08