From 1af82d7ed61ed5faba246ecf44d1b7fcfcc61abb Mon Sep 17 00:00:00 2001 From: josealberto4444 Date: Sun, 4 Mar 2018 00:06:58 +0100 Subject: [PATCH] =?UTF-8?q?Escribe=20primer=20d=C3=ADa=20de=20trabajo=20y?= =?UTF-8?q?=20arregla=20fallos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bd1899a..f05316a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Lector de cartuchos de Game Boy -En este proyecto, un amigo y yo intentaremos construir un conector para lectura (y escritura también, si son compatibles) de cartuchos de Game Boy. +En este proyecto, [un amigo][amigo] y yo intentaremos construir un conector para lectura (y escritura también, si son compatibles) de cartuchos de Game Boy. Para ello, nos basamos en [el proyecto de un par de estudiantes de Polonia][proyecto-principal] llamados Kraku y Chroost. Ahí se puede encontrar todo lo necesario para construir el conector (nosotros hemos construido la versión USB): @@ -9,6 +9,8 @@ Para ello, nos basamos en [el proyecto de un par de estudiantes de Polonia][proy - [Controladores][] necesarios para programar el chip. - [Programa][] para usar el conector. + + ## Licencia Tal y como se puede ver en el [manual][], los únicos términos de uso que se especifican son los siguientes: @@ -19,21 +21,25 @@ Tal y como se puede ver en el [manual][], los únicos términos de uso que se es con lo cual, nosotros nos vamos a construir nuestro propio conector y dejaremos aquí el diseño para que cualquiera se pueda construir el suyo, desaconsejando la venta y la compra de cualquier producto derivado de este. + + ## Material necesario Este es el material que nosotros hemos utilizado: - Material básico de electrónica: - - Un multímetro. - - Una placa de pruebas para poder montar circuitos rápidamente. + - Multímetro. + - Placa de pruebas para poder montar circuitos rápidamente. + - Pulsera anti electricidad estática, para manipular los chips. - Piezas importantes: - Lector de cartuchos: compré una Game Boy (clásica, de las antiguas del todo porque era la recomendada para sacarle el lector) de segunda mano como rota (lo único que tenía era la conexión de las pilas oxidada, pero la limpié y funcionaba). - Destornillador específico para poder abrir la consola, de esos de estrella de 3 puntas. - Chip ATMEGA8515-16PU. - - Chip FT232BL. + - Chip FT232BL (usamos este en lugar del FT232BM porque son iguales, salvo que el BL es la versión sin plomo). + - Programado de chips. Nosotros lo pedimos prestado, porque es algo que solo se usa una vez. - Piezas genéricas: @@ -45,8 +51,12 @@ Este es el material que nosotros hemos utilizado: - Condensadores de 27 pF, 33 nF, 100 nF y 100 µF. - Bobina de 10 µH. + + ## Historia y evolución del proyecto + + ### Comienzo y estancamiento Inicialmente, empecé este proyecto porque allá por 2016 decidí volver a jugar a mis juegos de Game Boy (los que seguían funcionando, porque algunos se oxidaron extrañamente) y quería alguna manera de poder hacer copias de seguridad de las partidas guardadas. Por ejemplo, me daba mucha rabia perder mis Pokémon cada vez que dejaba de jugar por algún tiempo, porque había cartuchos a los que se les gastaba la pila demasiado rápido. @@ -61,31 +71,80 @@ Entonces, como afortunadamente llevaba (y sigo llevando) años sin tocar Windows Desafortunadamente, la gente a la que le pregunté me desanimó y me dijo que me olvidara, que era una placa bastante complicada y que comprara el conector ya hecho, pero ya me había gastado mucho dinero en todos los materiales (no tenía nada de electrónica y tuve que comprarme todo lo básico: multímetro, soldador, placa de pruebas, etc.) así que lo descarté. Me puse a buscar por mi cuenta, pero sin haber tenido experiencia ninguna en este tipo de proyectos, no encontré nada viable, así que acabé abandonándolo. -### Retoma + + +### Reanudación Tiempo después, concretamente en diciembre de 2017, salió un curso en línea para aprender sobre Arduino desde cero, lo cual me llamaba mucho la atención, así que le pregunté a un amigo que sabía que tenía interés por si él también se quería apuntar, y nos apuntamos juntos. Ya que estábamos, le dije que si íbamos calentando intentando meterle mano al proyecto abandonado de Game Boy, y me dijo que sí. Gracias a la grandísima y maravillosa comunidad libre que hay en Granada, en todo ese tiempo yo había escuchado un montón de cosas sobre hardware libre y cacharreo, sobre todo porque se formó [un grupo local sobre ello][alhambra-makers], y había conocido el nombre de programas relacionados con el tema (como KiCad), así que por lo menos teníamos algo para empezar, aunque había que aprender un montón de cosas. Estando yo solo, me daba pereza, pero en compañía las cosas se llevan mucho mejor. + + +### Primer día de trabajo: 2018-02-18 + +Una vez comprado todo el material, teníamos básicamente tres cosas que podíamos ponernos a hacer: + +- Programar el chip +- Diseñar la placa de circuito +- Desoldar el lector de cartuchos de la Game Boy antigua + +El primer día nos dedicamos a programar el chip. Para ello se usa un programador, es decir, un aparato que se le conecta al chip y sirve para meterle información a este. Esto solo hay que hacerlo una vez. A partir de ahí, el chip se queda programado y ya siempre hará bien su trabajo. + +Conectamos el chip al programador ayudándonos de los diagramas que hay en [esta página][diagramas-ISP] y la [hoja de especificaciones de nuestro chip][espec-ATMEGA]. Determinamos cuál era la patilla de tierra y conectamos el resto de patillas [de forma adecuada][conexiones-patillas] (las patillas que usamos fueron VCC, MISO, MOSI, RESET y GROUND), con cuidado de manipular el chip con la pulsera anti electricidad estática. + +Usamos avrdude para programar el chip: + + avrdude -c -p -U :r|w|v:[:formato]: + + es el programador usado para programar el chip (en nuestro caso usbtiny) + + es el chip que se programa (en nuestro caso m8515) + + - puede ser flash, eeprom, hfuse (high fuse), lfuse (low fuse), o efuse (extended fuse) (en nuestro caso flash, fuse para después) + r|w|v - puede ser r (leer), w (escribir), v (verificar) (en nuestro caso w) + - el archivo de entrada (lectura o verificación) o archivo de salida (lectura) + [:formato] - opcional, el formato del archivo. Se puede dejar sin poner para escritura, pero para lectura se debe usar i para los Hex de Intel (el formato más utilizado) + +El comando que hemos usado ha sido: + + avrdude -p usbtiny -p m8515 -U flash:w:gbcf-w-2.1-usb.hex + +donde el archivo `gbcf-w-2.1-usb.hex` es uno de los [controladores][]. + +Después hemos grabado los bytes fusible. Para determinar los valores los hemos obtenido de [aquí][fusible-1] y [aquí][fusible-2] y al compararlo con la [hoja de especificaciones][espec-ATMEGA] y el [manual][], todo coincidía (1F para el bajo y 9C para el alto). Los comandos que hemos usado han sido: + +avrdude -p usbtiny -p m8515 -U lfuse:w:0x1F:m +avrdude -p usbtiny -p m8515 -U lhfuse:w:0x9C:m + +Estos bytes se encargan de que el chip conecte o desconecte ciertos elementos, y uno de los que se desconecta es el oscilador interno del chip, así que si no se graban los dos valores a la vez, + +avrdude -p usbtin -p m8515 -U lfuse:w:0x1F:m -U lhfuse:w:0x9C:m + +puede que el chip se apague (apareciendo un error de "firma desconocida" cuando se intenta hacer cualquier cosa con `avrdude`) y haya que conectarlo al oscilador de cristal para que se vuelva a encender y seguir programándolo (la parte que habría que montar es la que va en el [circuito final][circuito] desde las patas del chip a tierra pasando por el oscilador de cristal, es decir, el cristal y los dos condensadores de 27 pF). Una vez conectado al oscilador, se podrá seguir programando el chip sin problema. + + + ## Otros enlaces quizá de interés -Mientras buscaba información sobre este proyecto, me topé con ciertas páginas que quizá también sean útiles: +Otros enlaces que puede que sirvan para el proyecto o relacionados con él: +- [Hoja de especificaciones del chip FT232BL][espec-FT232BL] y [página de la compañía con otra información][info-FT232BL]. - [Otros proyectos del estilo][otros-proyectos]. - [Una modificación de este proyecto][proyecto-modificado] que, de hecho, se puede comprar ya terminada (lo cual incumple la licencia con la que se publicó el proyecto, así que está completamente desaconsejado por nuestra parte). - [Reescritura de los controladores del chip en C][controladores-en-C]. -## Enlaces espejo - -Hay copias de casi todos los enlaces mencionados en [archive.org][], por si dejaran de estar disponibles. +## Enlaces espejo +Hay copias de casi todos los enlaces mencionados en [archive.org][], por si dejaran de estar disponibles. +[amigo]: https://gitlab.com/Alpezmar [proyecto-principal]: http://www.reinerziegler.de/readplus.htm#GB_Flasher [manual]: http://www.reinerziegler.de/GB-Flasher/gbcflsh_manual.pdf [circuito]: http://www.reinerziegler.de/GB-Flasher/gbcflsh_schem_pcb.zip @@ -97,3 +156,10 @@ Hay copias de casi todos los enlaces mencionados en [archive.org][], por si deja [proyecto-modificado]: https://github.com/melka/gbcartflasher [controladores-en-C]: https://github.com/Tauwasser/GBCartFlasher [alhambra-makers]: https://t.me/AlhambraMakersGroup +[espec-ATMEGA]: http://ww1.microchip.com/downloads/en/devicedoc/doc2512.pdf +[espec-FT232BL]: http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232BL_BQ.pdf +[info-FT232BL]: http://www.ftdichip.com/Products/ICs/FT232B.html +[diagramas-ISP]: https://www.evilmadscientist.com/2007/using-avr-microcontrollers-minimalist-target-boards/ +[conexiones-patillas]: http://www.ladyada.net/learn/avr/programming.html +[fusible-1]: http://www.ladyada.net/learn/avr/fuses.html +[fusible-2]: http://www.engbedded.com/fusecalc/ -- 2.45.2