Máquina de Estados con C

Page 1

Por: Omar Gurrola

3/28/13

http://www.proprojects.wordpress.com

Máquiná de Estádos con C Finite Máchine Státe (FSM) La máquina de estados es un paradigma o arquitectura de programación que se utiliza para resolver algunos tipos de problemas, principalmente donde se interactúa software con hardware (maquinas). Existen diferentes tipos de máquinas de estados por lo que la estructura del software puede cambiar dependiendo del problema a resolver. Algunas de las ventajas que ofrecen son:      

Mejora el diseño del software. Código más fácil de entender, depurar y modificar. Flujo más organizado. Se puede cambiar el orden de la secuencia sin mucha dificultad. Se puede repetir más de una vez un evento. Se puede terminar el programa inmediatamente sin esperar al final de la secuencia.

Este tema lo conocí por las clases de programación con LabVIEW Sesión #8, lo cual me llevo a investigar más y tratar de utilizarlo en el desarrollo de firmware para microcontroladores utilizando el lenguaje C. Al principio parecía complicado pero ya viendo los ejemplos me di cuenta que lo único que se puede complicar es el análisis del problema y el desarrollo del diagrama de estados, pero una vez teniendo bien plasmado eso implementarlo es muy sencillo. Uno de los documentos que más me gusto por la forma tan profesional y sencilla de explicar este tema fue de http://www.i-micro.com/pdf/articulos/Maquina_edos.pdf gracias a ellos puede entenderlo fácilmente. Para resolver un problema con una máquina de estados debemos: 1. Lo primero es analizar el problema a resolver para extraer los estados por los que puede pasar el dispositivo, al igual que las entradas y salidas. 2. Diseño del algoritmo (pseudocódigo, diagrama de flujo, tabla de estados, diagrama de estados, etc.). 3. Implementar el algoritmo en software. 4. Simulación, pruebas y correcciones pertinentes. Para utilizar una de las máquinas de estados en C se puede realizar de la siguiente manera: 1. 2. 3. 4. 5. 6.

Realizar una definición typedef de un enum para definir cada estado. Una variable del tipo enum del paso uno para definir el estado siguiente. Crear un ciclo while infinito para ejecutar cada estado. Se debe definir el estado inicial de la máquina. Un switch para ejecutar el estado siguiente estado. Dentro de cada case el código a ejecutar del caso y la evaluación para determinar el siguiente caso.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.