sábado, 22 de octubre de 2011

No soy yo... ¡Eres tú!

En algunos post anteriores, debrayé un poco sobre el protocolo de comunicación del control de Playstation y algunas de sus características, así como la evidente lentitud de dicho protocolo.

En estos días estuve experimentando un poco con otro tipo de controles, que usan un protocolo de comunicación muy simple (inclusive más simple que el utilizado por el control de SNES) en el banco de pruebas, haciendo adaptadores USB de dichos controles. En esta ocasión las víctimas de los experimentos fueron un stick de seis botones para Sega Genesis y un control de Sega Saturn.

Ambos controles basan su funcionamiento en un multiplexor, en el cual el estado de la terminal de selección determina cuáles botones serán puestos en las líneas de datos. El control de Genesis tiene una sola línea de selección y seis líneas de datos, por lo que la lectura de los estados de todos los botones es muy rápida. El control de Saturn funciona de forma similar, sólo que en éste caso se tienen dos líneas de selección y cuatro líneas de datos.

En la computadora, ambos controles funcionaron bien. Sin embargo, al tratar de probar los controles en su plataforma destino ahí fue donde todo valió... ¡Un momento! ¡Eso ya lo he escrito antes X_x!

Aquí ya todo comenzó a verse muy sospechoso. Las desconexiones que sufría la interfaz con el control de Playstation las atribuí a las demoras en la entrega de datos del control, sin embargo, cuando el problema persistió en otros controles que son mucho más rápidos fue cuando comprendí que el problema residía en otra parte. Hice unas pruebas de lectura de puerto... y ahí salió el culpable.

La interfaz para el MapleBus hecha con un ATTINY25 funcionó muy bien, pues aunque en ocasiones había errores en la recepción de bits, unas rutinas de reconstrucción de datos muy básicas permitían leer de forma consistente el bus. Para conectar al Maplebus los controles de Playstation, de Genesis y de Saturn es necesario utilizar un microcontrolador con más pines que los ocho que tiene el ATTINY25. Mi elección fue el ATTINY2313.

Para mantener la sincronía con el MapleBus, el ATTINY25 funciona a una frecuencia de 16MHz. La señal de reloj es generada por el oscilador interno (que funciona a 1MHz) y un PLL (Phase-Locked Loop) que escala esa frecuencia hasta 64MHz. El microcontrolador divide internamente la frecuencia del PLL entre cuatro, lo que da como resultado la señal de reloj de 16MHz. Esta señal de reloj es muy inestable y varía mucho su valor.

El ATTINY2313 no cuenta con un PLL, por lo que la señal de reloj es provista por un cristal de cuarzo de 16MHz. El cristal genera una señal de reloj muy estable.

Al portar el programa del ATTINY25 al ATTINY2313, uno esperaría que ambos circuitos funcionaran de forma similar, o inclusive, que el ATTINY2313 fuese capaz de mantener la sincronía con el bus de una forma más efectiva que el ATTINY25, ya que su señal de reloj es mucho más estable. Sin embargo, el resultado fue completamente opuesto, el ATTINY2313 entregaba demasiados errores de lectura.

Con unas modificaciones en el firmware, pude conectar de forma satisfactoria el control de Saturn al MapleBus, aunque el adaptador provoca tres errores relativamente graves. El primero es que al ser conectado, el adaptador no siempre funciona, así que es necesario intentar la conexión un par de veces. El segundo problema es que al iniciar algún juego, la interfaz se desconecta. La tercera es que los botones C y Z no son reconocidos dentro de las opciones de los juegos, aunque misteriosamente ambos botones funcionan correctamente al ser pulsados. Una vez que la interfaz es reconocida por el juego, no sufre desconexiones.

Resta hacer pruebas con la interfaz modificada y el control de Playstation, sin embargo he llegado a la conclusión que se necesita de otro tipo de circuitos para realizar una interfaz que responda de forma más confiable y que permita añadir soporte para periféricos. El microcontrolador es una herramienta muy útil, aunque en la interfaz con el MapleBus es necesario utilizar muchos trucos para establecer la comunicación. Debido a la arquitectura del MapleBus, al parecer es más conveniente realizar la interfaz con un CPLD (Complex Programmable Logic Device), que sea capaz de responder a los cambios de nivel en la señal y mantenga la sincronía en todo momento con la interfaz.

martes, 4 de octubre de 2011

La vida con Linux.

En la asignatura de Diseño Digital, estamos experimentando con unos dispositivos llamados PLD (Programmable Logic Device). En particular, estamos trabajando con la GAL22V10, que es un dispositivo un tanto obsoleto, pero que sirve excepcionalmente bien para implementar diseños y prototipos combinacionales y secuenciales sencillos. Un PLD es un circuito integrado que en su interior contiene arreglos de compuertas, flipflops y multiplexores que pueden ser "programados" para que se comporten de una forma específica. Prácticamente, permite fabricar nuestros propios circuitos integrados.

Uno de los paquetes de software de síntesis y simulación que se emplea en la asignatura es el Quartus II de Altera. Mi profesor tiene en su página web algunos recursos enfocados a la clase, pero como la URL de su página es difícil de memorizar, para acceder a la página nos recomendó que buscásemos su nombre en Google y el primer resultado apuntaría a la página.

Después de obtener los recursos que me interesaban de la página del profesor, decidí buscarme a mí mismo en Google, para ver "mis pasos". Entre lo que encontré fue un reply que hice en el foro de ubuntu.es en respuesta a un topic en el cual un usuario (quizás al día de hoy, exusuario) de Ubuntu despotricaba contra el sistema operativo, haciendo evidentes una serie de defectos y errores en su computadora derivados del uso de Ubuntu.

Mi reply no fue ni popular ni impopular, simplemente fue ignorada y se perdió entre todas las respuestas que llenaron el topic. Sin embargo, me gustaría rescatarla y ponerla en el blog.


Es una cuestión de actitud...


Realmente me sentí identificado con el post.

Recuedo hace varios ayeres, cuando traté de iniciarme en el mundo Linux con un LiveCD que gentilmente un compañero de la escuela me regaló. Traté de probar el SO que contenía (justamente Ubuntu), pues en la cubierta (era de los CDs que te llegan por correo) decía que podía probarlo sin compromiso... lo puse, vi la splash screen de Ubuntu y... ¡no paso nada!!!

En mi PC todo estaba bien configurado (BIOS, hardware, etc). Resulto que mi tarjeta de video ATI y el video integrado Intel (que no hay forma de desactivar ni por BIOS, ni jumper, ni soldadura...) causaban un conflicto y Ubuntu (ni cualquier Linux o Free BSD) no podía mostrar el entorno gráfico.

Paso el tiempo, cambie de PC y volví a darme la oportunidad de probar Linux, ahora en forma de Kubuntu. En esa ocasión no tuve problemas con el entorno gráfico, la instalación fue satisfactoria. Trabajé dos felices días con él, hasta que el tercer día configuré el Kopete para charlar con mis amigos, apagué la PC y al volverla encender... dejó de mostrar el entorno gráfico.

Hasta acá, creo que lo más sensato era abandonar la idea de usar Linux y hacerle caso a la calcomanía que orgullosamente ostenta mi PC "Designed for Windows XP" n_n. Pero, la verdad... creo que mi estado natural es la locura, así que volví a hacer la prueba con Linux... ahora con Mint. Ahora ya llevo bastante tiempo en Linux Mint, todo funciona como me conviene (claro, documentación de por medio) y si bien he tenido algunos problemas (como todo el mundo), el resolverlos ha sido gratificante (he aprendido mucho) y enriquecedor (gracias al apoyo de usuarios de los foros como éste).

La computadora debe trabajar para el usuario, no al revés, estoy de acuerdo con este planteamiento. Sin embargo, usar la computadora también requiere de compromiso, pues ella responderá de la forma en que el usuario la ha programado. La única crítica, es que uno no puede afirmar que tenga conocimientos de informática superiores a los de la mayoría de la gente... eso es pura soberbia.

Linux es perfectible, avanza y crece gracias a los usuarios. Se debe tener una actitud positiva y emprendedora, sobre todo cuando aun hay tanto por hacer.


Cuando empecé a utilizar Linux de forma cotidiana (como regla autoimpuesta), me entró un poco la fiebre "evangelizadora" y traté de mostrarles lo bueno que era el sistema a mis compañeros de la escuela más cercanos. Sin embargo, al primer "detalle", todos decidieron abandonar el barco de Ubuntu. Eso no me defraudó ni me frustró, me causo pena (en este caso, pena ajena).

A partir de ese momento decidí no hacer difusión por cuenta propia de Linux, no por egoísta ni por frustración. Comprendí que cuando la gente quiere algo, lo busca y lucha por ello hasta que lo consigue. Pero cuando la gente obtiene cosas que no busca, muchas veces las descarta o desprecia. Cuando eso ocurre, se desperdician oportunidades... y cuando se desperdician oportunidades se cosecha el fracaso.

Actitud positiva y emprendedora abre puertas. Actitud pesimista y retrógrada... quizás no cierre puertas, pero evita que se abran.

¡Feliz 2021! El retorno del debraye pandémico (Edición "Rompemuros").

Hola, ¿Cómo han estado? Espero que estén con bien, con buena salud y con muchas ganas de aburrirse una vez más con una ronda de debrayes. Es...