Problema get_PS2

Problema get_PS2

de Héctor Eduardo Garrido Alvarez -
Número de respuestas: 5

Buenas, estoy teniendo problemas a la hora de probar ésta subrutina en el teclado, a la hora apretar una tecla lo que se ve en la placa no corresponde con lo que se debería de ver, el problema en si no viene de lo que hace ya subrutina ya que probandolo a mano multiples veces da bien el resultado, probando a hacerlo funcionar sin breakpoint  se ve que al mantener una letra apretada el valor que se muestra en los displays va variando en vez de mantenerse fijo por lo que intuyo que el problema está en que están faltando tomar datos, pero no encuentro forma de lograr que todos los puntos sean tomados.
Estaría precisando un consejo o alguna sugerencia de algo teórico que puede ser que no esté teniendo en cuenta o que esté obviando.

Saludos

Héctor

En respuesta a Héctor Eduardo Garrido Alvarez

Re: Problema get_PS2

de Julio Perez -
Pareciera como que estás leyendo un bit de más o un bit de menos. Eso haría que sucesivas palabras van quedando desplazadas, y lo que estás viendo es en realidad una parte de una palabra y una parte de la siguiente.
Van algunas ideas:
- Asegurate que se borre el ff que detecta los flancos en el reloj ps2 de antes de empezar a recibir, por si hubiera una apretada de tecla previa.
- Podés poner un breakpoint en el programa de prueba enseguida después de retornar get_ps2 y mirar el contenido del acumulador. Ahí podés ver fácil si lo que se recibe coincide con la palabra correcta rotada un bit.
- Si eso está bien, podés poner momentáneamente en el programa de prueba dos invocaciones consecutivas de get_ps2, y poner el breakpoint después de la segunda. Con eso podés detectar si la primera invocación deja todo pronto para ir a esperar una nueva palabra.

julio
En respuesta a Julio Perez

Re: Problema get_PS2

de Héctor Eduardo Garrido Alvarez -
Buenas, para asegurarme de que se borrara el FF antes de recibir un dato me aseguré de que al principio del get se borrara el FF y con eso se arregló el tema de que varíe lo mostrado en el display al dejar apretada la tecla, el problema principal que estoy viendo es que hay como un problema de tiempos en la subrutina que no logro ver en que cosa podría estar, si pruebo la subrutina usando los botones paso a paso se ve que se llega a el valor esperado pero al utilizar el teclado da la impresión de que falta leer bits, como ejemplo en el caso de apretar 9 en el display aparece 46 en lugar de 7D y el digito que manda al soltar la tecla da 70.
No se si hay alguna variable respecto a la diferencia de tiempos entre los períodos de ambos relojes que hay que manejar explicitamente en el codigo o algo que no logro ver.
Disculpa las molestias.
Saludos
Héctor.
En respuesta a Héctor Eduardo Garrido Alvarez

Re: Problema get_PS2

de Héctor Eduardo Garrido Alvarez -
Solucionado, los scan codes que aparecían en el pdf están mal, no son los mismos que aparecen en el apartado de Dispositivos y protocolo PS2.
En respuesta a Héctor Eduardo Garrido Alvarez

Re: Problema get_PS2

de Julio Perez -
mmm. ojo!
Los scan codes que están en la letra de la práctica están bien.
El lío es que hay dos lugares en el teclado donde aparecen los números:
- en la línea entre las letras y las teclas F1, F2, etc.
- y en el teclado numérico que está a la derecha.
La letra de la práctica se refiere a "los códigos correspondientes a las teclas de los dígitos decimales en
el teclado numérico", es decir al segundo caso.

Igual, de lo que relatas arriba sigue sin cerrar esto: "...y el digito que manda al soltar la tecla da 70". Cuando apretás y soltás la tecla "9" que está arriba de la "I" y la "O" deberías ver la secuencia 46 F0 46.

julio
En respuesta a Julio Perez

Re: Problema get_PS2

de Héctor Eduardo Garrido Alvarez -
Ahh ok con razón yo apretaba los que estaban entre los F1 y las letras y me daba distinto,ta ya vi.
Luego respecto a lo otro fue un error en como había pensado el codigo, luego al analizar lo que tuve al hacerlo paso a paso con los botones lo solucioné.
Gracias por la ayuda.