interrupciones en los microcontroladores

Upload: emilio-escalante

Post on 06-Jul-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Interrupciones en Los Microcontroladores

    1/11

    INTERRUPCIONES EN LOSMICROCONTROLADORES PIC

    Recopilado por: Ing. Rafael O Mendoza A.

    Marzo de 2011

  • 8/17/2019 Interrupciones en Los Microcontroladores

    2/11

    INTERRUPCION• Una interrupción  es un evento que hace que el

    microcontrolador deje de ejecutar la tarea que estárealizando para atender dicho acontecimiento y luegoregrese y continue la tarea que estaba realizando antesde que se presentara la interrupción.

    • si las interrupciones están habilitadas cada vez que unade estos acontecimientos se presente el pic dejará deejecutar el programa para ir a atender la interrupción y al

    termino de la misma continuará ejecutando el programadonde lo había dejado.

  • 8/17/2019 Interrupciones en Los Microcontroladores

    3/11

    Algunas Interrupciones• Interrupción externa RB0/INT

    • Interrupción por cambio lógico en el puerto B (pines RB7a RB4)

    • Interrupción por desborde del timer 0 (TMR0)

    • Interrupción por desborde del timer 1 (TMR1)

    • Interrupción por comparación exitosa exitosa en TMR2

    • Interrupción del comparador

    • Interrupción del transmisor del USART

    • Interrupción del receptor del USART• Interrupción del módulo CCP

    • Interrupción del EEPROM

  • 8/17/2019 Interrupciones en Los Microcontroladores

    4/11

    • Aunque el pic cuenta con 10 fuentes distintas deinterrupción solamentetiene un vector de interrupciónpor lo que si se habilitan varias interrupciones almomento de presentarse cualquiera de ellas elprograma saltara a la misma rutina de interrupcion y esresponsabilidad del programador crear una rutina queidentifique la fuente de la interrupcion.

  • 8/17/2019 Interrupciones en Los Microcontroladores

    5/11

    PASOS PARA HABILITAR LAS

    INTERRUPCIONES

    • Habilitar el bit correspondiente a cada interrupcion.

    • Limpiar la bandera correspondiente a la interrupcionhabilitada para evitar falsas interrupciones.

    • En caso de ser necesario habilitar el bit PEIE del registroINTCON 

    (necesario para todas las interrupciones conexcepcion de INTE y RBIE ).

    • Habilitar el bit de habilitacion global de interrupcionesGIE del registro INTCON .

  • 8/17/2019 Interrupciones en Los Microcontroladores

    6/11

    VECTOR DE INTERRUPCIÓN• En el programa tambien es necesario indicar hacia que

    rutina debe saltar el programa al presentarse lainterrupción.

    • El vector de interrupción está en la dirección 0x04 por loque es necesario agregar las lineas org 0x04 y goto ISR al programa, donde ISR es la rutina de servicio deinterrupción y puede, desde luego, tener cualquier otro

    nombre.

  • 8/17/2019 Interrupciones en Los Microcontroladores

    7/11

    VENTAJAS AL UTILIZAR

    INTERRUPCIONES• La ventaja de utilizar interrupciones es que mientras se

    espera a que se presente el evento que produce lainterrupción el microcontrolador puede estar ejecutandocualquier otra tarea.

    • De ese modo el microcontrolador no esta ocupado en

    una sola tarea sino que puede seguir trabajando enotras hasta que una interrupción haga que el programasalte y ejecute la tarea que se quiera y al terminarla elprograma continuara su ejecución en el punto en el que

    se encontraba en el momento de presentarse lainterrupción.

  • 8/17/2019 Interrupciones en Los Microcontroladores

    8/11

    REGISTROS INVOLUCRADOS EN UNA

    INTERRUPCIÓN• INTEDG: flanco activo interrupción externa.

    1- la interrupción se producirá en el flanco ascendente.

    0- la interrupción se producirá en el flanco descendente.

    • GIE: (Habilita las interrupciones globalmente). Este bit permite quecualquier interrupción sea posible. Para poder usar cualquierinterrupción hay que habilitarla globalmente e individualmente.

    • INTE: Permiso de interrupción por activación de la patilla RB0/INT• 1- permite la interrupción• 0- prohíbe la interrupción

    • INTF: bit de señalización (solo lectura) de interrupción externaRB0/INT

  • 8/17/2019 Interrupciones en Los Microcontroladores

    9/11

    EJEMPLO DE USO DE UNA INTERRUPCION

    (ALARMA SIMPLE)

    • Cuando se pulse el sensor de alarma y esté abierto elinterruptor de desactivación de alarma, se pondrá a uno el pin

    RB7 del PIC el cual polarizará directamente el transistor Q1 quea su vez activará el Micro-relé RL1 (Relé auxiliar), este a su vezactivará un relé de potencia que activará una alarma conectadaa 120V.

    • Una vez activada la alarma, permanecerá activa hasta tanto nola desactivemos por medio del interruptor de desactivación dealarma RB1

    • RB0: Sensores de accionamiento de la alarma

    • RB1:interruptor de desactivacion (1 activa 0 desactivada)• RB7:pulso de activacion de la alarma

  • 8/17/2019 Interrupciones en Los Microcontroladores

    10/11

    EJEMPLO DE USO DE INTERRUPCION

    EXTERNA POR RB0// Ejemplo uso de interrupción externa por RB0 |

    #include #FUSES NOWDT,HS,PUT,NOPROTECT//Identificadores de bits

    #bit RB7=0x06.7#use delay(clock=20M)//Frecuencia de reloj//****************************************************************************

    #int_EXTvoid EXT_isr(void){if (PIN_B1==1&& PIN_B7==0)//Si el interruptor RB1 es "1" (alarma activada)

    //y la sirena está apagada

    {output_bit( PIN_B7,1); // activar sirena}

    }//****************************************************************************

  • 8/17/2019 Interrupciones en Los Microcontroladores

    11/11

    EJEMPLO DE USO DE INTERRUPCION

    EXTERNA POR RB0 (cont)void main(){

    set_tris_b(0b01111111); //configura el puerto B (RB7 salida)RB7=0;//inicializamos RB7enable_interrupts(GLOBAL);//habilitamos interrupción globalenable_interrupts(INT_EXT);//habilitamos interrupción externa

    while( true ){

    if( PIN_B1==0 && PIN_B7==1 )/* Si alarma desactivada y sirena enfuncionamiento */{output_bit( PIN_B7,0); // se desactiva la sirena

    }

    }}