Вы находитесь на странице: 1из 7

Universidad Autnoma de Ciudad Jurez

Instituto de Ingeniera y Tecnologa


Departamento de Elctrica y Computacin

Prctica #4 Interrupciones GPI (General-Purpose Interrupt)

Profesor: Dr. Juan De Dios Cota Ruiz

Alumno: 98706. Vctor Manuel Valenzuela De La Cruz

Grupo: A

Cd. Jurez, Chihuahua a 13 de febrero de 2014

Interrupcin de Propsito General

Objetivo
Disear un programa en lenguaje C, para el microcontrolador AT89LP6440, que permita usar la interrupcin de propsito general del puerto uno, utilizando nicamente dos pines de ste para encender y apagar un LED conectado al pin cero del mismo puerto. Una de las interrupciones deber estar configurada para responder a flancos ascendentes (encender LED) y la otra para responder a flancos descendentes (apagar LED).

Introduccin
En este pequeo ejercicio se configur la interrupcin de propsito general del microcontrolador AT89LP6440 para utilizar dos de los ocho pines del puerto uno como entradas de una interrupcin. Primeramente se configur el comportamiento de cada pin modificando los registros GPMOD, GPLS y GPIEN para determinar deteccin (nivel o filo), comportamiento (alto o bajo) y habilitacin, respectivamente. Seguido de esto se estableci la funcin de servicio a la interrupcin en donde se definieron las instrucciones requeridas para verificar el registro GPIF y as determinar a travs de que pin del puerto uno haba sido producida la interrupcin, realizando as las operaciones de acuerdo al pin excitado. Finalmente el programa en C fue pasado a la ROM del microcontrolador y se comprob su funcionamiento de forma fsica.

Configuracin de la interrupcin de propsito general en el microcontrolador AT89LP6440


La interrupcin de propsito general (GPI) provee 8 diferentes interrupciones externas configurables en el puerto uno del microcontrolador AT89LP6440. Cada pin del puerto puede detectar un nivel alto o bajo, o detectar un filo de subida o bajada. El registro GPIEN es utilizado para seleccionar los bits del puerto uno que sern habilitados para generar una interrupcin. Los registros GPMOD y GPLS determinan el modo de operacin para cada pin del puerto uno. GPMOD selecciona el modo de operacin entre activacin por nivel o por filo. GPLS selecciona un modo para deteccin por nivel bajo o alto, o un modo activado por filo de subida o bajada. Los pines del puerto uno son verificados cada ciclo de reloj. En el modo de activacin por nivel, un nivel vlido para poder generarse la interrupcin, ser cuando haya dos muestras consecutivas al mismo nivel. En el modo de activacin por filo, una transicin ser detectada si un valor cambia de una muestra a otra. Cuando una condicin de interrupcin en un pin es detectada, y ese pin est activo, la correspondiente bandera en el registro GPIF es activada. Dicha bandera en GPIF deber ser reiniciada mediante software. Cualquier interrupcin GPI har que el microcontrolador salga del modo de bajo consumo. En la Figura 1 se puede ver de forma grfica la funcin de cada registro de configuracin [1].

Interrupcin de Propsito General

Alto o Bajo? O Subida o bajada?

Por nivel o filo?

Habilitada?

Interrupcin?

Figura 1. Diagrama a bloques de las GPI.

Figura 2. Registro GPMOD para configuracin del modo de operacin de un pin en el puerto uno. Se define si ser activada la interrupcin por nivel o filo.

Interrupcin de Propsito General

Figura 3. Registro GPLS para configuracin el nivel de deteccin en un pin del registro uno. Se puede definir si se activar por nivel alto o bajo, o por filo ascendente o descendente.

Figura 4. Registro GPIEN para definir qu pines del puerto uno estarn habilitados para detectar una interrupcin.

Figura 5. Registro GPIF de banderas del puerto uno, utilizado para determinar en qu pin se ha dado una interrupcin.

Para configurar la interrupcin de propsito general basta con modificar los registros presentados anteriormente para definir el comportamiento de cada pin del puerto uno segn sea requerido. Por ejemplo, para establecer que el pin 0 estar habilitado y se activar por flanco de subida, y que el pin 7 estar habilitado y se activara por nivel alto, estando los dems pines deshabilitados, se puede usar el siguiente cdigo. GPMOD |= 0x01, para configurar que el pin 0 se activar por flanco. GPMOD &= 0x7F, para configurar que el pin 7 se activar por nivel. GPLS |= 0x81, configura que el pin 0 se activar por flanco ascendente y el pin 7 por nivel alto. GPIEN |= 0x81, habilitando pin 0 y pin 7.

Lo consecuente ser verificar el registro GPIF, al inicio de la funcin de servicio a esta interrupcin, para determinar en qu pin se dio sta. Es importante recalcar y recordar que tambin debe ser habilitada la GPI para que pueda funcionar como tal mediante el registro IE (habilitacin de interrupcin global) e IE2 (habilitacin de GPI). 4

Interrupcin de Propsito General

Cdigo implementado
/*************************************************************************************** Nombre Programa: Ejercicio - Interrupciones GPI Materia: Sistemas con Microprocesador Fecha: 10 de febrero del 2014 Nombre: Victor Manuel Valenzuela De La Cruz Escuela: Universidad Autnoma de Ciudad Jurez Carrera: Ing. Sistemas Digitales y Comunicaciones Descripcin: Este programa prende y apaga un LED a travs de interrupciones GPI Versin: 1.0 Funcional: Si ***************************************************************************************/ //Header Files #include <at89lp6440.h> void inicializacion(void) { //P1.0 como salida push pull //P1.1 ... P1.7 como entradas high impedance P1M0 = 0x3E; P1M1 = 0x01; //Configurando prioridad de interrupciones GPI de nivel 1 IP2 |= 0x01; IPH2 |= 0x00; //Configurando interrupciones GPI puertos P1.1 y P1.2 //Flanco de bajada P1.1 (poner 0 en posicin de GPLS para flanco de bajada) GPLS &= 0xFB; //Flanco de subida P1.2 (poner 1 en posicin de GPLS para flanco de subida) GPLS |= 0x04; //Configurando interrupciones por filo (poner 1 en posicin deseada de GPMOD para activacin por filo) GPMOD |= 0x06; //Habilitando interrupciones GPI (poner 1 en posicin deseada de GPIEN para habilitar) GPIEN |= 0x06; //Habilitando interrupciones GPI e interrupcin global IE2 |= 0x01; EA = 1; //Condiciones iniciales P1_0 = 0; //Limpiando banderas que indican habilitacin de las GPI GPIF = 0x00; } void interrupt_gpi(void) interrupt 7 { //verificando GPIF que corresponde al registro que puede utilizarse para determinar //en que bit del puerto 1 se ha dado la interrupcin switch(GPIF) { case 0x02: //interrupcin en bit 1 (P1.1) P1_0 = 1; //prendiendo LED en P1.0 break;

Interrupcin de Propsito General


case 0x04: //interrupcin en bit 2 (P1.2) P1_0 = 0; //apagando LED en P1.0 break; } GPIF = 0x00; //reiniciando registro de banderas de GPI para permitir que se vuelva a dar alguna } void main(void) { inicializacion(); //estableciendo configuracin de puertos e interrupciones while(1) //ciclo infinito, programacin polling { PCON |= 0x01; //modo de bajo consumo el microcontrolador } }

Sistema Implementado

Figura 6. Sistema Completo Implementado en el microcontrolador AT89LP6440.

Interrupcin de Propsito General

Conclusiones
En este pequeo ejercicio se comprendi el uso de otra interrupcin del microcontrolador AT89LP6440. La interrupcin de propsito general se compone de ocho bits o pines que pueden ser configurados individualmente para detectar diferentes comportamientos de la seal y activar la funcin de atencin a la interrupcin en caso de ser necesario. Esta interrupcin se maneja mediante cuatro registros, GPMOD se encarga de definir que el pin x se activar por nivel o filo, GPLS define si el nivel o filo, en el pin x, ser detectado como alto o bajo, y GPIEN es utilizado para habilitar el pin x como interrupcin. El registro restante, GPIF es utilizado para determinar en qu pin se ha dado la interrupcin. Es importante mencionar que esta interrupcin tiene un mismo vector asignado, por lo que cualquier interrupcin en cualquier pin, llamar a la misma funcin de atencin, por lo que es importante verificar que pin fue el activado mediante el registro GPIF y as realizar las acciones asociadas a ese pin.

Referencias
[1] Atmel, AT89LP6440, Atmel, [En lnea]. Available: http://www.atmel.com/devices/at89lp6440.aspx. [ltimo acceso: 12 Febrero 2014].

Вам также может понравиться