Upload
moises-acosta
View
256
Download
4
Embed Size (px)
Citation preview
REPORTE DE PRÁCTICA DE LABORATORIO NO. 2
Microcontroladores
1
Resumen—Las interrupciones constituyen quizá el mecanismo más
importante para la conexión del microcontrolador con el mundo
exterior, sincronizando la ejecución de programas con
acontecimientos externos.
OBJETIVO:
Programar el microcontrolador para que acepte una
interrupción externa analizando el uso de la pila.
COMPONENTES:
1 Microcontrolador PIC 16f883 o 16F887
8 LEDS
8 resistores de 220Ω
1 resistor menor a 40KΩ
1 resistor mayor a 1KΩ
1 capacitor electrolítico de cualquier valor
EQUIPO:
1 Fuente de +5V
1 Punta lógica
1 Multímetro
I. INTRODUCCIÓN
l microcontrolador PIC16F88X tiene un máximo de 15
interrupciones. Las interrupciones son llamadas
asíncronas a subrutinas que desvían el flujo del control
del programa. Pueden ser externas como el cambio de estado
de un pin de entrada o internas como el desbordamiento de un
temporizador. Al ejecutarse una interrupción se detiene la
ejecución del programa en curso, se guarda la dirección actual
del contador de programa en la pila y se carga el contador con
la dirección reservada 0004H, donde comienza la rutina de
servicio a la interrupción (RSI). La interrupción que se
utilizará en esta práctica es una externa a través del pin 0 del
puerto B. Consulte en la hoja de datos del PIC la
configuración de las interrupciones mediante el registro
INTCON.
II. DESARROLLO
a) Se programa el PIC con el siguiente código en
ensamblador (en caso de duda de cómo hacerlo
consulte la Práctica No. 1)
b) Ya que se haya programado el PIC, este se coloca en la
plantilla de trabajo y se conectará de acuerdo con el
siguiente diagrama que es para el PIC16F883. Si
utiliza el PIC16F887 cambie los pines de acuerdo al
diagrama correspondiente en la hoja de datos. Tenga
cuidado al manejar el PIC de no dañarlo con
electricidad estática (utilizar pinzas para su manejo).
El voltaje que se utilizará es de 5V para VDD y 0V
para VSS.
Figura 1. Conexiones PIC16F883
Los valores para los componentes descritos en la figura se dan
en la siguiente tabla.
MANEJO DE INTERRUPCIÓN EXTERNA
Miyuki Teri Villalón Hernández, Acosta Vega Moisés Isaías
DICIS, Universidad de Guanajuato
Salamanca, México
[email protected] [email protected]
E
TABLA I
VALORES PARA LOS COMPONENTES
Símbolo Valor Min. Valor Max.
VDD 5V 5V
R1 - 40kΩ
R2 1kΩ -
C1 ND ND
.
REPORTE DE PRÁCTICA DE LABORATORIO NO. 2
Microcontroladores
2
Código para el PIC.
; Programa contador de 4 bits con 'clear' ; y
subrutina de retardo
LIST P = 16f883 ; Comando que indica el PIC
usado
#include "P16F883.INC"
__CONFIG _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_OFF &
_PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF &
_BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF &
_DEBUG_OFF; __CONFIG _CONFIG2, _WRT_OFF &
_BOR40V;
RADIX HEX
AUX1 EQU 0x20
AUX2 EQU 0x21
AUX3 EQU 0x22
AUX4 EQU 0X23
goto startup
ORG 0x04
goto inter
startup
bsf STATUS,5
bsf STATUS,6
clrf ANSEL
clrf ANSELH
bcf STATUS,6
movlw b'01010001'
movwf OSCCON
movlw 0xff
movwf TRISB
clrf TRISC
bcf STATUS,5
movlw 0x90
movwf INTCON
clrf AUX1
inicio
btfsc PORTB,1
clrf AUX1
incf AUX1
movf AUX1,w
movwf PORTC
call retardo
goto inicio
; SUBRUTINA DE INTERRUPCIÓN
inter
movlw 0x0A
movwf AUX4
iciclo
decfsz AUX4,F
goto twinkle
bcf INTCON,1
retfie
twinkle
movlw 0xFF
movwf PORTC
call retardo
clrf PORTC
call retardo
goto iciclo
; SUBRUTINA DE RETARDO
;Esta rutina se utiliza como un divisor de
;frecuencia, ya que no se puede utilizar ;la
frecuencia del PIC de manera directa.
retardo
movlw 0xff
movwf AUX2
one
call retardo2
decfsz AUX2,1
goto one
return
retardo2
movlw 0xff
movwf AUX3
two
decfsz AUX3,1
goto two
return
END
III. RESULTADOS
Como en nuestro caso utilizamos el microcontrolador
PIC16F883 no hubo necesidad de cambiar las conexiones
mostradas en la figura 1. Los dos incisos del desarrollo de
la práctica los llevamos a cabo sin problema alguno, por
lo que al terminar los puntos anteriores lo siguiente fue
realizar las pruebas necesarias frente al profesor para
recibir su aprobación.
Figura 2. Conexiones de la figura 1.
REPORTE DE PRÁCTICA DE LABORATORIO NO. 2
Microcontroladores
3
En la figura de abajo se muestra el funcionamiento del
circuito, primeramente pusimos a trabajar el contador, en la
imagen podemos observar lo anterior con los LED’s
encendidos.
Figura 3. Contador Funcionando.
Ahora mostramos el funcionamiento de la interrupción en el
circuito, se puede observar por medio de los LED’s que ya
esta activa.
Figura 4. Interrupción del microcontrolador activa.
Por ultimo la función que resta por mostrar funcionando es la
función de Reset, en la cual el contador se detiene borra el
valor del registro y lo pone a 1 como se muestra en la figura de
abajo.
Figura 5. Contador reseteado (puesto a 1).
IV. OBSERVACIONES
Aunque el profesor aprobó el correcto funcionamiento de
nuestro circuito en la Figura 3 podemos observar el contador
en funcionamiento y en la Figura 4 la interrupción activada, no
se agrega un imagen donde se vuelva a mostrar el valor de la
Figura 3 después de desactivar la interrupción, ya que se
incrementaba inmediatamente después y no nos baba tiempo
de tomar una fotografía para añadirla al reporte.
V. EJERCICIOS
1. Determine en que flanco se realiza la interrupción ¿es
de 0 a 1 o de 1 a 0? Consulte en la hoja de datos el
registro OPTION y modifique su código para que la
interrupción se lleve a cabo en el flanco contrario al
que se realiza por default. Reporte el código
necesario para realizar este cambio.
La interrupción se efectúa de 0 a 1. Consultando en
la hoja de datos (PIC16F883) el registro OPTION se
explica que se puede cambiar el modo de realizar la
interrupción (revisar anexo).
startup bsf STATUS,5 bsf STATUS,6 clrf ANSEL clrf ANSELH bcf STATUS,6 movlw b'01010001' movwf OSCCON movlw 0xff movwf TRISB clrf TRISC bcf OPTION_REG,6 bcf STATUS,5 movlw 0x90 movwf INTCON clrf AUX1
2. Exprese con sus propias palabras el funcionamiento del
bit 1 del registro INTCON ¿Cuál será su utilidad?
Es un bit que indica una interrupción externa
habilitándola o deshabilitándola de acuerdo a su
estado cambiando de 0 a 1 cuando exista una
interrupción.
3. Enumere al menos otras 5 interrupciones con que
cuenta el PIC16F883.
• External Interrupt RB0/INT
• Timer0 Overflow Interrupt
• PORTB Change Interrupts
• 2 Comparator Interrupts
• A/D Interrupt
REPORTE DE PRÁCTICA DE LABORATORIO NO. 2
Microcontroladores
4
• Timer1 Overflow Interrupt
• Timer2 Match Interrupt
• EEPROM Data Write Interrupt
• Fail-Safe Clock Monitor Interrupt
• Enhanced CCP Interrupt
• EUSART Receive and Transmit Interrupts
• Ultra Low-Power Wake-up Interrupt
• MSSP Interrupt
VI. CONCLUSIÓN
Miyuki Teri Villalón Hernández.
En esta práctica observamos el comportamiento del
contador pero ahora con interrupciones, siendo esto una
practica muy introductoria con respecto a lo que vimos en
la clase. El microcontrolador cuenta con diferentes
interrupciones en este caso implementamos la interrupción
por el pin RB0 la cual es una interrupción externa
habilitada por el cambio de bajo a alto. Al ejecutarse
la interrupción el microcontrolador saca de lo que estaba
ejecutando el contador y va directo a la dirección 04h de
programa y ejecuta lo que encuentre a partir de allí hasta
encontrarse con la instrucción RETFIE que le hará
abandonar la interrupción y volver al lugar donde se
encontraba antes de producirse dicha
interrupción. Mientras se está ejecutando una interrupción
no se puede producir otra interrupción, el pic no lo
permite.
Acosta Vega Moisés Isaías.
Nuevamente la práctica nos resulto muy didáctica y
sencilla dejando claro el objetivo y mostrando los
conceptos más importantes, lo cual es un acierto del
profesor en el laboratorio. A pesar de que en cursos
anteriores se nos a hablado de las interrupciones en
microprocesadores y microcontroladores, me parece que
hasta ahora me queda mas claro la utilidad de esta
<<herramienta>> en aplicaciones y me hace reflexionar
en que otros proyectos académicos en los que e
participado a lo largo de mis estudios pude haber echado
mano de algo como lo visto en esta practica para
realizarlos en su momento, también me deja algunas dudas
respecto a su funcionamiento y alcance en sus
aplicaciones ya que en ocasiones me trae confusiones al
estudiarlo, las cuales estoy seguro sobre la marcha y la
elaboración del proyecto aclarare, por lo que respeta a
esta práctica el objetivo y ejercicios se realizaron
correctamente. Buscando información por mí cuenta
aplicaciones principalmente en internet pues veo que
prácticamente se pueden usar en todo, es algo
verdaderamente increíble el beneficio lo que podemos
hacer con estos dispositivos si los usamos correctamente
por supuesto e imaginación.
REFERENCIAS
[1] Data Sheet PIC16F882/883/884/886/887
[2] Manual de prácticas de laboratorio microcontroladores.
Gustavo Cerda Villafaña, Sergio Eduardo Ledesma Orozco,
Miguel Torres Cisneros
PIC16F882/883/884/886/887
DS41291D-page 30 Preliminary © 2007 Microchip Technology Inc.
2.2.2.2 OPTION Register
The OPTION register, shown in Register 2-2, is areadable and writable register, which contains variouscontrol bits to configure:
• Timer0/WDT prescaler• External INT interrupt• Timer0
• Weak pull-ups on PORTB
Note: To achieve a 1:1 prescaler assignment forTimer0, assign the prescaler to the WDT bysetting PSA bit of the OPTION register to‘1’. See Section 6.3 “Timer1 Prescaler”.
REGISTER 2-2: OPTION_REG: OPTION REGISTER
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’
-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown
bit 7 RBPU: PORTB Pull-up Enable bit1 = PORTB pull-ups are disabled0 = PORTB pull-ups are enabled by individual PORT latch values
bit 6 INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of INT pin0 = Interrupt on falling edge of INT pin
bit 5 T0CS: Timer0 Clock Source Select bit1 = Transition on T0CKI pin0 = Internal instruction cycle clock (FOSC/4)
bit 4 T0SE: Timer0 Source Edge Select bit1 = Increment on high-to-low transition on T0CKI pin0 = Increment on low-to-high transition on T0CKI pin
bit 3 PSA: Prescaler Assignment bit
1 = Prescaler is assigned to the WDT0 = Prescaler is assigned to the Timer0 module
bit 2-0 PS<2:0>: Prescaler Rate Select bits
000001010011100101110111
1 : 21 : 41 : 81 : 161 : 321 : 641 : 1281 : 256
1 : 11 : 21 : 41 : 81 : 161 : 321 : 641 : 128
Bit Value Timer0 Rate WDT Rate