Autor Tema: Maquina de estados!!  (Leído 2166 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Maquina de estados!!
« en: 01 de Octubre de 2008, 17:46:17 »
Hola gente como va todo???.

Miren, necesito hacer 3 rutinas que se activan cada una por medio de un boton pero el problema es que cada rutina es un loop infinito,es decir se debe repetir continuamente pero a la vez tiene que poder ser cancelada y darme la posibilidad de  mediante un evento y permitirme elegir otra de las dos si se quiere.

Me han dicho que se puede hacer con una maquina de estados pero hay que usar el timer para este fin y no tengo claro el tema.¿Alguien podria darme un ejemplo para entenderlo mejor o que tecnica se puede utilizar para resolver esto?.


Muchas gracias.

Que sigan bien!





« Última modificación: 03 de Octubre de 2008, 14:03:14 por kilopondio »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Maquina de estados!!
« Respuesta #1 en: 01 de Octubre de 2008, 18:59:51 »
Hola.

Lo puedes hacer por interrupciones en el puerto B, o incluso con una sola interrupcion (boton de cancelacion) que te conecte al menu de seleccion.

Algo mas: Que compilador usas? que micro?

Saludos
El papel lo aguanta todo

Desconectado El_Guitre

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1046
Re: Maquina de estados!!
« Respuesta #2 en: 01 de Octubre de 2008, 23:50:10 »
Como dice MLO_ podrías hacer uso de la interrupción que se genera ante un cambio en los pines RB4 a RB7 de un PIC y conectar a este puerto los pulsadores de seleccion de cada rutina. Entonces al pulsar se generaría la interrupción, en esta deberías controlar cual de los pulsadores fue el que genero la interrupción y seleccionar la rutina que se ejecutara hasta una nueva interrupcion.

De todas formas no estaría nada mal que nos cuentes que microcontrolador estas usando (si es que estas usando uno) y en que lenguaje pensas programarlo para poder ayudarte mejor. Saludos. Y si no lo has hecho todavía te recomiendo te des una vuelta por las reglas del foro.  8)

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Maquina de estados!!
« Respuesta #3 en: 02 de Octubre de 2008, 05:55:50 »
Para realizar una máquina de estados no es necesario utilizar ningún timer, ni interrupciones ni nada que se lo parezca. Básicamente hay que definir los estados que queremos con la directiva #define <estado> <nº del estado>, seguidamente definimos una variable donde guardaremos el estado, como pro ejemplo vEstado, se inicializa la variable con el estado inicial y se cierra en el main en un bucle infinito que: 1º compruebe los pulsadores, 2º si se ha pulsado alguno se cambia en la variable estado el nuevo estado dependiendo del botón pulsado, 3º Se comprueba el valor de la variable estado y se llama a la función asociada con el estado. Con eso estaría implementada la máquina de estados.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Maquina de estados!!
« Respuesta #4 en: 02 de Octubre de 2008, 16:26:46 »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything