miércoles, 29 de junio de 2011

Adaptador de control de SNES a USB (La burra vuelve al trigo).

Como parte de los experimentos de vacaciones, he estado poniendo a prueba el adaptador de controles de SNES a USB, para comprobar algunas teorías que venían rondando mi cabeza. Afortunadamente las pruebas han arrojado dos resultados muy buenos.

La primera prueba consistió en utilizar el ATTINY2313-10PU, en lugar de la versión de 20 MHz. Al principio me pareció que hacer esta prueba era una total pérdida de tiempo, considerando que la versión de 20 MHz es bastante fácil de conseguir en la Ciudad de México, sin embargo algunos amigos me han notificado que en muchos lugares la única versión disponible es la de 10 MHz. Después de hacer algunas pruebas bastante extensas (conseguir las 96 estrellas de Super Mario World), he llegado a la conclusión que el microcontrolador ATTINY2313-10PU sirve perfectamente para hacer el adaptador. Considero que hacer la prueba fue satisfactorio, debido a que en internet hay opiniones divididas acerca de utilizar un AVR con overclock. Por un lado hay quien afirma se puede hacer un overclock aun más extremo (35 MHz) sin notar anomalías en el funcionamiento de los dispositivos. Por otro lado está quien afirma que aplicar overclock a un AVR corrompe la EEPROM, el microcontrolador funciona erráticamente y por último el chip se quema. En mis pruebas, el microcontrolador no incrementó su temperatura, no sufrió de corrupción ni en la EEPROM ni en la FLASH y en ningún momento presentó falla. Cabe aclarar que el voltaje de alimentación fue de 5V, lo cual permite al microcontrolador operar a su máxima velocidad. Tiene sentido que el AVR se haya comportado bien, debido a que tanto la versión de 20 MHz como la de 10MHz tienen el mismo núcleo.

La otra prueba, fue incrementar la frecuencia de operación del propio control de SNES. La señal de reloj de entrada que suministra el SNES al control es de 83.33kHz. El pulso que sirve para habilitar el cerrojo (latch) tiene un periodo de 24us. Las pruebas que he realizado me han permitido elevar la frecuencia de operación del control a 500kHz. Para elevar aun más la frecuencia será necesario implementar macros personalizadas, debido a que las macros contenidas en la biblioteca delay.h solo permiten operar con microsegundos (incrementar la velocidad implicaría trabajar con nanosegundos). A 500kHz el control funciona perfectamente.

El control de NES contiene un chip MC14021, el control de SNES contiene un chip personalizado conocido como v520b, que es la versión "doble" del MC14021. Según la hoja de especificaciones del CD4021 (equivalente al MC14021), la frecuencia máxima de operación del circuito, cuando es alimentado con 5V es de 3.5MHz, siendo su frecuencia típica 2.5MHz. Al parecer es posible llevar al control a una frecuencia de operación de 2MHz considerando un margen de seguridad bastante amplio, por lo que esa será la meta en las pruebas subsecuentes.

¡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...