Anda di halaman 1dari 5

Trabajo de Investigacin Microprocesadores

TET424

Aplicaciones realizadas en base a interrupciones y


temporizadores con microcontroladores, de preferencia PIC.
Guaa Lucero Bryan Roberto
Escuela Politecnica Nacional
Nro. nico: 201321595

RESUMEN
El objetivo de la investigacin es familiarizarse con los
cada uno de estos conceptos y aplicaciones de las
interrupciones y temporizadores en microcontroladores
PIC, cual es la funcin que cumplen y en base a esto
definir la programacin de cada una de sus subrutinas,
ya que a su vez estos constituyen un tema de gran
importancia en los sistemas digitales.
I. INTRODUCCIN

Interruptiones
Se puede decir que una interrupcin es un evento que
hace que nuestro microcontrolador deje de realizar las
tareas especficas para la que se program y al mismo
tiempo se dirija a este acontecimiento, para luego volver
a las acciones que normalmente fue programado.
Temporizadores
Los temporizados su opcin ms notoria es la de medir el
tiempo entre dos eventos y a partir de esto establecer
tareas a tiempos regulables. En cada uno de los PICs
podemos encontrar uno o varios timers internos esto
variara de tipo de PIC con el que estemos trabajando.
Se puede ver que la configuracin de los timers se basa
en los ciclos del oscilador. Que por defecto la seal que
van a contabilizar los timers corresponde a la frecuencia
del oscilador dividida por cuatro. Por lo tanto en realidad
cuentan ciclos mquina, no ciclos de reloj.
II. MARCO TEORICO

Interrupciones en microcontroladores
[1]Las interrupciones son cambios de trayectorias del
flujo de un programa causadas por agentes externos de
mayor prioridad. Cuando esto ocurre, el microcontrolador
detiene el programa en curso, almacena la direccin en la
cual se ha detenido y salta a un vector de interrupcin
previamente definido en el programa.
[2]Principales fuentes de interrupcion en los
microcontroladores:
Pin INT, cambio en los terminales del puerto B
(RB7:RB4).
Overflow en los temporizadores.

Cambio en el comparador.
Fin de escritura en la memoria EEPROM de datos.
Relacionadas con el Puerto Paralelo Esclavo, con la
USART, con el fin de conversin A/D y en general con
los mdulos perifricos con que puede contar una MCU.
Gestin de interrupciones mediante registros:
INTCON: registro general de control y estado.
En funcin de los perifricos disponibles por una MCU:
PIE1, PIE2 (Peripheal Interrupt Enable) habilitan las
interrupciones de cada perifrico.
PIR1 y PIR2 (Peripheal Interrupt Flag Registers)
identifican el perifrico que interrumpe.
[3]Para el trabajo con las interrupciones en la mayora de
los PICs debemos trabajar en el registro INTCON
(Interrupt Control Register)

Fig.1 Bits del puerto INTCON PICs 16Fxx (16F88)


Bit 7 GIE: (Global Interrupt Enable) bit de habilitacin
global de interrupciones
1 = Habilita las interrupciones.
0 = Deshabilitar todas las interrupciones. (Ms
recomendado para interrumpir funciones anidadas)
Bit 6 PEIE: (Peripheral Interrupt Enable) bit de
habilitacin de interrupciones de perifricos.
1 = Habilita las interrupciones desde los perifricos.
0 = Inhibe las interrupciones desde los perifricos.
(3) En MCU con un solo perifrico puede ser EEIE o
ADIE
Bit 5 T0IE: (Timer 0 Overflow Interrupt Enable) bit de
habilitacin del Timer 0.
1 = Habilita la interrupcin con el desbordamiento del
Timer 0.
0 = Inhibe la interrupcin con el desbordamiento del
Timer 0.
Bit 4 INTE: (INT External Interrupt Enable) bit de
habilitacin de interrupcin desde el pin de entrada INT.
1 = Habilita la interrupcin.
0 = Inhibe la interrupcin.
(2) Algunas MCU no disponen de esta caracterstica

Trabajo de Investigacin Microprocesadores

TET424

Bit 3 RBIE: (RB Port Change Interrupt Enable) bit de


habilitacin de interrupcin con el cambio de
RB7:RB4
1 = Habilita la interrupcin.
0 = Inhibe las interrupcin.
(2) Algunas MCU no disponen de esta caracterstica
(1) Tambin se puede encontrar con el nombre GPIE.
Bit 2 T0IF: (Timer 0 Overflow Interrupt Flag).
1 = Interrupcin producida por el desbordamiento del
Timer 0 (debe ser puesto a cero por SW).
0 = El Timer 0 no se ha desbordado.
Bit 1 INTF: (INT External Interrupt Flag).
1 = Interrupcin producida por INT (debe ser puesto a
cero por SW).
0 = INT no ha interrumpido la MCU.
(2) Algunas MCU no disponen de esta caracterstica
Bit 0 RBIF: (RB Port Change Interrupt Flag).
1 = Interrupcin producida por el cambio en alguno de los
bits RB7:RB4 (debe ser puesto a cero por SW).
0 = RB7:RB4 no han interrumpido la MCU.
(2) Algunas MCU no disponen de esta caracterstica
(1) Tambin se puede encontrar con el nombre GPIF.

;** Configuracion de Interrupciones **;


CONF_INTERRUPCION
bsf INTCON,RBIE ; Habilitar interrup. RBIE bcf
INTCON,RBIF ; Limpiar bandera de interrup. bsf
INTCON,GIE ; Habilitar interrupciones
;** Programa Principal: Enciende y apaga ** ;** leds
conectados al Puerto A **;
PRINCIPAL movlw 0xFF
movwf PORTA
call RETARDO.5
clrf PORTA call RETARDO.5
goto PRINCIPAL
;** Rutina de Servicio de Interrupcion **;
ISR bcf INTCON,GIE ; Deshabilitar interrupciones
CHECA_BOTON btfsc PORTB,4 1
C:\Pics\intportb\intportb.asm goto $+3 call ANTIRREBOTES
call LED0 btfsc PORTB,5 goto $+3 call ANTIRREBOTES
call LED1 btfsc PORTB,6 goto $+3 call ANTIRREBOTES
call LED2 btfsc PORTB,7 goto $+3 call ANTIRREBOTES
call LED3 call ANTIRREBOTES
goto SALIDA_ISR LED0
movlw 0x01 movwf
PORTB return LED1
movlw 0x02
movwf PORTB
return LED2
movlw 0x04
movwf PORTB
return LED3
movlw 0x08
movwf PORTB
return ANTIRREBOTES
btfss PORTB,4
goto ANTIRREBOTES
btfss PORTB,5
goto ANTIRREBOTES
btfss PORTB,6
goto ANTIRREBOTES
btfss PORTB,7
goto ANTIRREBOTES
return SALIDA_ISR
bcf INTCON,RBIF ; Limpiar bandera de interrupcion bsf
INTCON,GIE
; Habilitar interrupciones retfie ; Regresar de la interrupcion ;
*** Fin de la ISR ** ;********************
;** Rutina de retardo de 5 segundos **;
RETARDO.5
movlw d'50'
movwf CONT3
CICLO3 movlw d'97'
movwf CONT2
CICLO2 movlw d'33'
movwf CONT
CICLO1 decfsz CONT,f
goto CICLO1
decfsz CONT2,f
goto CICLO2

[4]Ejemplo del uso de interrupciones


;************************************************
* ;Programa que enciende y apaga por medio segundo ;leds
conectados al puerto A del microcontrolador ;16f628a y que
ademas por medio de interrupciones ;detecta las pulsaciones
de 4 push buttons conec- ;tados a la parte alta del puerto B y
enciende el ;led correspondiente de 4 leds en la parte baja ;del
puerto B ;Fecha: 08.06.07 Autor: Jorge A. Bojorquez
;http://micropic.wordpress.com
;*************************************************
list p=16f628a
include p16f628a.inc
__config 0x3D18
cblock 0x20
CONT1
CONT2
CONT3
Endc
org 0x00 ; Vector de Reset
goto INICIO org 0x04 ;Vector de Interrupcion
goto ISR
;** Configuracion de Puertos **;
INICIO movlw 0x07 ; Se desactivan los
movwf CMCON ; comparadores analogicos bsf
STATUS,RP0 ; Cambio al banco 1
clrf TRISA
; Puerto A como salida
movlw 0xF0
; Parte baja PB como salida
movwf TRISB ; y parte alta como entrada
bcf STATUS,RP0 ; Cambio al banco 0 LIMPIA_PUERTOS
clrf PORTA ; Limpiar Puerto A
clrf PORTB
; Limpiar Puerto B

Trabajo de Investigacin Microprocesadores


decfsz CONT3,f
goto CICLO3
return
;** Fin de rutina ** ;
END

Una de las mayores ventajas que podemos tener mientras


trabajamos con interrupciones es que mientras esperamos
que se presente alguna situacin la cual produzca la
interrupcin el microcontrolador estar realizando otra
tarea, esto ayuda a poner muchas ms funciones en
nuestro micro y que no est especificado solo para una
accin y esto en la prctica es muy til ya que en un
circuito al presentarse una interrupcion este la resuelve y
vuelve a su trabaja normal desde el punto donde se qued.
Temporizadores
En muchas de las aplicaciones es importante el trabajo de
los temporizadores con variables de tiempo como los son:
generar o medir seales o a su vez llevar un registro de
fecha y hora
En los microntroladores PIC de gama media como son
16FXX y 18Fxx podemos encontrar tres mdulos bsicos
con los cuales podemos temporizar:
Time0 (modulo bsico que lo contienen todos los PICs),
Time1, Time2 (Mdulos CCP Capture/Compair PW)
amplan capacidades del mdulo bsico.

[5]Fig2 Caractersticas principales temporizadores PIC de clase media

TIME0
Las caractersticas del TIME1, TIME2 son similares a
las del TIME0 simepre hay de llevar de la mano revisar
el datta sheet del integrado para mayor seguridad de
como es el trabajo de estos puertos.
[6]Este puede funcionar de dos maneras:
Contador de pulsos externos
Temporizador para calcular intervalos de
tiempo.
En el caso que dicha seal provenga del reloj interno de
instrucciones (Fint), el Timer0 se utiliza para generar
interrupciones peridicas a travs de una cuenta
programada. Ya que conocemos la frecuencia de
funcionamiento y en base a un valor cargado en el
contador del timer podemos temporizar eventos.
En el caso que dicha seal sea de una fuente externa al
microcontrolador (Fext), es especialmente til para
contar el nmero de pulsos que dicha seal genera en el

TET424
tiempo ya que cada pulso de dicha seal incrementa el
TMR0.

[2]Caractersticas principales:
Contador temporizador de 8 bits
Accesible mediante operaciones de lectura y escritura.
Incorpora un prescaler de 8 bits programable por Sw.
Reloj interno o externo.
Seleccin del flanco del reloj externo
Puede producir una interrupcin al desbordarse
REGISTRO OPTION_REG

[7]Fig3 bits registro OPTION REG microntroladores


gama media 16FXX
Bit 7 RBPU: bit de habilitacin de resistencias pull-up
1 = Inhibidas
0 = habilitadas
Bit 6 INTEDG: bit de seleccin del flanco activo de la
interrupcin INT
1 = Flanco ascendente
0 = Flanco descendete
Bit 5 T0CS: bit de seleccin de reloj para TMR0
1 = Transicin del pin T0CKI (reloj externo).
0 = Reloj interno (CLKOUT).
Bit 4 T0SE: bit de seleccin de flanco cuando el reloj es
externo
1 = Flanco de bajada de T0CKI.
0 = Flanco de subida de T0CKI
Bit3 PSA: bit de asignacin del prescaler
1 = Prescaler asignado al WDT.
0 = Prescaler asignado al TIMER 0.
Bit 2:0 PS2:PS0: Valor de divisin del prescaler

Trabajo de Investigacin Microprocesadores

Carga y temporizacin
[8]En modo temporizador el Timer 0 incrementa su
cuenta en cada ciclo de instruccin. Este modo sirve para
generar temporizaciones y bases de tiempo de la misma
forma que los retardos por software, sin embargo las
temporizaciones con el Timer 0 pueden ser ms exactas
y adems se cuenta con la ventaja de que el mdulo
puede trabajar mediante interrupciones as que el
programa puede ejecutar otras instrucciones mientras se
realiza la temporizacin.
La temporizacin que se puede obtener con este mdulo
se obtiene de la siguiente relacin:
Temporizacin = [(256 - precarga)*PS+2]*Tinstruccion
Donde:
Precarga = Valor que se le asigna al registro TMR0 al
comenzar la temporizacin
PS = Pre escalador. Si est asignado al watchdog tomar
el valor de 1
Tinstruccin = 4/frecuencia de oscilaciny la
temporizacin est dada en segundos.

TET424
btfss
STATUS, Z ; contador virtual a 0?
goto RECARGA
; si no es 0, recarga el tmr0.
; poner aqui el codigo de la rutina; recargamos contador
virtual;
movlw T0AUXVAL ; recarga registro auxiliar
movwf T0AUX
RECARGA
; recargamos Timer0 y borramos la interrupcion;
movlw
T0VALUE
movwf TMR0
; recargamos el timer0
bcf INTCON, T0IF ; indicamos interrupcion ya servida
retfie ; fin de interrupcion
;****** PROGRAMA PRINCIPAL ******
INICIO
clrwdt ; recomendacion de microchip antes de reasignar
el prescale
bsf STATUS, RP0
; cambiamos al banco 1
movlw OPTIONV
movwf OPTION_REG ; configuramos timer0
bcf
STATUS, RP0 ; cambiamos al banco 0
movlw T0VALUE ; cargamos el timer0
movwf TMR0
movlw T0AUXVAL ; cargamos contador virtual
movwf T0AUX
bsf INTCON, T0IE ; habilitamos interrupcion por
Timer0
bsf
INTCON, GIE ; habilitamos interrupcion
general
MAIN goto $ ; bucle principal
End
III. CONCLUIONES

[6]Ejemplo del uso de temporizadores

T0AUX equ 0x0d


OPTIONV equ b'10000100' ; reloj interno, flanco
subida y prescaler 1:32
T0VALUE equ d'6' ; valor del timer0
T0AUXVAL equ d'125' ; valor del contador virtual
org
0x00
goto
INICIO
org
4
goto IRQ
;****** RUTINA DE INTERRUPCION ******
IRQ
; comprobamos desbordamiento de contador virtual
incf T0AUX ; incrementamos reg auxiliar de tiempo

A partir podemos concluir que tanto las interrupciones


y temporizaciones son importantes al momento de
implementacin de cualquier circuito digital, ya que
por medio de interrupciones podemos hacer que
nuestro PIC pueda realizar ms de una solo funcin ya
que al saltar a la interrupcion trabaja hasta resolverla y
luego retoma su actividad inicial a partir del punto que
la dejo.
Adems que para control de los temporizadores
debemos tener en cuenta las especificaciones con las
que trabaja ya que algunos tienes dos operadores ms
a los cuales se conecta un oscilador externo de cristal
de cuarzo o resistencia capacitor que ayudara al
oscilador del mismo.
Debemos tener en cuenta la dada por microchip para
el uso de temporizadores durante su programacin.

Trabajo de Investigacin Microprocesadores


IV. BIBLIOGRAFIA /REFERENCIAS
[
C. B. Esteva, unrobotica, [En lnea]. Available:
1 http://www.unrobotica.com/manuales/basic.pdf. [ltimo
]
acceso: 06 06 2016].
[ S. E. A. I. T. I. ELECTRNICO. [En lnea]. Available:
2
http://edii.uclm.es/~miniesta/mc_pic_2.pdf. [ltimo
]
acceso: 08 06 2016].
[ microchip, microchip.com, 2003. [En lnea]. Available:
3 http://ww1.microchip.com/downloads/en/DeviceDoc/30487
]
b.pdf. [ltimo acceso: 06 06 2016].
[ A. J. A. Bojorquez, micropic.wordpress, 08 06 2007. [En
4
lnea]. Available:
] https://micropic.files.wordpress.com/2007/06/manejo-deinterrupciones.pdf. [ltimo acceso: 07 06 2016].
[
google, books.google.com, [En lnea]. Available:
5 https://books.google.com.ec/books?id=ODenKGOHMRkC
] &pg=PA189&lpg=PA189&dq=aplicaciones+temporizador
es+en+pic&source=bl&ots=uluQ0ia7-

TET424
E&sig=41woMI7HvQqcAtHCikoYLlSeldY&hl=es419&sa=X&ved=0ahUKEwiVn5Wu0p3NAhXEPB4KHff
XCw8Q6AEIPTAI#v=onepage&q=aplicaciones%20tem.
[ltimo acceso: 09 06 2016].
[
galeon, leo-tronics, [En lnea]. Available:
6 http://galeon.com/leo-tronics/TutorialTimer0.pdf. [ltimo
]
acceso: 09 05 2016].
[
microchip, ww1.microchip.com, 2013. [En lnea].
7
Available:
] http://ww1.microchip.com/downloads/en/DeviceDoc/35007
C.pdf. [ltimo acceso: 09 06 2016].
[ anonimo, Circuitos Electronicos, 15 04 2011. [En lnea].
8 Available: http://www.circuitoselectronicos.org/2011/04/el] temporizador-timer-0-en-los.html. [ltimo acceso: 09 06
2016].

Anda mungkin juga menyukai