Autor Tema: Menu con Submenus?  (Leído 26730 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #15 en: 26 de Agosto de 2004, 10:42:00 »
Llevo un buen rato construyendo un menú basado en tu propósito,gaucho,y opino que sería mejor optar por hacer uso únicamente de la interrupción por RB0,que podría ir conectado a la tecla menú (para salir y entrar en el menú y no mantener al micro siempre pendiente de si se pulsó alguna tecla).La rutina de interrupción por RB0 gestionaría de una vez absolutamente todos los eventos,pulsaciones,cambios de parámetros,que se produjeran mientras estuviéramos dentro del menú...Y terminaría de ejecutarse en el momento en que saliésemos de él para que el micro pueda seguir con sus otras cositas...
Ya que para retroceder dentro del menú y tb para salir del mismo tendríamos que hacer uso de la tecla que provoca la interrupción mientras estamos dentro de la rutina que la atiende,hay que asegurarse de bajar el flag correspondiente antes de salir.Haciéndolo así resultaria viable ¿no? ¿qué opinan?
Todo esto viene a que si cada cada paso que damos en el menú viene por una interrupción,resulta un tanto complicado el salvar los datos a no ser que estos sean globales,además de hacerse más complicada la implementación.
Como lo ven?
Saludos

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Menu con Submenus?
« Respuesta #16 en: 26 de Agosto de 2004, 13:46:00 »
Yo utilizaria la interrupcion solo para detectar que tecla fue pulsada, y salgo, porqu despues estaras dentro de la interrupcion durante cuanto tiempo (sin hacer otra cosa) !!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #17 en: 26 de Agosto de 2004, 13:51:00 »
hola

Modulay creo que tu idea es muy buena. En pocas palabras en la rutina de la interrupcion RB0 se pondrian diversos Flags, los cuales controlarian el proceso del menu.
Mañana voy a cambiar el programa que hice hoy, que no funciono como yo queria por el problema del puerto B que puse en otro mensaje

@MGLSOFT
esa era mi idea, pero la idea de Modulay no esta mal, no?
Gracias por la vuestra ayuda.
Saludos desde Suiza, Pablo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #18 en: 26 de Agosto de 2004, 14:02:00 »
Pues ahora estoy dudando.Se trataba de eso,MGL,esa era la idea.Dependerá de qué otras cosas tenga que hacer el micro,aparte de gestionar el menú.Se puede usar el timer para salir del menú tras un tiempo determinado en el caso de inactividad de los pulsadores.
Se que es un método un poco tosco,pero creo que puede ahorrar bastante código

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #19 en: 26 de Agosto de 2004, 14:22:00 »
Si sigues con el lcd en el puerto B lo tendrás complicado para solucionar el tema de las tensiones en las entradas donde tienes los pulsadores.
Con respecto al metodo para gestionar el menú,demasiado tiempo estará entretenido el pic usando sólo RB0 como fuente de interrupción,sip,mejor capturar tecla y salir.
Ya tengo casi terminado mi menú.Compilado para un F84 llena el 94% de la rom,y eso que no está acabado.
Eso sí,el manejo del lcd tiene la mitad de la culpa.
De todas formas,si vas a usar un 18F252 no hay problema.
Aparte,echo mano de la eeprom interna del pic para guardar la configuración de todos los parámetros del menú,con el fin de ahorrar ram y tb para poder recuperar los datos si se quita la alimentación.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #20 en: 27 de Agosto de 2004, 12:42:00 »
He implementado un menú básico con dos submenús siguiendo la dinámica de una máquina de estados.La máquina tiene tres estados.Tan solo cuenta con dos pulsadores,ya que a más pulsadores se complican bastante las tablas y los mapas de karnaugh al incrementarse el número de variables de entrada,pero la dinámica de diseño sería igual para un mayor número,tanto de estados como de entradas.No es que parezca ser mucha la diferencia,pero se consigue optimizar algo la memoria de programa.Echenle un ojo a ver que les parece.
http://miarroba.com/foros/ver.php?foroid=256746&temaid=2250837

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Menu con Submenus?
« Respuesta #21 en: 27 de Agosto de 2004, 13:10:00 »
Miren esto que encontre, buscando informacion sobre el CP23016...
Esta muy bien implementado el menu, y ni hablar del modo de programacion !!!

http://www.kd7lmo.net/ground_atv.html
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Menu con Submenus?
« Respuesta #22 en: 28 de Agosto de 2004, 00:27:00 »
Interesante aplicación de la máquina de estados Modulay, pero como bien dices, a medida que aumenta el número de opciones, la cosa se complica sobremanera. Tanto que dudo que alguien vaya a usarlo en serio.

Marcos, me he quedado pasmado con el link que has publicado. El acabado de la maquinita es estupendo, y cuando digo acabado, me refiero al hard interior, al exterior y por supuesto, al software.
Está claro que lo ha programado alguien que sabe bastante de estilo.

Lo que también me demuestra ese ejemplo, es que la mejor forma de hacer un menú, es utilizando el dichoso SWITCH.

Por cierto, Marcos, ¿te importaría postearlo en el subforo "Usos y aplicaciones de los pic"?. Creo que está bastante bien como para tenerlo allí catalogado.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Menu con Submenus?
« Respuesta #23 en: 28 de Agosto de 2004, 06:35:00 »
Nocturno:
Lo que hay en la WEB publicado, es de libre uso, por lo tanto ni deberias consultarme para publicarlo.
Ya deberias haberlo posteado !!!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #24 en: 28 de Agosto de 2004, 07:36:00 »
hola gente

@Modulay

me interesaria ver como has calculado el codigo con las tablas y los mapas de Karnaugh. Es posible?

Gracias
Saludos desde Suiza, Pablo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #25 en: 28 de Agosto de 2004, 07:42:00 »
Buscaré la manera de hacerlo pq no tengo escaner,gaucho.
Tienes alguna noción sobre máquinas de estados?

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #26 en: 28 de Agosto de 2004, 08:23:00 »
hola modulay

he programado en labview statemachines. La maquina de estado tiene siempre un estado definido y se pasa de uno a otro, siempre y cuando se haya cumplido la funcion necesaria que permite el paso (aclarado maso).
A mi lo que mas me interesa saber la equacion que has utilizado con los mapas de Karnaugh. Y como lo has hecho.

Gracias
Saludos desde Suiza, Pablo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #27 en: 28 de Agosto de 2004, 09:28:00 »
Te explico.
La metodología que he seguido para hallar las funciones es la misma que se usa para diseñar máquinas de estados finitos con biestables,es decir con dispositivos físicos.
Partimos de la cantidad de estados que va a tener la máquina,en nuestro caso 3,por lo que podemos codificarlos con 2 bits:

MENU -> le damos la codificación 00 (q0,q1)
Submenu 1 -> 01 (q0,q1)
Submenu 2 -> 11 (q0,q1)

Bien,a partir de esto,tenemos las variables q0 y q1,que dependiendo del valor que tengan,estaremos en un estado u otro.
También tenemos las entradas,que son dos (me y av),correspondientes a cada uno de los pulsadores.
Pues ya tenemos las 4 variables que determinarán el funcionamiento de la máquina.La transición de un estado actual a un posible próximo estado no dependerá sólo de las variables de entrada,si no también de las variables q0 y q1,es decir,de cúal sea el estado actual.Esto se hace patente si imaginamos que la máquina se encuentra en el estado (q0=0,q1=0)->(MENU->00) y pulsamos la tecla "avanzar"(av=1).No ocurre nada(o mejor dicho,hace una transición al mismo estado).Pero si se da esa misma entrada en un momento en en el que la máquina se encuentra en el estado (q0=0,q1=1)->(Submenu 1->01),se producirá una transición al estado Submenu 2 (11).
Lo que hay que buscar son las funciones que modificarán los valores de las variables de estado (q0,q1,q2,q3,...qn),en función de ellas mismas y de las variables de entrada.
Lo primero sería hacer un diagrama de estados,con todos los estados,unidos entre sí por todas las posibles transiciones que se puedan dar(flechas) cada una de las cuales etiquetada con la entrada que provoca dicha transición.Después se pasa todo eso a una tabla:
Codigo:

                       MENU = 00
                   Submenu1 = 01
                   Submenu2 = 11
             ___________________________
            |ESTADO |  ENTRADAS(me,av)  |
            | q0,q1 | 00 | 01 | 11 | 10 |
            |_______|____|____|____|____|
            |       |    |    |    |    |
       MENU |  0 0  | -- | 01 | 00 | 00 |
            |_______|____|____|____|____|
            |       |    |    |    |    |
   Submenu1 |  0 1  | -- | 00 | 01 | 11 |  
            |_______|____|____|____|____|
            |       |    |    |    |    |
   Submenu2 |  1 1  | -- | 00 | 11 | 01 |
            |_______|____|____|____|____|




Las casillas de la izquierda representan el estado actual,y las demás representan el estado siguiente que se dará a partir de ese estado actual si se dan las entradas según la tabla.
A partir de aquí se construyen los mapas de karnaugh,uno para cada variable de estado,es decir,uno para q0 y otro para q1.Estos mapas se rellenan con el bit correspondiente a la función que estamos calculando,es decir,si estamos haciendo el mapa de q0,cogeremos de la tabla anterior los valores de q0:
Codigo:

           me,av
             00  01  11  10      
     q0,q1 \_________________
            |   |   |   |   |
         00 | X | 0 | 0 | 0 |
            |___|___|___|___|
            |   |   |   |   |
         01 | X | 0 | 0 | 1 |
            |___|___|___|___|
            |   |   |   |   |
         11 | X | 0 | 1 | 0 |  
            |___|___|___|___|
            |   |   |   |   |
         10 | X | X | X | X |
            |___|___|___|___|

q0 = ((!q0) & q1 & (!av)) | q0 & me & av;



Y lo mismo para q1:
Codigo:

           me,av
             00  01  11  10      
     q0,q1 \_________________
            |   |   |   |   |
         00 | X | 1 | 0 | 0 |
            |___|___|___|___|
            |   |   |   |   |
         01 | X | 0 | 1 | 1 |
            |___|___|___|___|
            |   |   |   |   |
         11 | X | 0 | 1 | 1 |  
            |___|___|___|___|
            |   |   |   |   |
         10 | X | X | X | X |
            |___|___|___|___|

q1 = ((!q1) | me | (!av)) & ((!me) | q1);


Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Menu con Submenus?
« Respuesta #28 en: 28 de Agosto de 2004, 09:49:00 »
Modulay, mis felicitaciones más sinceras, como te "curras" las respuestas, increible. Dibujando las tablas en ascii, como sigas subiendo el nivel, no se donde vamos a llegar....

Por si os interesa tengo un pdf donde explican como pasar máquinas de estados a lenguaje C, no lo he mirado aún pero tiene buena pinta, si lo queréis, no tenéis más que pedirlo....

Saludos.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #29 en: 28 de Agosto de 2004, 09:52:00 »
No se a que esperas!!!!!!