6
REPORTE DE PRÁCTICA DE LABORATORIO NO. 2 Microcontroladores 1 ResumenLas 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 PRACTICA 02

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

REPORTE DE PRÁCTICA DE LABORATORIO NO. 2

Microcontroladores

5

ANEXO

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