Integración con temporizador_mouse_template.s

Integración con temporizador_mouse_template.s

de Roberto Carlos Barrera Torres -
Número de respuestas: 9

Estimados, buenas tardes:

Según entendimos de la letra, luego de integrar correctamente la plantilla que nos dieron con las subrutinas hechas por nosotros el temporizador debería funcionar enseguida, cambiando entre los tres estados definidos originalmente mediante comandos desde el mouse o cuando la cuenta llega a cero.

De ser así, estamos enfrentando inconvenientes al cargar en RAM ya que al iniciar el programa se muestra 24:00 y enseguida 00:00, y al mover el mouse (sin apretar botones) el reloj a veces se pone en 24:00, pero la mayoría del tiempo pone cualquier número de seg o cen, incluso mucho mayores a 24:00, y continúa el countdown. Los botones izq. y der. tampoco parecen estar haciendo lo que se supone. Los LED prenden y apagan sin seguir una lógica aparente.

Lo raro es que las pruebas de todas las subrutinas anteriores a la g funcionan correctamente por separado, al menos eso creemos.

Seguiremos revisando por si fuera un tema de inicialización de variables que falte, o algo particular de la integración que esté fallando y no nos demos cuenta.

Si se les ocurre por dónde podría estar el problema, les agradezco la ayuda.

Saludos,

Rob

En respuesta a Roberto Carlos Barrera Torres

Re: Integración con temporizador_mouse_template.s

de Manuel Urquiola -

Buenas!

Con lo que describís no se me viene a la mente una falla evidente, así que simplemente te sugiero un par de cosas a revisar que podrían dar lugar a comportamientos inesperados:

- Tener en cuenta que el sistema brindado usa variables como "pause" que probablemente ustedes tuviesen nombradas de forma distinta, chequeen correctamente el funcionamiento de la máquina de estados y matcheen los nombres de variables de forma que queden integradas a sus subrutinas.

- Observen que hay un estado en el que se asume que despreloj preserva el registro A, en caso de que no lo haga también podemos llegar a ver un comportamiento extraño en los LEDS.

Espero que ayude a encontrar el problema,

Manuel

En respuesta a Manuel Urquiola

Re: Integración con temporizador_mouse_template.s

de Roberto Carlos Barrera Torres -

Gracias, Manuel. Esas cosas ya las habíamos contemplado. Seguimos investigando para que nos funcione.

Aprovecho y consulto si es posible hacer cambios en el código que nos brindaron en el template del temporizador, o si debe quedar tal cual fue entregado.

Por ejemplo, en la pág.6 dice "Finalmente en el estado fin se debe pausar la cuenta y encender 4 LEDs (LEDs[3..0])". Según el template, en el estado s_counting cuando viene un timeout están quedando todos los LEDs prendidos (se le carga 0xFF). Entonces creemos habría que cargarle 0x0F. ¿Podemos corregir eso?

Saludos,

Rob

En respuesta a Roberto Carlos Barrera Torres

Re: Integración con temporizador_mouse_template.s

de Agustin Noel Coitinho Ramirez -

Buenas Roberto,

tuvimos un problema bastante similar al que mencionas y ya lo pudimos resolver. A uds ya les salio? Sino les comento como lo solucionamos.

Saludos

En respuesta a Agustin Noel Coitinho Ramirez

Re: Integración con temporizador_mouse_template.s

de Roberto Carlos Barrera Torres -
¡Buenas, Agustín! De a poco vamos encontrando y corrigiendo cosas, pero todavía sigue sin funcionar 100 % como se espera.

Cualquier pique que nos puedas brindar será más que bienvenido. ¡Gracias! :)

En respuesta a Roberto Carlos Barrera Torres

Re: Integración con temporizador_mouse_template.s

de Agustin Noel Coitinho Ramirez -
Hicimos modificaciones en despreloj y decreloj para poder integrarlo con la rutina. Cambiamos los (IX) e (IX+1) por time_c y time_s dependiendo el caso, con eso solucionamos el problema de que nos mostrara cualquier cosa en los display al mover el mouse. Fijate si te soluciona, nosotros con ese cambio no tuvimos mas problemas
En respuesta a Agustin Noel Coitinho Ramirez

Re: Integración con temporizador_mouse_template.s

de Roberto Carlos Barrera Torres -

Muchas gracias, Agustín. Anoche mismo probé la modificación planteada y creo que algo similar estábamos haciendo ya cargando en IX el valor de time_s antes de las instrucciones que usan (IX+d), así que no notamos mejora. :(


Detalle un poco más lo que nos está pasando ahora:

1. Por ej., en estado INICIAL, al presionar el botón izquierdo (transición 0 a 1) la cuenta regresiva comienza, y al levantar el mismo botón (transición 1 a 0) se pausa la cuenta. En otros momentos el botón izquierdo funciona según lo esperado. Algo similar nos pasa con el botón derecho al entrar al modo EDIT.

Lo anterior nos hace pensar que en el byte (IX+5) no estamos guardando correctamente las transiciones 0 a 1 de los botones como se pide en la letra. Estamos haciendo algo así:

                 (CPL byte1_anterior_desde_mem) AND (byte1_nuevo_desde_mouse) --> (IX+5), con IX = time_s

Hicimos a mano algunos ejemplos y lo anterior funcionaría bien.


2. También nos pasa a veces que al entrar en modo EDIT si movemos el mouse SIN apretar botones, se nos cambia de estado a FIN, supongo que porque la cuenta arranca en cero y de alguna forma lo tomo como timeout. Lo extraño es que en nuestro código desde EDIT nunca podría ir a FIN.

Al deshabilitar el timer durante EDIT mejora un poco. Aunque nos da la impresión de que el paquete guardado en memoria quedara de alguna forma desfasado y cuando se chequea el estado de los botones hace cualquiera porque el byte1 tendría valores incorrectos en dichos bits.


En respuesta a Roberto Carlos Barrera Torres

Re: Integración con temporizador_mouse_template.s

de Manuel Urquiola -

Buenas!

Por lo que me comentas, la integración con la máquina de 3 estados lograron hacerla funcionar correctamente, ahora hay problemas en los estados agregados. Es correcto eso?

En caso de no haber resuelto el caso de tres estados, les recomendaría que trabajen sobre seguro de forma constructiva.
Una vez que tengan eso funcionando y probado, ir agregando pequeños cambios y testeando. Una opción sería tomar la versión inicial, e ir incorporando de a poco sus cambios actuales, un estado a la vez, agregando los comandos de a uno. De esta manera será más fácil localizar un posible error.

Una de las cosas que me comentas, sobre que vas a FIN desde EDIT, podría relacionarse a haber confundido una letra en las etiquetas que son muy similares en cada estado, me imagino que lo habrán chequeado, pero es un código de varias líneas, por lo que puede pasarse por alto muy fácilmente.


Respecto a lo que hacen para generar el byte donde se guardar los clicks, parece estar correcto así como lo hacen. 

Saludos,

Manuel