Chapter 3 – Methodology
3.5 Ethnography
3.5.5 Field notes
Para la representación del algoritmo se utiliza la técnica de diagrama de flujo, dividiendo la aplicación en siete diagramas, subrutina principal, subrutina llamada cuando se detecta que se presiona la tecla PARAR, subrutina llamada cuando se detecta que se presiona la tecla BORRAR DATOS, subrutina de atención a la interrupción Externa 1, la cual se produce cuando se presiona la tecla INICIO, subrutina de atención a la interrupción Externa 2, la cual se produce cuando se presiona la tecla VER DATOS, subrutina de atención a la interrupción del Temporizador 0, y subrutina de atención a la interrupción del Temporizador 1. Para facilitar el diseño del programa, se establecieron cuatro posibles estados en los que se puede encontrar el sistema. El primer estado es el de bienvenida, donde se muestra algún mensaje en el display, y el sistema esta esperando
alguna instrucción. En el segundo estado el sistema está preparado para comenzar el conteo, y se muestra el conteo estático con todos los valores en cero en el display. En el tercer estado el sistema esta contando, por lo que se muestra el conteo cambiando constantemente en el display. En el cuarto estado se muestran los datos almacenados en memoria. En la figura 2.1 se muestra cómo el sistema cambia de estado cuando se presiona alguna tecla.
Figura 2.1 Diagrama de estados del sistema.
Las principales subrutinas que conforman el software se describen a continuación: • Subrutina principal. Aquí se encuentra el lazo principal del programa donde
se chequea mediante un barrido simple, si se presionan las teclas PARAR o BORRAR DATOS, y se llama a la subrutina correspondiente. El diagrama de flujo se muestra en la figura 2.2.
• Subrutina de atención a la tecla PARAR. En esta subrutina se inicializa y arranca el Temporizador 1 con el fin de evitar el efecto rebote y generar una onda cuadrada la cual producirá un pitido. Además se detiene el
Temporizador 0 para detener el conteo. El diagrama de flujo se muestra en la figura 2.3.
Figura 2.2 Subrutina principal.
• Subrutina de atención a la tecla BORRAR DATOS. El trabajo con el Temporizador 1 tiene el mismo objetivo de la subrutina anterior. Luego de borrar los datos, se evita que cuando el sistema esté preparado para el conteo, o en el conteo se salga de dicho estado. El diagrama de flujo se muestra en la figura 2.4.
Figura 2.4 Subrutina de atención a la tecla BORRAR DATOS.
• Subrutina de atención a la interrupción Externa 1. El trabajo con el Temporizador 1 tiene el mismo objetivo de las subrutinas anteriores. Luego según en el estado en que se encuentre el sistema, se realizarán un conjunto de acciones. En el caso de que el sistema se encuentre en el estado 2, se inicializa el conteo. En el caso en que el sistema se encuentre en el estado 3, se guarda el dato correspondiente al conteo actual si existe capacidad en memoria. Mientras que si el sistema se encuentra en alguno
de los estados 1 o 4, se prepara el sistema para comenzar el conteo. El diagrama de flujo se muestra en la figura 2.5.
Figura 2.5 Subrutina de atención a la interrupción Externa 1.
• Subrutina de atención a la interrupción Externa 2. El trabajo con el Temporizador 1 tiene el mismo objetivo de las subrutinas anteriores. Luego según en el estado en que se encuentre el sistema, se realizarán un conjunto de acciones. Si el sistema se encuentra en alguno de los estados 1 o 2, se comienza a mostrar los datos almacenados en caso de que existan. Mientras que si el sistema se encuentra en el estado 4, se muestra el próximo dato almacenado, y en caso de que se esté mostrando el último
dato, de nuevo se muestra el primer dato. El diagrama de flujo se muestra en la figura 2.6.
Figura 2.6 Subrutina de atención a la interrupción Externa 2.
• Subrutina de atención a la interrupción del Temporizador 0. Esta subrutina tiene como función incrementar los registros de conteo así como visualizar dicho conteo, lo cual se va a realizar una vez de cada siete que se entre en esta subrutina. Esto se hace por dos razones, la primera, es que un cambio rápido en la visualización en el display hace que las décimas y centésimas
de segundo no sean visibles, y la segunda, que esta interrupción tiene una alta prioridad por lo cual interrumpirá a cualquier subrutina que se esté ejecutando, esto ocurrirá periódicamente cada 10 ms, y producto de la visualización en el display, en el peor de los casos esta subrutina puede demorar cerca de 9.8 ms, dejando muy poco tiempo para otras subrutinas que se estén ejecutando, como puede ser la atención a la interrupción del Temporizador 1. El diagrama de flujo se muestra en la figura 2.7.
• Subrutina de atención a la interrupción del Temporizador 1. Producto de que la onda generada tiene como frecuencia 1kHz, en esta subrutina de va a entrar cada 500 µs. Aquí se utilizan dos contadores anidados, el primero define el tiempo que estará generándose la onda cuadrada el cual va a ser 500 µs · 20, debido a que 20 es el número máximo a que puede llegar el CONTADOR_1, mientras que el segundo contador define el tiempo en que se estará evitando el efecto de rebote, el cual va a ser 500 µs · 20 · 15, debido a que 15 es el número máximo a que puede llegar el CONTADOR_2. Por tanto la onda cuadrada va a estar activa solo durante 10 ms, mientras que el efecto de rebote se estará evitando durante 150 ms. El diagrama de flujo se muestra en la figura 2.8.