Está en la página 1de 7

Laboratorio 3

Diseño Digital con Microcontroladores

26-09-2019

Leonardo Martinez Florez – 20141005105, Nyky Joel Alfonso – 20132005982, Andrés Prieto Celis – 20141005211

Resumen: Para la presente practica se hizo el diseño e componentes internos que le permiten al usuario fi-
implementación de un reloj para ajedrez. Cada uno de nal implementar funcionalidades de forma discreta
los jugadores introduce su tiempo de partida que es con-
figurado por medio de botones, principalmente por un y tediosa. Reduce el tiempo invertido en los mon-
botón aceptar y otro que incrementa los tiempos tanto tajes de hardware, requeridos en cualquier diseño.
de segundos como de minutos y los asocia al tipo de Para efectos de este laboratorio se necesita imple-
jugador. Esto haciendo uso del modulo timer del Psoc
y realizando la visualización los tiempos en una LCD mentar un reloj de ajedrez que permita a cada uno
caracter. de los jugadores configurar su tiempo de juego por
medio de la utilización de pulsadores para tal fin.
Se plantea realizar la temporización del tiempo de
Palabras clave: Timer,Interrupcion,Pulso,Clock,LCD, partida de cada jugador mediante el uso del bloque
visualizacion. Timer incluido internamente en el Psoc. Cuando
el tiempo de alguno de los jugadores ha llegado a
su fin, este se queda en cero y el tiempo del otro
1. INTRODUCCIÓN jugador sigue corriendo hasta que este oprima el
botón de pausa.
En el presente documento se aborda la solución que
se le da al problema de implementar con un bloque
timer e interrupciones un reloj de ajedrez digital 3. DISEÑO Y MODELO DE SOLUCIÓN
programable que funcione perfectamente para una
partida de ajedrez cualquiera. El reto para esta
práctica es la utilización de interrupciones para el A partir de del problema planteado en la guia de
control del sistema y la posterior visualización en laboratorio se prosiguio a diseñar el algoritmo de
el bloque LCD el cual se encuentra como bloque solucion que posteriormente fue codificado en im-
utilizable en Psoc Creator. plementado en bloques.

2. FORMULACIÓN DEL PROBLEMA

Un dispositivo PSOC posee una serie de bloques y

1
dicho bloque fue utilizado con la configuración que
trae por defecto, sin caracteres Propios, y con la
conversión ASCII a Números.

Figure 3: Bloque timer utilizado

para el bloque timer se realizaron configuración


correspondientes al clock y la cantidad de bit de
la resolución para obtener un periodo de 1s para
refrescar la visualización como se requiere en la
practica se ve en la figura 4.

Figure 1: Diagrama algoritmo de la solucion al


problema

Se hizo la programación de diferentes funciones en


lenguaje C con sus correspondientes condicionales
para la solución de los diferentes modos de op- Figure 4: configuración bloque timer utilizado
eración y cumplimiento de los requerimientos so-
licitados para el desarrollo del problema.
Los botones que se utilizaron para los jugadores y
la configuración de los tiempo son los que se mues-
3.1 Bloques utilizados tran en la figura 5.

Figure 2: Bloque LCD utilizado Figure 5: botones e interrupciones utilizados

2
estos botones poseen una configuración típica de
botón, con un Drive mode de resistencia pull up,
sin conexión Hardware, y con la interrupciones de-
tectadas por flanco de baja como se muetsra en las
figuras 6 y 7

Figure 8: botones e indicadores extras para config-


uración

en la figura 8 se encuentran las botones extras


para la configuración de tiempos para los dos ju-
gadores estos están configurados con modo drive
de resistencia de pull up en ambos caso sy sin in-
terrupciones, también se encuentra el indicador de
juego el cual nos indica cuando el juego comenzó
y cuando termino, el cual su configuración e drive
Figure 6: botones e interrupciones utilizados mode es de Strong drive.

3.2 Códigos y Funcionalidades

la solución implementada fue hecha en c, en el IDE


de desarrollo del PSOC, llamado PsoC-Creator 4.2.
A grandes rasgos existen cuatro segmentos de fun-
cionalidades iniciales, entre ellas el loop de la parte
principal del programa, las interrupciones habili-
tadas en el sistema con el propósito de modificar
las variables globales de control y por ultimo la
visualización misma.

3.2.1 Control de las Interrupciones

Figure 7: botones e interrupciones utilizados Las interrupciones son las pausas que ejecuta el sis-
tema por medio de un evento asociado al hardware
que congela el estado de la palabra de contador del
programa, y por ende toma una rutina paralela que
se encarga de cumplir ciertas funcionalidades, en
todas la interrupciones presentes en el diagrama de las cuales se quiere evadir su ejecución secuencial
bloques están configuradas con el tipo DERIVE, y sincrónica con el orden de las instrucciones.

3
3.2.1.1 Botón_blancas y Botón_negras

Figure 10: interrupción Botón_negras

En esta interrupción se realizará la configuración


para el tiempo del jugador de fichas blancas, la
cual entra con su respectivo anti-rebote del botón,
hecho con un ciclo while y esperando a que el
Figure 9: interrupción Botón_blancas botón cambie de estado.Seguidamente activamos

4
una bandera llamada Flag y con dicha bandera ac- En estas interrupciones se inicia el tiempo del con-
tivada procedemos a realizar las operaciones nece- trincante y se detiene el tiempo del jugador que
sarias. presione su botón esto se logra con una condición
primero recibimos el valor correspondiente al ul- simple donde cambie el "Turno" donde se encuen-
timo dígito de minutos, luego el siguiente y así tre el juego cambiando así el tiempo que se re-
hasta formar el tiempo que el jugador desee duce, estas interrupciones también tiene un anti-
colocar, esto se realiza con ciclos while man- rebote tal como se implemento en las interrup-
teniendo la interrupción hasta que se cumplan ciones Boton_blancas y Boton_negras.
diferentes condiciones que son oprimir el botón,
"subir" las veces que se desee con un cursor
que indica el numero en el cual esta modifi- 3.2.1.3 Timerr
cando y luego oprimiendo el botón "aceptar"
para confirmar su elección de tiempo y así los
cuatro valores requeridos para el tiempo los
cuales se guardan en las variables cont,cont1
cont2,cont3,cont4,cont5,cont6,cont7,cont8, estos
valores tiene sus respectivas condicionales que no
dejan que el tiempo pase de 60:59 esto para cumplir
el requerimiento del proyecto. Al finalizar toda
la configuración el jugador puede oprimir nueva-
mente el botón "aceptar" y su configuración queda
guardada en las variables temp, tem2, temp3,
temp4, que indican los minutos y segundos de
las variables "cont" de ambos jugadores y con los
cuales se trabajará posteriormente para su visual-
ización.

3.2.1.2 Juego_B y Juego_N

Figure 12: interrupción Timerr

en esta interrupción realizamos un registro llamado


total_ref el cual nos indica si el tiempo del jugador
en turno termino o no. esto para activar unas ban-
deras denominadas Listo_B y Listo_N que indi-
can cual de esos jugadores es que termino y así
dejar en cero el contador correspondiente.
También realizamos el descuento de los tiempo de
los jugadores dependiendo del "Turno" en el que
se encuentre si es turno blanco o negro, dejando en
cero el contador que termino y activando el con-
Figure 11: interrupciones Juego_B y Juego_N tador contrario hasta que se oprima el botón de

5
Juego blancas o negras dependiendo de cuan ter-
mino.

3.2.2 Loop principal del programa

Simplemente se generó un estado para el que va


a activar el Buzzer cuando los tiempos de conteo
lleguen a su fin, antes del loop de forma estática
se instancian las interrupciones y se genera el for-
mato de visualización que será enviada al disposi- Figure 14: Segmento de codigo que visualiza y or-
tivo LCD ganiza los datos

La función visual_Type, crea en una instancia las


variables temp en un rango de decena y unidad
a partir de los datos introducidos por el usuario
y con ello las manda a rango numéricos menores
a nueve, de tal forma de son almacenadas en un
String la cual en cada dirección de memoria asoci-
ada posee un char convertidor de los números de
visualización en código ASCII. Si la el argumento
de la función es 1, lo hace para representar las ne-
gras de lo contrario lo hace con las blancas.

4. RESULTADOS
Figure 13: Bloque principal del codigo
Se obtuvo un resultado favorable al implementar
el diseño propuesto para la solución del problema
en la Psoc, para nuestro caso se montó lo nece-
sario para que la LCD funcionara correctamente en
una protoboard siguiendo los esquemáticos propor-
cionados por el profesor, y se vio que el proyecto
cumplía las reducciones de tiempo en los tiempo
requeridos de un segundo, y la visualización se re-
frescaba en el mismo tiempo, el cambio de con-
tador se hacía de la manera propuesta, utilizando
3.2.3 Concatenación y visualizacion de los pulsadores correspondientes para cada jugador que
datos permitiera que el tiempo del jugador contrario cor-
riera una vez se paraba el tiempo al oprimir el
pulsador correspondiente, y además generando un
Esta se produce mediante la función visual_Type, sonido a través de un buzzer cada vez que el tiempo
la cual toma un parámetro, con este desdice que de alguno llegaba a su fin.
tipo de concatenación generar y además permite
dar un control a los datos depositados por el La implementación del proyecto se ve en la Figura
usuario. 15:

6
haciendo mas entendible el código que se im-
plemento y el funcionamiento el proyecto par
el usuario.

• fue necesaria la conversión de los valores a


un char para poder visualizarlos en la LCD
ya que los valores que se asignaban para vi-
sualización no eran los adecuados para las
funciones de la LCD así que a la hora de vi-
sualizarlos mostraba caracteres que no cor-
respondían a los que se es eraban, esto se
soluciono realizando una función llamada Vi-
sual_type que convertía dichos valores a un
char que la LCD mostraba como se quería.
Figure 15: implementación
• En la realización de este proyecto fue primor-
dial el uso tanto de las interrupciones como
La implementación del circuito se realizó en pro- el temporizador o timer implementado para
toboard utilizando jumpers para cablear, lo cual el conteo de los tiempos de cada jugador.De
hace ver en la imagen que el circuito sea un poco igual manera el manejo adecuado de las in-
confuso, sin embargo el funcionamiento no se vio terrupciones para cada pulsador implemen-
afectado por esto. tado en el circuito fue de vital importancia,
ya que para la sincronización de las interrup-
ciones con las señales, un pequeño margen de
error hará que lo visualizado no corresponda
5. CONCLUSIONES
a la señal de entrada.

• Se puede evidenciar en las figuras 9 y 11 que


el mantener la interrupción un tiempo in-
definido con un ciclo while mientras se efec- 6. REFERENCIAS
túan las adecuaciones alas variables que se
requerían, fue de mucha ayuda ya que se sep- todo se investigó de los manuales que proporciona
araron estas dos características del provecto Psoc Creator de Cypress.

También podría gustarte