Está en la página 1de 13

Universidad Nacional Mayor de San Marcos

(Universidad del Perú, DECANA DE AMÉRICA)

FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

INFORME Nº 3

CURSO: LABORATORIO DE SISTEMAS DE CONTROL DIGITAL

DOCENTE: ING. CIFUENTES

NOMBRE: VILLAVICENCIO GOMEZ CARLOS JOSUE

CODIGO: 15190160

HORARIO: LUNES 4:00pm – 6:00pm

- 2020 -
1. OBJETIVO

 Comprender y analizar las interrupciones externas presentes en el AVR diseñando un


sistema cuyas funciones lógicas estén relacionadas con estas.

2. INTRODUCCION

Para esta sesión de laboratorio simularemos un contador binario de 4bits en el programa BASCOM-AVR
en código BASIC para contar de forma ascendente y descendentes los números del 1 al 8 con
interrupciones externas cada 0.5 segundos; así el sistema contara con un límite superior hasta 8 y un límite
inferior hasta 0. Así mismo para conocer el entorno de simulación del software con la compilación línea
por línea del código diseñado.

3. MARCO TEORICO

INTERRUPCIÓN EXTERNA AVR

La interrupción externa AVR se produce cuando en un pin preparado especialmente para este fin se
produce algún evento, como por ejemplo ocurra algún cambio de estado en el pin como por ejemplo pasar
de un bajo(0) a un alto(1); la interrupción externa AVR se comentará para el caso del ATmega88 pero si se
quiere utilizar algún otro el procedimiento es muy similar, solo hay que guiarse de la hoja de datos del
microcontrolador AVR utilizado.

La interrupción externa AVR es útil para el manejo de pulsadores, detectores de cruce por 0, teclados
matriciales y mucho más; hay 2 tipos de interrupciones externas en los microcontroladores AVR, en la
imagen se tiene la representación de los pines del Atmega88, los pines resaltados que se nombran como
INT0 e INT1, son pines que están preparados para producir una interrupción externa AVR por diversos
eventos que se pueden elegir por programa, otro microcontroladores AVR tienen más pines INTx; mientras
que los pines nombrados como PCINT0, PCINT1 así hasta PCINT23, son pines que están preparados para
producir una interrupción externa AVR cuando en estos pines se produce un cambio de estado, esto es si
sus estados pasan de alto a bajo o de bajo a alto; las interrupción externa AVR se producirá no importando
si el pin elegido es una entrada o salida digital.

Figura 1: Interrupción externa en el AVR atmega88


INTERRUPCIÓN EXTERNA AVR INT0 E INT1

Los pines INT0 e INT1 trabajan de forma independiente, pero realizan el mismo tipo de tarea, a través de
estos pines se pueden realizar una interrupción externa AVR, siendo la causa o el evento que produzca la
interrupción uno de los siguientes motivos:

 Un 0 o bajo en el pin INT0 o INT1.


 Por cambio de estado en el pin INT0 o INT1, esto es que pase de un bajo a un alto o de un alto a
un bajo.
 Por flanco de bajada ocurrido en el pin INT0 o INT1, esto es que el estado del pin pase de un alto
a un bajo.
 Por flanco de subida ocurrido en el pin INT0 o INT1, esto es que el estado del pin pase de un bajo
a un alto.

Para elegir el tipo evento que producirá la interrupción externa AVR y el pin a utilizar, se utiliza el registro
llamado registro de control de la interrupción externa EICRA.

Figura 2: Interrupción externa AVR EICRA

Los bits 7 a 4 del registro EICRA no son utilizados por lo que se les suele poner a 0, con bits 3 y 2 se elige
utilizar el pin INT1 y con los bits 1 y 0 se elige utilizar el pin INT0, de acuerdo a las combinaciones de bits
que se hagan se producirá la interrupción externa AVR por alguno de los eventos mencionados líneas
arriba.

Figura 3: Interrupción externa AVR INT1

Figura 4: Interrupción externa AVR INT0


4. DIAGRAMA DE FLUJO

Figura 5: Diagrama de flujo del sistema


5. PROCEDIMIENTO

Se realizó la programación respectiva en el software BASCOM-AVR.

' programa de un INERRUPCION EXTERNA


' INT0 E INT1

$regfile = "m328pdef.dat"
$crystal = 16000000 '16000000

Dim V1 As Integer
Dim A As Byte
Config Portb = Output
A = 0

On Int0 Int_subida
Enable Int0

On Int1 Int_bajada
Enable Int1

Enable Interrupts ' se activa el registro de


interrupcion en general
Do
V1 = 1
Loop
End

Int_subida:
If A = 8 Then
Portb = Portb
Print "Maximo valor posible: " ; A
Else
A = A + 1
Portb = A
Print "Contar: " ; A
End If
Return

Int_bajada:
If A = 0 Then
Portb = Portb
Print "Minimo valor posible: " ; A
Else
A = A - 1
Portb = A
Print "Contar: " ; A
End If
Return 'retorna el valor al DO
6. RESULTADOS

Compilamos el código y lo simulamos:

Con la función Step into code se procederá a simular línea por línea, obteniendo los siguientes
resultados:

Inicio en 0:

Figura 7: Variable del sistema inicial.

Figura 6: Ventana de simulación para las condiciones iniciales.

Las variables empezarán en sus valores iniciales de acuerdo al diagrama de flujo propuesto, en cuyo caso
inicia en 0. También, nuestro puerto de salida PORTB inicia en 0 al almacenar el valor de A=0.

Una vez dentro del bucle, se procederá realizar la primera interrupción a través de OC1A; de igual forma
se hará lo mismo para continuar con la simulación del sistema:

Figura 8: Sistema dentro del bucle

Se realizará las interrupciones; de igual forma se hará lo mismo para continuar con el conteo ascendente
y descendente una vez incrementado el valor:

Figura 9: Interrupciones externas INT0 e INT0


Para verificar el óptimo funcionamiento del sistema, se procederá a activar las interrupciones externas
para observar si se cumple con la función lógica del diseño.

CASO 1: INTERRUPCION EXTERNA INT0 – CONTEO DE MANERA ASCENDENTE HASTA 8

PRIMERA INTERRUPCION (CONTEO A 1):

Figura 10: Simulación del conteo a 1.

SEGUNDA INTERRUPCION (CONTEO A 2):

Figura 11: Simulación del Conteo a 2.

TERCERA INTERRUPCION (CONTEO A 3):

Figura 12: Simulación del conteo a 3.

CUARTA INTERRUPCION (CONTEO A 4):

Figura 13: Simulación para el conteo a 4.


QUINTA INTERRUPCION (CONTEO A 5):

Figura 14: Simulación para el conteo a 5

SEXTA INTERRUPCION (CONTEO A 6):

Figura 15: Simulación para el conteo a 6

SEPTIMA INTERRUPCION (CONTEO A 7):

Figura 16: Simulación para el conteo a 7

OCTAVA INTERRUPCION (CONTEO A 8):

Figura 17: Simulación para el conteo a 8

Hemos llegado a nuestro limite ascendente del sistema, si accionamos otra interrupción externa INT0
aparecerá un mensaje el cual nos muestra que nuestro sistema ha llegado a su máximo valor.
Figura 18: Ventana del terminal para valor máximo

Una vez alcanzado nuestro valor máximo, procederemos a realizar la interrupción externa por INT1, así
nuestro sistema podrá descender de uno en uno hasta llegar a su valor mínimo.

CASO 1: INTERRUPCION EXTERNA INT0 – CONTEO DE MANERA DESCENDENTE HASTA 0

PRIMERA INTERRUPCION (CONTEO A 7):

Figura 19: Simulación para el conteo descendente a 7

SEGUNDA INTERRUPCION (CONTEO A 6):

Figura 20: Simulación para el conteo descendente a 6

TERCERA INTERRUPCION (CONTEO A 5):

Figura 21: Simulación para el conteo descendente a 5


CUARTA INTERRUPCION (CONTEO A 4):

Figura 22: Simulación para el conteo descendente a 4

QUINTA INTERRUPCION (CONTEO A 3):

Figura 23: Simulación para el conteo descendente a 3

SEXTA INTERRUPCION (CONTEO A 2):

Figura 24: Simulación para el conteo descendente a 2

SEPTIMA INTERRUPCION (CONTEO A 1):

Figura 25: Simulación para el conteo descendente a 1

OCTAVA INTERRUPCION (CONTEO A 0):

Figura 26: Simulación para el conteo descendente a 0

Hemos llegado a nuestro limite descendente del sistema, si accionamos otra interrupción externa INT1
aparecerá un mensaje el cual nos muestra que nuestro sistema ha llegado a su mínimo valor posible.
Figura 27: Ventana del terminal para el valor mínimo

Una vez alcanzado nuestro valor mínimo, el sistema no podrá realizar conteos descendentes, así nuestro
sistema vuelve a nuestra condición inicial.

7. ANALISIS DE RESULTADOS

INTERRUPCIONES
CASOS VALORES INTERPRETACIÓN
EXTERNAS
CONDICIONES A=0
Condiciones iniciales del sistema
INICIALES PORTB=0
A=1
El valor de A se ha incrementado en 1 (A=1).
PORTB=1
Primer conteo de manera ascendente.
Contar: 1
A=2
El valor de A se ha incrementado en 1 (A=2).
PORTB=2
Segundo conteo de manera ascendente.
Contar: 2
A=3
El valor de A se ha incrementado en 1 (A=3).
PORTB=3
Tercer conteo de manera ascendente.
Contar: 3
A=4
El valor de A se ha incrementado en 1 (A=4).
PORTB=4
Cuarto conteo de manera ascendente.
Contar: 4
INT0 CASO 1
A=5
El valor de A se ha incrementado en 1 (A=5).
PORTB=5
Quinto conteo de manera ascendente.
Contar: 5
A=6
El valor de A se ha incrementado en 1 (A=6).
PORTB=6
Sexto conteo de manera ascendente.
Contar: 6
A=7
El valor de A se ha incrementado en 1 (A=7).
PORTB=7
Séptimo conteo de manera ascendente.
Contar: 7
A=8
El valor de A se ha incrementado en 1 (A=8).
PORTB=8
Octavo conteo de manera ascendente.
Contar: 8
A=8
PORTB=PORTB El sistema ha llegado a su límite superior y A ha
Máximo valor llegado a su valor máximo posible.
posible: 8
A=7
El valor de A se ha reducido en 1 (A=7). Primer
PORTB=7
conteo de manera descendente.
Contar: 7
A=6
El valor de A se ha reducido en 1 (A=6). Segundo
PORTB=6
conteo de manera descendente.
Contar: 6
A=5
El valor de A se ha reducido en 1 (A=5). Tercer
PORTB=5
conteo de manera descendente.
Contar: 5
A=4
El valor de A se ha reducido en 1 (A=4). Cuarto
PORTB=4
conteo de manera descendente.
Contar: 4
A=3
El valor de A se ha reducido en 1 (A=3). Quinto
PORTB=3
INT1 CASO 2 conteo de manera descendente.
Contar: 3
A=2
El valor de A se ha reducido en 1 (A=2). Sexto
PORTB=2
conteo de manera descendente.
Contar: 2
A=1
El valor de A se ha reducido en 1 (A=1). Séptimo
PORTB=1
conteo de manera descendente.
Contar: 1
A=0
El valor de A se ha reducido en 1 (A=0). Octavo
PORTB=0
conteo de manera descendente.
Contar: 0
A=0
PORTB=PORB El sistema ha llegado a su límite inferior y A ha
Mínimo valor llegado a su valor mínimo posible.
posible: 0
8. CONCLUSIONES

 Nuestro código compilo y simuló la función requerida satisfactoriamente, lo que indica que
nuestro código está bien diseñado y no contiene errores.
 A diferencia de otros softwares, BASCOM posee un Hardware Simulation integrado que permite
observar la simulación sin necesidad de otro software.
 La función Step into Code del BASCOM permite un mayor control de nuestro código al compilar
línea por línea, si en caso existiera un error es más fácil encontrarlo gracias a esa función.
 La interrupción externa AVR es útil para el manejo de pulsadores, detectores de cruce por 0,
teclados matriciales y mucho más.
 Las interrupciones representan un atributo importante para todo sistema empotrado que le
permite atender procesos del mundo exterior sin descuidar actividades relevantes en la ejecución
del programa del usuario.

9. BIBLIOGRAFIA

 BASCOM-8051 guía de usuario ,1995-2000 MCS Electronics, Traducido al español por J. Mengual
 Tutorial AVR, Octavo Electrónica 2009 –2010, FISEI –UTA.
 Zuta, N. (2019). UNIVERSIDAD NACIONAL DEL CALLAO ESCUELA DE POSGRADO. In Repositorio
institucional – UNAC. https://posgrado.unac.edu.pe/
 Interrupción externa AVR - MICROCONTROLADORES. (n.d.). Retrieved September 20, 2020, from
http://microcontroladores-mrelberni.com/interrupcion-externa-avr/

También podría gustarte