• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
05.Manejo de interrupciones
 

05.Manejo de interrupciones

on

  • 4,392 views

 

Statistics

Views

Total Views
4,392
Views on SlideShare
4,340
Embed Views
52

Actions

Likes
2
Downloads
110
Comments
0

2 Embeds 52

http://127.0.0.1 51
http://prometeo.us.es 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    05.Manejo de interrupciones 05.Manejo de interrupciones Presentation Transcript

    • Sistemas Basados en Microprocesadores Manejo de Interrupciones
    • Interrupciones Una interrupción es un evento que es identificado por el µcontrolador, y que interrumpe el proceso normal de un programa.  Cuando finaliza la atención de la interrupción se continua en el punto donde se había interrumpido el programa. Los eventos o fuentes de interrupción son muchos y muy variados:  Interrupción externa por flanco, por cambio de estado, por fin de temporización… http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Los µcontroladores PIC incluyen un sistema de interrupciones basado en dos niveles de prioridad.  Una interrupción de alta prioridad puede interrumpir el tratamiento de una de baja prioridad pero no a la inversa. Porcompatibilidad, el sistema de interrupciones con prioridades está desactivado por defecto de forma que se trabaja sin prioridades.  El bit IPEN del registro RCON habilita (1) o no (0) el sistema de prioridades de los PIC18. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Cuando se produce una interrupción, se realiza una llamada automática a la rutina de interrupción.  Las rutinas de interrupción tienen una posición específica dentro de la memoria de programa.  0x0008 para la rutina de interrupción de alta prioridad.  0x0018 para la rutina de interrupción de baja prioridad.  Si no se usan prioridades, sólo existe un único vector y está situado en la posición 0x0008. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Cada fuente de interrupción se controla por medio de 3 bits:  Bit de prioridad: permite asignar a cada fuente de interrupción una prioridad alta (1) o baja (0).  Siempre se llama xxIP (donde “xx” es el nombre de la fuente de interrupción).  Bit de habilitación: permite habilitar (1) o no (0) cada fuente de interrupción.  Siempre se llama xxIE  Bit de señalización o “Flag”: informa que se ha detectado (1) o no (0) una interrupción.  Siempre se llama xxIF http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Las interrupciones tienen un habilitador global además del habilitador individual de cada fuente de interrupción:  El bit GIE/GIEH del registro INTCON:  Si se usan prioridades (bit GIEH). habilita las interrupciones configuradas como de alta prioridad.  Si no se usan prioridades (bit GIE), habilita todas las interrupciones que tenga su habilitador individual activado.  El bit PEIE/GIEL del registro INTCON:  Si se usan prioridades (bit GIEL), habilita las interrupciones configuradas como de baja prioridad.  Si no se usan prioridades (bit PEIE), habilita las interrupciones relacionadas con periféricos del µcontrolador. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Loshabilitadores globales se ponen a 0 cuando se produce una interrupción. Se pone a 1 con la  Si no hay prioridades sólo el bit GIE. instrucción retfie  Si hay prioridades, el bit GIEH o el GIEL, dependiendo de la prioridad de la interrupción generada. Losflags individuales se ponen a 1 cuando se produce su interrupción correspondiente.  Es necesario ponerlos a 0 manualmente para que no salte de nuevo la interrupción (sin haberse producido).  Aunque la interrupción no esté habilitada, el flag se pone a 1 cuando sucede el evento, pero no salta la interrupción. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones (continuación…) Instrucciones de control  retfie: regreso de interrupción con habilitación (pone a 1 los bits GIE, GIEH o GIEL según corresponda) Tipo de evento Bits afectados No hay prioridades GIE Hay prioridades y se ha generado una GIEH interrupción de alta prioridad Hay prioridades y se ha generado una GIEL interrupción de baja prioridad http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones de E/S Hay dos tipos de interrupciones de E/S diferentes en los PIC18:  3 interrupciones externas independientes (INT0 con la línea RB0, INT1/RB1 e INT2/RB2).  Se produce al detectar un flanco, ascendente o descendente, configurable por medio del bit INTEDGx.  Se puede utilizar para el control de interruptores, pulsadores o cualquier dispositivo que genere un señal digital.  La interrupción INT0 no dispone del bit de prioridad, y se considera siempre como de prioridad alta.  Interrupción por cambio de estado en <RB4:RB7>.  Se produce cuando cambia el estado (pasar de „0‟ a „1‟ o de „1‟ a „0‟) de cualquiera de las 4 líneas.  Se utiliza principalmente para el control de teclados matriciales. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Interrupciones de E/S (continuación…) Trabajo personal:  Diferenciar entre la E/S programada y la E/S por interrupción. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Registros de Manejo de Interrupciones Habilitadores Flags individualesHabilitadores globales Depende del valor del bit IPENhttp://paginaspersonales.deusto.es/jonathan.garibay/
    • Registros de Manejo de Interrupciones(Continuación…) Prioridades Bits de configuración específicos de una interrupción http://paginaspersonales.deusto.es/jonathan.garibay/
    • Registros de Manejo de Interrupciones(Continuación…) … … http://paginaspersonales.deusto.es/jonathan.garibay/
    • Ejemplo de funcionamiento org 0x00 0x0000 inicio goto inicio Pila … PC 31 0x0008 btfss INTCON,RB0IF 30 0x000A retfie 0x000C bcf INTCON,RB0IF 29 0x000E incf PORTA, F … 0x0010 retfie 0 … 0x003A inicio clrf TRISA INTCON 0x003C movlw 0xF0 0x003E movwf TRISB 0x0040 clrf PORTA PORTA PORTB 0x0042 bsf INTCON,RBIE 0x0044 bcf INTCON,RBIF 0x0046 bsf INTCON,GIE 0x0048 bucle goto bucle …http://paginaspersonales.deusto.es/jonathan.garibay/
    • Resumen Cuando se produce una interrupción:  Se pone a „1‟ el bit de flag de la interrupción causante.  Se pone a „0‟ el bit global de habilitación.  Si no hay prioridades, se pone a „0‟ el bit GIE.  Si hay prioridades, se pone a „0‟ el bit GIEH o GIEL, según corresponda.  Se carga en el PC la dirección del vector de interrupción.  Si no hay prioridades, se carga la dirección 0x0008.  Si hay prioridades, se carga la dirección 0x0008 o 0x0018, según corresponda. http://paginaspersonales.deusto.es/jonathan.garibay/
    • Resumen (Continuación…) Para atender una interrupción:  Se busca la interrupción causante mirando el bit de flag.  Se va a la rutina de interrupción específica:  Se pone a „0‟ el bit de flag de la interrupción.  Se atiende la interrupción.  Se finaliza la rutina con la instrucción retfie.  Si no se encuentra la interrupción se finaliza la rutina con la instrucción retfie. Si se da este caso, esto nos indica que hay un error en la programación. http://paginaspersonales.deusto.es/jonathan.garibay/