Sunteți pe pagina 1din 8

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

LABORATORIO N 2

INTERRUPCIONES CON MICROCONTROLADORES PIC

1.- Objetivo Introducir al alumno en el uso de Interrupciones con microcontroladores PIC 2.- Fundamento terico Una de las caractersticas ms importante de los microcontroladores, es que tienen la posibilidad de manejar interrupciones. Se trata de un acontecimiento que hace que el micro deje de lado lo que se encuentra realizando, atienda ese suceso y luego regrese y contine con lo suyo. Hay dos tipos de interrupciones posibles, una es mediante una accin externa (es decir por la activacin de uno de sus pines), la otra es interna (por ejemplo cuando ocurre el desbordamiento de uno de sus registros)

En el 16F84A hay 4 fuentes de interrupcin:


Por el pin RB0/INT, que regresa al PIC del modo SLEEP (interrupcin externa). Por los pines RB4 a RB7, configurados como entrada y en caso de que alguno de ellos cambie de estado (interrupcin externa).

Por desbordamiento del registro TMR0, cuando este registro pasa de 255 a 0 en decimal (interrupcin interna).

Al completar la escritura de la EEPROM de datos (interrupcin interna).

Cada fuente de interrupcin esta controlada por 2 bits. Un bit local de interrupciones (Terminado en E) de permiso o prohibicin de ejecucin. Si esta en 0 bloquear la solicitud de interrupcin, y si esta en 1 permitir la ejecucin. Un bit que acta como sealizador (Terminado en F) el cual es activado (puesto a 1) si se ha producido la

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

interrupcin. Adems existe 1 bit de control global, el bit GIE (INTCON <7>) el cual si esta desactivado bloquea todas las solicitudes de interrupcin. Lo anterior descrito puede entenderse observando el diagrama lgico de la siguiente figura:

El bit GIE se borra automticamente cuando se reconoce una interrupcin para evitar que se produzca otra mientras se est atendiendo a la primera y al retornar de la interrupcin con la instruccin RETFIE, el bit GIE se vuelve a activar ponindose a 1. En cambio los bits sealizadores o banderas de interrupcin deben ser puestos a cero por el tratamiento de la interrupcin realizada por el usuario (Programador) Cuando una interrupcin est habilitada (su bit local de habilitacin est activado, el bit GIE est activado) y ocurre el evento que la activa, el valor de PC se guarda en la PILA y en ste se carga el 0x04 (nico vector de interrupcin). Es a partir de esta direccin que se debe colocar el tratamiento de la interrupcin, detectando por medio de los bits banderas cual de los eventos ha ocurrido y actuar segn sea el caso.

Nota: El nico registro que se salva en la PILA es PC, para preservar algn otro registro debe ser el propio programa de atencin a la interrupcin el que se encargue de salvar su

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

estado al inicio de la rutina y de devolverlos al final del mismo.

Resumiendo, las acciones que se realizan automticamente el microcontrolador y las que el programador debe tener en cuenta en sus programas son las siguientes:

Cuando se activa una posible causa de interrupcin, el flag correspondiente se activa. Si el bit de permiso correspondiente est a 1 y el bit de habilitacin de todas las interrupciones (GIE) est a 1, se produce la interrupcin.

Para evitar que se produzca otra interrupcin mientras se est atendiendo a otra anterior, el bit GIE se pone a 0.

El valor del PC se guarda en la PILA El PC se carga con el valor 0x04, que es el vector de interrupciones El programador, debe comenzar la rutina de atencin a la interrupcin con un salto a la posicin de memoria donde se encuentra el programa, seguidamente se guardan todos los registros que puedan ser modificados por esta, seguidamente si estn habilitadas varias vas de interrupcin, se debe explorar el valor de las banderas para determinar la causa de la interrupcin.

Dependiendo de la causa de la interrupcin, la rutina de interrupcin se bifurca a la subrutina correspondiente.

Se deben devolver los valores que tenan los registros antes de producirse la interrupcin y se deben borrar por software las banderas que indican las fuentes de las interrupciones, antes del retorno al programa principal.

Cuando se llega a la ltima instruccin de la rutina de interrupcin, RETURN, se carga el PC con el valor que se guard inicialmente en la PILA y el bit GIE se pone automticamente a 1.

RBIF (Flag de interrupcin por cambio de PORTB) Direccin INTCON,0 (bit 0) se pone a "1" cuando alguno de los pines RB4, RB5, RB6, o RB7 cambia su estado. Una vez que est a "1" no pasa a "0" por si mismo: hay que ponerlo a cero por programa.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

INTF (Flag de interrupcin de RB0) Direccin INTCON,1. Si est a "1" es que ha ocurrido una interrupcin por RB0, si esta "0" es que dicha interrupcin no ha ocurrido. Este bit es una copia de RB0.

TOIF (Flag de interrupcin por desbordamiento de TMR0). Direccin INTCON,2. Cuando TMR0 se desborda este Flag avisa poniendose a "1". Poner a "0" por programa.

RBIE (Habilita la interrupcin por cambio de PORTB) Direccin INTCON,3. Si est a "1" las interrupciones por cambio de PORTB son posibles. INTE (Habilita la interrupcin por RB0) Direccin INTCON,4. Si lo ponemos a "1" la interrupcin por RB0 es posible TOIE (Habilita la interrupcin por desbordamiento de TMR0). Direccin INTCON,5. Si este bit esta a "1" la interrupcin por desbordamiento de TMR0 es posible. EEIE (Habilita la interrupcin por fin de escritura en la EEPROM de datos) Direccin INTCON,6. Cuando este bit est a "1" la interrupcin cuando acaba la escritura en la EEPROM de datos es posible.

GIE (Habilita las interrupciones globalmente) Direccin INTCON,7. Este bit permite que cualquier interrupcin de las anteriores sea posible. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente.

Resumen de Bits utilizados.


INTF para RB0/INT, bit 1 de INTCON, si es 1 ocurri interrupcin externa RBIF para los pines B4 a RB7, bit 0 de INTCON, si es 1 por lo menos un pin cambio de estado

T0IF para TMR0, bit 2 de INTCON, si es 1 TMR0 desbordado EEIF para la EEPROM, bit 4 de EECON1, si es 1 se ha completado escritura GIE, bit 7 de INTCON, si es 1 habilita todas las interrupciones EEIE, bit 6 de INTCON, si es 1 se activa interrupciones de perifricos T0IE, bit 5 de INTCON, si es 1 int. TMR0 activada INTE, bit 4 de INTCON, si es 1 int. Externa activada RBIE, bit 3, si es 1 int. Por RB4 a RB7 activada

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

Todos estos bits al resetearse o iniciarse el micro se encuentran en 0. 3.- Prctica en Laboratorio Turno Miercoles 8-10 a) Realizar un programa para activar un motor paso a paso bipolar el cual cambia de sentido de giro cuando se produce una interrupcin por RB7 y nuevamente cambia de sentido de giro cuando se pulsa RB7, el motor funciona a una velocidad de 900 mseg. b) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia normal y para cuando se produce un cambio de estado por RB6, el motor funciona a una frecuencia de 70 Hz. c) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia wavedrive y para, cuando se produce un cambio de estado por RB0, el motor funciona a una velocidad de 700 mseg. d) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia de medio paso y para cuando se produce un cambio de estado por RB5, el motor funciona a una frecuencia de 50 Hz. e) Realizar un programa para activar un motor de corriente continua, y cambia su sentido de giro mediante un puente H cuando se produce un cambio de estado por RB0. f) ) Realizar un programa para que un operador pueda interrumpir momentneamente la alimentacin de una enlatadora de atn, mediante un interruptor manual RB0, aun cuando el alimentador funcione en forma automtica con los sensores de nivel alto y bajo. g) Realizar un programa para controlar la puerta automtica de un hospital, el cual se activa con dos sensores de movimiento (uno interno y otro externo) los cuales controlan la apertura y cierre de la puerta en forma automtica, el encargado deber activar una seal de interrupcin por RB0 para realizar mantenimiento una vez por semana. Implementar con motores de corriente continua y con puentes H.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

h) Realizar un programa para realizar la suma de dos numeros impares los cuales llegan hasta 2051, visualizar la interrupcion por desbordamiento de la memoria

EEPROM, y enviar una seal de alarma. i) Realizar un programa para activar una parada de emergencia en el encendido secuencial de 3 motores elctricos DC con un intervalo de 7 segundos en el

arranque de cada motor, el encendido se realizara con un pulsador RB1, la parada se realizara con RB3 y la parada de emergencia por RB0. Implementar el circuito con sus respectivos motores DC. j) Realizar un programa para controlar una maquina para moler carne, la cual tiene un motor DC con regulacin de baja, media y alta velocidad. El operador debe seleccionar la velocidad segn su conveniencia. En caso de que alguna persona meta la mano, un sensor fotoelectrico conectado a RB7 debe parar automticamente la maquina, sin importar la velocidad en la que se encuentre. Implementar el circuito del motor con sus respectivas velocidades.

Turno Miercoles 10-12 a) Realizar un programa para activar un motor paso a paso bipolar el cual cambia de sentido de giro cuando se produce una interrupcin por RB7 y nuevamente cambia de sentido de giro cuando se pulsa RB7, el motor funciona a una velocidad de 1000 mseg. b) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia normal y para cuando se produce un cambio de estado por RB6, el motor funciona a una frecuencia de 60 Hz. c) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia wavedrive y para cuando se produce un cambio de estado por RB5, el motor funciona a una velocidad de 800 mseg.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

d) Realizar un programa para activar un motor paso a paso unipolar el cual funciona en secuencia de medio paso y para cuando se produce un cambio de estado por RB0, el motor funciona a una frecuencia de 100 Hz. e) Realizar un programa para activar un motor de corriente continua, y cambia su sentido de giro mediante un puente H cuando se produce un cambio de estado por RB0. f) Realizar un programa para la apertura RB7 y cierre RB6 de un ascensor, cuando la puerta se este cerrando el sensor fotoelctrico RB0, detectara que algn objeto o persona esta en medio de la puerta y hara parar el motor RB1 y girar en sentido contrario RB2 g) Realizar un programa para controlar una maquina automtica para trotar, la cual tiene motor y un odmetro con regulacin de baja, media y alta velocidad. El operador debe usar una manilla en la mano que tiene un detector de latidos de

corazn la cual no debe exceder en cada caso los 120 latidos por minuto. En caso de exceder, la maquina debe parar automticamente. Implementar el circuito del motor con sus respectivas velocidades. h) Realizar un programa para interrumpir la entrada de aire (valvula solenoide) de una etiquetadora de papel, el cual pega etiquetas a botellas de cerveza, cuando detecta las mismas mediante un sensor fotoelctrico. La maquina posee un

pulsador de encendido y otro de apagado, la etiquetadora deber seguir funcionando an cuando se interrumpa la entrada de aire i) Realizar un programa para activar una interrupcin por hardware cuando se controla el encendido secuencial de 6 motores en intervalos de 4 segundos, la

interrupcin se realizara mediante RB4. j) Realizar un programa para realizar la suma de dos numeros pares los cuales llegan hasta 2050, visualizar la interrupcion por desbordamiento de la memoria

EEPROM, y enviar una seal de alarma.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

Nota.- Todos los programas seran entregados en forma manuscrita y deben tener diagrama de flujos, simulacin en PIC SIMULATOR y Proteus 7.10, la simulacin ser entregada en un CD previa defensa del mismo, los programas son individuales.

S-ar putea să vă placă și