Esta práctica consiste en el diseño e implementación de un cronómetro digital con los siguientes requisitos mínimos:
Deberá poder llevar una medida de tiempo (cuenta)
con una precisión de centésimas de segundo.
Deberá poder ser controlado mediante un teclado y un display de cristal
líquido (LCD) incorporados al sistema. También deberá poder ser controlado externamente
mediante un terminal (HyperTerminal, PuTTY, ...) conectado a un interfaz serie RS-232. La respuesta obtenida mediante ambos sistemas
de control deberá ser semejante.
La respuesta por medio del puerto serie deberá cumplir los siguientes requisitos:
prompt: El cronómetro deberá enviar un prompt para indicar al usuario que está en espera de algún comando. P.e.: 'dmc >'.
eco: El cronómetro hará eco de todo lo que se reciba por el puerto serie.
comandos: Cada comando estará compuesto por al menos dos caracteres que permitan su fácil identificación. P.e.: 'act', 'rst'.
En caso necesario, tendrá algún parámetro: 'lap 1', 'br 96'. Como única excepción, se podrá usar el retorno de carro <cr> (ENTER) para
que el cronómetro responda con el tiempo actual, con su estado (parado, bloqueado...) o con cualquier información que pueda resultar útil.
respuesta: Cada comando deberá tener una respuesta legible y útil para cualquier usuario. P.e: 'detenido', 'bloqueado', 'error'.
Deberán estar disponibles los siguientes comandos:
Comandos:
Activación: Para poder usar la cuenta, ésta debe ser activada. Mientras no esté activada no debe responder a los comandos
Start, Stop, Lapso y Reset.
Desactivación.
Start: Comienza o reanuda la medida.
Stop: Detiene la medida.
Lapso: Toma y almacena un mínimo de tres tiempos parciales.
Reset: Inicializa la medida y los tiempos parciales (los pone a cero).
Bloqueo: Bloquea el control de la cuenta por medio del teclado/LCD o del
puerto serie. Este comando deberá permitir a un usuario del cronómetro que otros usuarios no interfieran en las medidas que esté realizando.
Configuración del puerto serie: Permite configurar los parámetros de la transmisión por el puerto serie (velocidad, paridad, control de flujo, etc.).
Restricciones:
La gestión del módulo de cristal líquido LCD forma parte del desarrollo de la práctica, para lo cual se deberán programar las
funciones necesarias para su configuración y uso. No se podrá usar ninguna librería ya escrita. En caso de ser necesario, podrá usarse la librería Wire
Asi mismo, la gestión del interfaz RS-232 también forma parte de la práctica, por lo que se deberán programar las funciones
necesarias para su configuración (de acuerdo con las instrucciones del usuario) y para la transmisión y recepción de los datos.
Tampoco en este caso se podrán utilizar librerías ya escritas, en particular las funciones Serial() y Serial1() del sistema Arduino.
La medida del tiempo deberá gestionarse imperativamente mediante interrupciones generadas por temporizadores del microcontrolador.
La función millis() no podrá ser utilizada en ningun caso.
Material disponible
Módulo LCD (Todos estos módulos están controlados por un hd44780u).