ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PRÁCTICA DE LABORATORIO #2 DE SISTEMAS EMBEBIDOS


Enviado por   •  1 de Mayo de 2017  •  Prácticas o problemas  •  1.393 Palabras (6 Páginas)  •  407 Visitas

Página 1 de 6

Universidad Distrital Francisco José de Caldas

Facultad de Ingeniería

Proyecto Curricular de Ingeniería Electrónica

PRÁCTICA DE LABORATORIO #2 DE

SISTEMAS EMBEBIDOS

" Interrupciones y Bloque LCD "

John Jairo Redondo Montero        20121005087

Martin Calderón Cortés                20122005085

Bogotá, D.C., octubre de 2016

  1. Objetivo:

Desarrollar un juego que consista en controlar un carro el cual estará sometido a una serie de obstáculos que se irán presentado de forma aleatoria a medida que este avance. De igual forma, a medida que transcurra el tiempo, el nivel de dificultad se irá incrementando, es decir, la velocidad con la que el carro se desplaza aumentara. El jugador cuenta con tres oportunidades antes de que el juego finalice, lo que quiere decir que tiene tres vidas antes de que termine la partida. Tanto el cambio de nivel como el número de vidas que el usuario dispone se han de visualizar en el tablero.

  1. Marco Teórico:

  • El controlador de interrupciones proporciona un mecanismo para la respuesta de eventos hardware. Una interrupción detiene la ejecución del programa principal y salta a ejecutar un nuevo código específico para un evento en concreto. Las interrupciones están disponibles para los bloques digitales PSoC, para las columnas de los bloques analógicos PSoC, tensión de alimentación, modo sleep, señal de reloj y para los pines GPIO. PSoC dispone de registros que proporcionan un mecanismo para que el usuario pueda borrar todas las interrupciones nuevas o en espera, o borrarlas de manera individual. El mecanismo para activar las interrupciones individuales se realiza vía software durante el desarrollo de la aplicación.
  • El user module LCD es una librería de rutinas que nos permite escribir cadenas de caracteres (strings) y formatos de números para una pantalla de cristal líquido de 2 o 4 líneas. El dibujo de barras horizontales o verticales están soportados, usando los gráficos de caracteres de estos módulos LCD.
  1. Desarrollo y Análisis de Resultados:

[pic 1]

Imagen 1. Esquema de diseño del circuito propuesto.

Como se observa en la imagen 1 se dispuso de 3 interruptores, de los cuales 2 controlan la posición del carro (entradas sw1 y sw2), el cual es controlado por un módulo ISR de interrupción. Por otro lado, el tercer interruptor se utilizó para iniciar el juego (entrada start), cuando este esté en la pantalla de inicio, este no es leído por medio de interrupción.

El código de C se trato de organizar de una manera modular, por medio de funciones con tareas específicas, las cuales son:

Main();

Menú();

Asignar();

Juego();

De igual manera para que el juego tuviera una esencia de aleatoriedad, se utilizó la librería propia del lenguaje c llamada stdlib.h con la cual se pueden generar números de cierto modo aleatorios con la función rand();

Seguidamente se puede observar en la imagen 2 la configuración de las interrupciones con las cuales se controla la posición del carro, y la creación de unas variables de nivel general como lo son level, vidas velocidad, las cuales son utilizadas en una o varias funciones, las variables en array pos1[], pos2[], pos3[] y pos4[], poseen la información de los obstáculos, los cuales son [posición fila, posición columna, enable]. El enable es básicamente un dato que tiene como función determinar si la variable en cuestión está siendo utilizada en la pantalla o no.

[pic 2]

Imagen 2. Parte del código desarrollado donde se definen las funciones, variables y configuración de las interrupciones

Como se puede observar en la imagen 3, la función main(), de lo único que se encarga es de inicializar la LCD, iniciar las interrupciones, y seguir la secuencia menú(), juego(), lo cual asegura que terminado un juego se puede iniciar otro cuando el usuario lo desee.

[pic 3]

Imagen 3. Función main() del programa.

La función menú(), básicamente muestra el mensaje “Press start” y se queda en un ciclo de única finalización cuando se oprime la tecla start. Cuando esta es oprimida se hace un efecto de inicialización con el carro y posteriormente se muestra la pantalla de juego, impresa ya en la función juego(). Esto se puede evidenciar en la imagen 4.

...

Descargar como (para miembros actualizados)  txt (8.6 Kb)   pdf (395 Kb)   docx (195.8 Kb)  
Leer 5 páginas más »
Disponible sólo en Clubensayos.com