You are on page 1of 3

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
Programación de máquinas de estado.

Diseño con microcontroladores basado en diagramas de estado.

Definiciones.
Un diagrama de estados puede emplearse para describir la conducta de un programa que
cambia entre estados, conducido por eventos externos y realizando acciones al efectuar
transiciones de un estado a otro.

Un estado es una condición del sistema que persiste durante un tiempo significativo de
tiempo.
Un evento es un mensaje hacia la máquina de estados producido por una entrada externa.
Una transición es un cambio de un estado a otro, disparada generalmente por un evento.
Una acción es una tarea que puede tomar lugar durante una transición, cuando se entra o
sale de un estado.
Una interrupción es un evento que puede disparar una transición.

En un sistema embebido se modela la computación como una secuencia de transiciones


entre un conjunto de estados. En cada estado, la llegada de eventos (o entradas) pueden
cambiar el estado y posiblemente generar una acción (o salida).

Procesador de eventos conducido por tabla.

Se requiere generar un sistema procesador de eventos que transforme los eventos que llegan
en acciones de salida; es decir, un sistema que reaccione frente a los eventos, que pueden
generarse en forma concurrente o paralela.

Sólo si los eventos llegan en el orden correcto la máquina funcionará en forma adecuada;
sin embargo existen numerosas situaciones en que se producen errores, ya sea por errores
del usuario o por excepciones debidas a mal funcionamiento o por operaciones con
resultados que implican la cancelación de la operación. La especificación requiere controlar
un gran número de eventos independientes, esta situación es modelada adecuadamente por
un diagrama de estados que provee una visión de alto nivel del diseño.

La complejidad del control suele ser la mayor dificultad en el diseño de aplicaciones, y por
esto cobran importancia los métodos de diseño y las herramientas que se utilicen.

El control externo manipula la interacción con el ambiente y el control interno requiere


procesar sin errores un gran número de posibles combinaciones de eventos. El error más
común es sobre-simplificar la ocurrencia de una o más combinaciones de eventos que
pueden ocurrir cuando la aplicación se está ejecutando en el ambiente real.

El uso principal del diagrama de estados es capturar el flujo de ejecución de las acciones, la
parte manipulación de datos puede tratarse aparte.

Prof. Leopoldo Silva Bijit. 13-04-2004 1


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Programación de máquinas de estado.

Existen algoritmos para traducir un diagrama de estados en un programa C dirigido por una
tabla o diagrama de estados.

La estructura del programa debe secuenciado por una tabla. Todas las transiciones deben
aparecer como entradas de la tabla. Para que el código resulte determinístico, en tiempo de
ejecución, debe poder determinarse cuál es la próxima transición que será ejecutada.

Esto puede lograrse con la serialización de los eventos o bien condicionando algunas
transiciones (guards) que aseguren que solamente es posible realizar una determinada
transición desde cualquier estado.

El determinismo evita mecanismos complejos de itineración en tiempo de ejecución y hace


posible controlar y determinar el tiempo de respuesta en todos los estados.

Esquema de la arquitectura.

Los eventos físicos deben ser convertidos a eventos de software.


Ejemplos de eventos físicos son la opresión de un botón, la llegada de un carácter, etc.
Estas situaciones (que pueden generar interrupciones) deben ser detectadas en el
microcontrolador y ser convertidas a una estructura que se inserte en una cola de prioridad
o estructura similar.

Esto resuelve la recepción simultánea de eventos, ya que un microcontrolador detectará


siempre un evento antes que otro. El procesador de eventos manipula uno por vez, y lo
procesará de acuerdo al estado en que se encuentre, generando la realización de ninguna,
una o varias acciones. Cada acción se puede traducir por un llamado a una determinada
función o driver de dispositivo. El procesador de eventos genera una lista (cola) de
acciones.

Recepción Procesador Procesador


de de Acciones.
eventos eventos.
(drivers) (drivers)
Cola de eventos (Tabla estados) Cola de acciones

Si se dispone del procesador de eventos, la labor del programador puede concentrarse en el


diseño de los drivers capturadores de eventos y los drivers que generan acciones. Estas
partes pueden reutilizarse en variados diseños.

Prof. Leopoldo Silva Bijit. 13-04-2004 2


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Programación de máquinas de estado.

Esquema del software.

/* Inicio del sistema, de las variables y de las colas */


Inicio();

/* Do forever */
while (1)
{
while (queden eventos pendientes)
{
if (no se puede conocer cual es el próximo evento) ProceseErrorEvento();

while (encuentre acciones asociadas al evento) genere acción;

if (no puede conocer cual es el próximo estado) ProceseErrorEstado();

Extrae próximo evento;


}
espere evento;
}

Prof. Leopoldo Silva Bijit. 13-04-2004 3

You might also like