Finite State Machines

Páginas: 5 (1157 palabras) Publicado: 28 de abril de 2012
INGENIERIA EN MICROCONTROLADORES
Maquinas de Estado

Introducción

INGENIERIA

EN

MICROCONTROLADORES

MAQUINA DE ESTADOS

www.i-micro.com

 Ingeniería en Microcontroladores Teléfono 044 55 11 29 55 05 E-mail: cursos@i-micro.com elp@i-micro.com

1

INGENIERIA

EN

MICROCONTROLADORES

Maquinas de Estado
Las máquinas de estado son una parte integral de la programaciónde software. Las máquinas de estado hacen al código más eficiente, más fácil de depurar y ayudan a organizar el flujo del programa.

U

na Una Máquina de Estado Finita (FSM = Finite State Machine) está

basada en la idea de que hay un número finito de estados para un sistema determinado. Por ejemplo, cuando una aplicación enciende o apaga un LED, existen dos estados; un estado es cuando elLED está encendido y el otro cuando está apagado.

Las máquinas de estado requieren una Variable de Estado (State Variable SV). La variable de estado es un apuntador que mantiene un control del estado en que se encuentra el microcontrolador y dirige el flujo del programa al modulo de software correspondiente. La variable de estado puede modificarse en los módulos (o estados) de software por simisma o por una función externa. La primera ventaja de utilizar las máquinas de estado, es que promueve buenas técnicas de diseño de firmware. Cuando se comience a implementar una aplicación, piense sobre que estados son necesarios para que funcione la aplicación. Haga una lista de todas las piezas, o estados, de una aplicación y después explore como se relacionan entre sí. Esto ayudará a prevenir sedesarrollen bucles en el código. Esta forma de pensar también lleva al desarrollo de una herramienta de ingeniería muy útil – el diagrama de flujo. Las máquinas de estado tienen una característica muy importante. Siempre regresan a un punto en el código, en el cual se canaliza el flujo del programa por la variable de estado, al correspondiente modulo de software. Esto provee varias ventajas:Primero, esta característica hace simple el llamado de tareas repetitivas. Como por ejemplo, el refrescar el perro guardián (watchdog timer) de un microcontrolador, revisar la veces que se presiona un botón de entrada o comunicarse con una computadora que requiere una comunicación periódica, estos son ejemplos de tareas repetitivas.

2

INGENIERIA

EN

MICROCONTROLADORES

Una alternativa aluso de máquinas de estado es usar el código de bucles o loops infinitos. Para que el código de bucles maneje tareas repetitivas, las funciones que manejan estas tareas deben estar distribuidas a través del código en cada uno de los bucles. Esto no solo es altamente ineficiente sino que también es confuso para entenderlo. La figura 1 muestra un diagrama de bloques, el cual ejemplifica cómo luciríael código ejemplo si una máquina de estado no fuera utilizado. Comparado con la figura 2, que muestra un diagrama de bloque de un código basado en la máquina de estado, queda claro que usar una máquina de estado disminuye la longitud del código y la posibilidad de perder el llamado de una tarea repetitiva.

Figura 1: Código sin implementar la Maquina de Estados

3

INGENIERIA

ENMICROCONTROLADORES

El hecho de que el firmware basado en la máquina de estado siempre regrese al mismo punto en el código, hace al firmware más fácil de depurar. Cuando se encuentra una falla (bug), se debe establecer un punto de ruptura en el punto de inicio. Entonces, pase a través del programa estado por estado hasta encontrar la falla.

Figura 2: Código implementando la Maquina de EstadosUn ejemplo de una falla, sería si la variable de estado (SV) es modificada incorrectamente en uno de los estados. Si esto sucede, un estado incorrecto será llamado la próxima vez que el flujo del programa regrese al punto de inicio. De cualquier manera, al estar monitoreando la variable de estado , será más fácil ver cuando un cambio no intencional se haga a la SV y en cual estado la SV fue...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • machin
  • Machin
  • machin
  • machines
  • Machina
  • Machino
  • Machine
  • Machine

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS