interrupciones en los microcontroladores
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
}
}}