Re: Problema con inicialización de ps2
Antes de encender la placa y cargar el programa, enchufen el mouse y tengan sw 8 en 0
Joaquín:
mirá las respuestas al mensaje anterior de este foro titulado "Problema con mouse_init", a ver si va por ahí.
julio
El problema persiste, el programa se sigue quedando en el loop mencionado. A pesar de que esta el comando djnz, utilizando el "stepi" e "info register" notamos que B nunca decrece de 35 (la constante cargada). Ya probamos con los switches en 0 y moviendo el mouse pero no se notó cambio. ¿Que mas podríamos probar?
Joaquín, pero no pueden hacer la prueba con el ratón y ejecutar el programa paso a paso con stepi.
Cuando el ratón manda una palabra por la conexión ps2 lo hace a su velocidad. Si ustedes ejecutan paso a paso con stepi el programa se va a perder todos los cambios en las señales que suceden mientras el programa está detenido en el debugger.
Si les hace falta pueden poner un breakpoint después que termina mouse_init o entre palabras completas.
Si les hiciera falta poner un breakpoint en medio de una palabra para saber que está pasando pueden hacerlo, pero no pueden continuar la ejecución a partir de ahí. Pueden examinar los registros para ver qué sucedió hasta ahí y después tienen que iniciar la ejecución del programa desde cero, volviendo a inicializar el raton.
julio
Ya probamos haciendo break después de mouse init, pero como se quedaba en loop infinito probamos haciendo stepi dentro de la función de inicializacion. Haciendo esto nos dimos cuenta que el error es que en una de las subrutinas hay un comando "djnz" en el cual, por alguna razón, el registro b no baja. Eso ocurre en la función wait_loop_10 que se encuentra en la linea 253.
Joaquín:
el comando stepi del debugger a veces falla cuando estamos ejecutando en la placa DE0. Es un bug conocido desde hace tiempo que no se ha podido resolver.
Pero además no deben usar stepi cuando están haciendo las pruebas con el ratón.
Por favor confirmá los siguiente:
- completaron los valores correctos de direcciones en el archivo plantilla_lab2.s como se pide en la sección a.2)
- en todos los casos están inicializando los puertos como se pide en el recuadro al final de la sección a.1)
- cuando prueban en forma manual comentan la linea en que invocan a mouse_init. De lo contrario mouse_init quedaría eternamente esperando por la respuesta del ratón.
- cuando prueban con el ratón se aseguran antes de invocar a mouse_init que el multiplexor esté seleccionado correctamente con SW[8] y que el ratón esté correctamente conectado. De lo contrario nuevamente quedaría colgada mouse_init porque nadie le responde.
Saludos,
julio
Verificamos que hicimos lo que dijiste, pero si bien funciona con el switch 8 en 1, cuando conectamos el mouse y cambiamos el switch 8 a 0, se queda en loop infinito y no entra a nuestra subrutina.
Existe la posibilidad de poder realizar una consulta vía zoom mañana luego de la clase de práctico?
Muchas gracias.
Sí, al final de la clase