SD2IEC punga sin PCB paso a paso en castellano

por Uctumi

El SD2IEC "Punga" tiene una nueva versión, esta vez con un diseño simplificado con un armado mucho más sencillo sin perder funcionalidad.



Qué ventajas tiene este proyecto por sobre el anterior?

  • No requiere de un PCB (placa de circuito impreso) o sea que te ahorrás tener que mandarlo a hacer o tener comprar todos los elementos para hacerlo y ensuciarte.
  • Usamos un módulo micro SD arduino fácilmente  disponible que reemplaza el zócalo SD y varios componentes, simplificando enormemente el armado.
  • Modulo Micro SD Arduino reguladoSe puede armar con componentes reciclados, reduciendo costos y facilitando el acceso.

Este proyecto está basado en la versión SD2IEC de Lars Pontoppidan, es compatible con los firmware actuales y futuros para esta versión y posee casi toda la funcionalidad de los SD2IEC que se compran por ebay a más de 40 dólares.
No se requieren demasiados conocimientos de electrónica ni demasiadas herramientas, la mayoría son cosas comunes que tenemos en casa.
Para simplificarlo aún más el proyecto va a estar divido en dos, componentes obligatorios que se requieren para que el SD2IEC tenga una funcionalidad mínima, o sea lea y grabe archivos de una tarjeta SD y se comunique con la commodore. Y Componentes opcionales recomendados que son botoneras que nos sirven para cambiar de carpeta y leds indicadores de actividad.
IMPORTANTE: No me hago responsable de daños que pudieran ocurrir a tus equipos por realizar este proyecto siguiendo esta guía, hacelo bajo tu propio riesgo.

LISTA DE COMPONENTES Y MATERIALES

OBLIGATORIOS

1x ATMEGA1284P-PU (o ATMEGA644A-PU si no consiguen el 1284, también ATMEGA644P-20PU)
1x socket DIP 40 
1x 100nF capacitor cerámico 
1x 8MHz cristal
2x 22pf o 33pF capacitor cerámico 
1x conector DIN 6 macho
1x conector de borde 6 pines paso 3.96mm
1x Módulo MICRO SD Arduino REGULADO <-importante
Algunos tramos de filamento de cobre (se puede sacar de un cable de electricidad común)
1x tramo de cable plano o cualquier cable con 6 conductores o 2 con 3 conductores (se puede reciclar un cable viejo de disquetera o VGA, etc)
1x Rectángulo de acetato, cartulina, radiografía vieja, papel, plancha de plástico, etc.
GABINETE o CAJITA (reciclado, armado o comprado) en el que montar el dispositivo.

OPCIONALES

 1x LED verde
1x LED rojo 
3x pulsador 
2x 560 ohm resistencia
1x 10000 (10k) ohm resistencia
Algunos tramos de cable delgado (se compra o se puede desarmar algún cable viejo de impresora o VGA, etc.)
1x Rectángulo de acetato, cartulina, radiografía vieja, papel, plancha de plástico, etc.
Tramos de Termocontraíble o cinta aisladora

HERRAMIENTAS: soldador 30-40W, esponja para limpiar soldador, estaño común para soldadura electrónica, cutter, pinza, alicate, punzón o aguja.


LA PLACA

A pesar de no tener un PCB, este proyecto si tiene un esquema y vamos a disponer los componentes arriba de un "pseudo PCB", que nos sirve para organizar un poco el armado y evitar fallas. El esquema es el siguiente:

Esquema de armado, se puede descargar en PDF para imprimir y tenerlo cómodo desde aquí.

Este esquema nos explica cómo conectar todo lo que necesitamos para que funcione el SD2IEC. Lo que vamos a hacer es descargar la versión en PDF a tamaño real desde aquí y esto lo vamos a imprimir sin agrandar ni escalar (cuidado) y usarla como referencia, lo ponemos debajo de nuestro acetato, cartón, cartulina (o lo que hayamos conseguido) y con una aguja o punzón hacemos los agujeros que están marcados en verde en el esquema. Si no conseguimos acetato se puede usar el mismo papel impreso como PCB. No lo he probado pero yo creo que igual sirve, sobretodo si es un papel de bastante gramaje o cartulina, en ese caso ni hace falta un punzón, los mismo componentes se pueden pinchar en el papel.


Una vez que ya tengamos la placa perforada vamos a ponerle los componentes, como ven no son demasiados, sobretodo si se prescinde de los leds y botones.

Luego soldamos por detrás según lo que marca el esquema, usamos las patitas que ya traen los componentes electrónicos para conectarlos entre sí y al zócalo, como si fueran las pistas de un PCB imaginario.

En el esquema van a ver que hay un cable que hace como un zigzag, este es un hilo de cobre que lleva el negativo del voltaje y hay que "enhebrarlo" en algunos puntos, por tramos va por encima y en otros va por debajo de la placa, por cada lugar que pasa cumple una función. Conecta con los pines 20,16 y 11 de un lado del Atmega y el pin 10 del otro lado (ver esquema). También le da el voltaje negativo a los botones opcionales.

En la imagen de abajo van a ver que hay un cable más grueso, este cable lleva el voltaje positivo, no es indispensable que el alambre de cobre usado sea así de grueso, pero lo puse así por seguridad para que conduzca mejor la corriente y estabilice mecánicamente el conjunto. Este cable lo saqué de un viejo cable de electricidad grueso de los de antes. Pero vos podés usar el que consigas, en realidad con que sea del mismo grosor que el negativo tiene que funcionar. Como ven mi prolijidad no es la gran cosa, sin embargo les garantizo que si todo se conecta correctamente el dispositivo funciona. No es mala idea poner pegamento en las uniones para estabilizarlas y aislarlas, pero es preferible hacer eso una vez que ya probamos el SD2IEC y sabemos que funciona, cuando ya lo estamos por poner en su gabinete.

Así es como va quedando el armado, las resistencias que ven ahí son para si se conecta la botonera y los leds.

CONECTANDO EL MODULO MICRO SD ARDUINO

Para conectar el módulo Micro SD arduino vamos a reciclar un cable plano de disquetera como el que ven en la imagen, sólo necesitamos 6 conductores, así que el resto lo podemos dejar para usarlo en otra oportunidad.

Una vez cortados y pelados los cables quedaría algo así, los soldamos a la placa según el esquema del inicio del tutorial

Y luego conectamos al módulo micro SD arduino regulado de acuerdo al esquema y a las indicaciones que trae el mismo módulo arduino. (En la parte de atrás del PCB están las etiquetas de qué función cumple cada pin)


Luego conectamos el conector de borde para la alimentación como lo indica el esquema, el negativo es el último pin y el positivo el anteúltimo.
Esos van a conectarse en donde está el signo + y - del esquema en la placa.

 

Luego lo que hacemos es soldar el conector DIN 6 para el puerto SERIE de nuestra commodore 64/128/etc. según el esquema. En el mismo está desde la vista del conector en la Commodore. Conectamos los pines CLK, DATA y ATN que son los 17, 18 y 19 del lado derecho del Atmega. (se que así no se cuentan los pines, en realidad esos pines serían los 24,23 y 22, pero me pareció más sencillo contar 20 y 20 por lado, así que guíense por el esquema del inicio del tutorial).
El negativo no es tan indispensable soldarlo, si no lo sueldan va a funcionar igual, yo lo sueldo para reforzar la conexión entre la commodore y el dispositivo.

PROGRAMAR EL INTEGRADO ATMEGA

Entonces nos queda programar el circuito integrado ATMEGA, o lo pueden conseguir programado, o pedirle que alguien se los programe, o seguir mi guía para programarlo.
Para programar el IC lo ideal es tener un "programador" que es un circuito ya preparado en el que insertamos el chip y lo conectamos por usb a una PC. Pero como éste es el SD2IEC del tercer mundo y no pensamos comprar nada, hay una alternativa económica que es programarlo por el antiguo puerto de impresora que tenían las computadoras hasta hace algunos años (LPT).

Lo que necesitamos es:

- Una PC con puerto de impresora (normalmente en las pentium III o más antiguas, yo tengo una máquina de 2007 que lo tiene, para que te des una idea) - Un cable paralelo para puerto de impresora de 25 pines (tal vez tengas tirado el cable con el que conectabas tu impresora en los 90's, ese sirve)

Lo que hay que hacer es conectar los pines del chip Atmega a los pines del cable paralelo según este diagrama:

grafico programmer

El cable tiene que medir menos de 30 cm, porque el largo puede generar problemas. No es necesario ponerle resistencias como sugieren otros diagramas. Si estás usando un cable reciclado chequeá con el tester pin por pin a ver qué cable corresponde a cuál pin. Usualmente los pines 18 a 25 están todos conectados al mismo cable y son GND (masa). Prestar atención que hay unos pines que van puenteados entre sí, con juntar esos cables y ponerle cinta aisladora para que no jodan, basta. El conector paralelo por lo general tiene escritos los números de pin muy chiquitito, guiarse por eso. Sólo 5 pines van conectados al Atmega: MOSI, MISO, SCK, RESET, GND.  Prestar atención a la muesca que tiene el chip para identificar bien los pines del Atmega. Lo que hice fue soldar por la parte de atrás de PCB los cables correspondientes con mucho cuidado y pensando que después lo iba a tener que desoldar.
Me quedó así, parece un quilombo pero son sólo 5 cables soldados y funca: cable lpt conectores
cable lpt1

A tener en cuenta: Para programar mediante puerto paralelo el SD2IEC tiene que estar alimentado y armado (no es necesaria la tarjeta SD). La alimentación tiene que ser de 5V para no dañar el puerto paralelo. Lo más seguro es tomar la alimentación directamente desde el puerto USB, PS/2 o Joystick de la PC en la que estás haciendo la programación. El programa con el que vamos a programar es AVRDUDE, funciona en Linux y en Windows XP 32 bits y los Windows viejos 98/NT, etc. Yo lo hice en windows XP, así que voy a dar esas instrucciones solamente. Si no tenés una PC con Windows XP instalado podés bootear el CD Hiren's boot y usar la opción de booteo "Mini Windows XP". Yo hice eso y anduvo. Lo primero que hacemos es preparar la PC en la que vamos a programar. Todavía no enchufamos nada del SD2IEC. Tenemos que descargar e instalar el WINAVR (link), que por defecto se instala en el disco C:\ en una carpeta WINAVR seguida de la fecha de versión. En esa carpeta encontramos el subdirectorio BIN, ahí copiá la imagen que vamos a flashear descargada de http://www.sd2iec.de del archivo sd2iec-current-binaries.zip del cual vas a utilizar la versión LARSP para el chip correspondiente 1284 o 644. También existe un firmware con la versión 10.0.3 y un "bootloader" que permite cargar versiones nuevas de firmware a medida que van saliendo, esto es solo para el Atmega1284 (si lo armaste con el 644 ese firmware especial no funciona)  se puede descargar desde acá 
Luego apagá la PC y preferentemente desenchufala.  Una vez que ya tenemos el SD2IEC conectado, alimentado y con el cable paralelo conectado a la PC, enchufala y encendela.

Entrá en Windows XP, allí abrí una consola con ejecutar/run > CMD

runcommand

Ingresá a disco C:\

C: CD\WINAVR (presionar tab para completar el nombre y enter) CD BIN  Allí tipeá la instrucción INSTALL_GIVEIO giveio
Esto lo que hace es instalar un controlador que necesita para acceder al puerto de impresora. Tendría que dar un mensaje de OK como en la imagen.

Luego ingresá este comando reemplazando "sd2iec.bin" por el nombre de la imagen que estamos instalando (varía con la versión)

PARA ATMEGA1284 avrdude -p m1284p -P lpt1 -c pony-stk200 -U flash:w:sd2iec.bin -U lfuse:w:0xEF:m -U hfuse:w:0x99:m -U efuse:w:0xFF:m

PARA ATMEGA644 avrdude -p m644p -P lpt1 -c pony-stk200 -U flash:w:sd2iec.bin -U lfuse:w:0xEF:m -U hfuse:w:0x99:m -U efuse:w:0xFF:m

comando avrdude
Entonces tendrían que aparecer unos textos indicando el progreso, aproximadamente en 49 segundos se tiene que completar la grabación en el chip Atmega1284p y la verificación más o menos en el mismo tiempo. Esta línea la podés copiar en un archivo .bat (por ejemplo programar.bat) y meterla en la carpeta para no perder tiempo tipeando todo, directamente ejecutás PROGRAMAR.BAT Listo, si el proceso es exitoso termina con un mensaje de que está todo OK, entonces apagamos la PC y desconectamos todo.

 

MINI TUTORIAL DE PROGRAMACION UTILIZANDO UN PROGRAMADOR USB (Aporte de Cristian Hlavanda)

Este mini tutorial o explicativo surge debido a que muchos querian saber como se hace el proceso via usb. Para realizar esto necesitamos lo siguiente :

  • Programador usb tl866
  • Chip atmega 1284p o 644a o 644p
  • El software para instalar en el chip que lo podemos bajar de la pagina sd2iec.de ( sd2iec-current-binaries.zip)
  • Computadora

 

Este tutorial es muy sencillo de seguir y en la parte final incluye algunas fotos del proceso. Cualquier duda o inconveniente me pueden consultar. En primer paso debemos conectar el programador usb a la computadora. El mismo posee un software llamado "minipro" que debemos previamente haber instalado en la computadora y comprobar que el programador sea detectado. Al ser usb esto se realiza de manera automatica.

Descomprimimos el archivo para instalar en el chip teniendo en cuenta que solo usaremos el el que dice "lars-m1284p.bin" o "lars-m644p.bin" y ahora nos disponemos a abrir el software del programador. Colocamos el chip en el zocalo del programador teniendo en cuenta que la muesca del mismo coincida con la del chip.

Paso fundamental : en la pestaña select ic elegimos nuestro chip "atmel atmega1284p o 644p" esto es fundamental ya que sino se programara de manera erronea.

En la pestaña open file seleccionamos y abrimos nuestro archivo "lars" que mencionamos previamente y veremos que los casilleros de memoria se completan visualizando el contenido del archivo.

En la parte de "buff select" al costado derecho seleccionamos config y vamos a dejar los fuses programados como se ve en la foto. Esto es fundamental ya que los fuses hacen que todo funcione de manera correcta, si no los configuramos, el chip quedara mal programado.

Por ultimo mas a la pestania con la P color roja y si todo esta bien se programara en unos segundos.


Cerramos el soft, quitamos el chip y a disfrutar de nuestro sd2iec!
Gracias por el espacio y quizas por el simple y burdo tutorial ya que no estoy acostumbrado a hacerlos. Cualquier inconveniente duda o consulta pueden realizármela.
Demás esta decir que si alguien necesita programar su chip y no sabe hacerlo o no tiene el programador, puede acercarse y se lo programo con gusto Saludos y gracias

 

ARMADO

Luego la idea es colocar todo en un cajita, la pueden armar ustedes, o reciclar cualquier objeto que sirva, yo compré un gabinete sencillo.
Para pegarlo pueden usar silicona para pistola de calor, o poxi-ran u otro tipo de pegamento que vean que sirva y no conduzca la electricidad.


MODULO LEDS Y BOTONERA

Hasta aquí el armado sin "opcionales", va a funcionar pero es triste no tener ninguna luz de indicación. Se me ocurrió para simplificar el armado hacer este módulo por separado que lleva 2 leds, que indica el funcionamiento, la operación de lectura, escritura, y otras cosas. Y los botones que sirven para cambiar de imagen de disco o resetear (el SD2IEC, no la computadora). Este método te permite la flexibilidad de colocar los botones y leds donde quieras mediante cables dentro de tu gabinete.

La idea es descargar el PDF a tamaño real aquí y usarlo como referencia para perforar un pedazo de acetato o cualquier placa semi-rígida.
Entonces para esto vamos a tener que conectar las resistencias de 560 ohm y la de 10k ohm como indica el esquema. Donde están las resistencias al descubierto vamos a poner unos tubitos de termo-contraíble o si no tenés, cinta aisladora. A esos cables los vamos a tener que extender con unos cables finitos aislados.

Así queda el módulo opcional con los leds y botonera. La idea es pegar esta placa al interior del gabinete perforado, y pegarlo con un buen pegamento
(Pensemos que tiene que resistir ser presionado repetidamente).

Conectamos los cables según el esquema al inicio del tutorial. Hay distintas alternativas de cómo conectar si entendemos el circuito. Los botones todos tienen en un extremo conexión a masa (negativo). El único botón que es un poquito más complicado es el de RESET que va con la resistencia de 10k en una forma de conexión que se llama "pull-up" resistor. Prestá atención al diagrama del inicio de este artículo para entender cómo se conecta.

La idea sería que quede algo más o menos así

sd2iec led rojo y verde

TESTEO SD2IEC

Conectá el SD2IEC a la fuente de energía y a la C64. Encendé la C64. Allí tipeá este programa:
10 OPEN15,8,15:INPUT#15,A$,B$,C$,D$ 20 CLOSE15 30 PRINT A$,B$,C$,D$
Tipeá RUN <return> y tendría que aparecer un mensaje como éste: sd2iec exito

Si sale eso quiere decir que funciona bien. Ahora tendrías que probarlo con una tarjeta SD formateada como FAT16 o FAT32 con algunos archivos adentro.

tipeá: LOAD"$",8 LIST <return>
y nos tiene que dar la lista de directorio

pungasd2iec pituca 800px

Eso es todo! Espero que lo puedas hacer y te salga lindo.

Agradecimientos:

Rico por el PCB Riq por haberme traido el Atmega1284P Naku por haber elegido sabiamente el diseño más realizable Si te querés comunicar conmigo mandame un email a mi gmail uctumi arroba etc etc.

ANEXO MANEJO DEL SD2IEC

Para darle comandos al SD2IEC debemos abrir un canal de comandos hacia el dispositivo (número 15), darle el comandocon PRINT y después opcionalmente cerrar el canal de nuevo. Para hacerlo se hace de esta manera:

OPEN 15,8,15 PRINT#15,”ingresá tu comando aquí” CLOSE 15

También se puede escribir en una sola línea:

OPEN 15,8,15,”tu comando”:CLOSE 15

También podés dejar el canal 15 abierto y escribir más comandos. Tené en cuenta que si usás otro comando de disco luego de abrir el canal 15 (como LOAD o SAVE) todos los canales, incluido el 15 se cierran automáticamente. Los comandos como DIRECTORY no cierran el canal.

Directorios

El comando CD te permite navegar la estructura de directorios tal como lo harías bajo Windows o Linux en línea de comandos.

// cambiar al directorio raíz

CD//

// ingresar al sub-directorio “midir” (relativo a tu ubicación actual)

CD/midir/

// ingresar al sub-directorio “midir” (absoluto desde el directorio raíz)

CD//midir/

// subir de nivel (como en DOS o Linux el comando CD.. )

CD:←

También podés crear sub-directorios sin necesidad de utilizar herramientas especiales. Para eso se usa el comando MD:

// crear sub-directorio en la ubicación actual

MD:midir

// crear sub-directorio dentro de otro sub-directorio

MD/midir/:otrodir

// crear sub-directorio desde la ubicación raíz

MD//midir/:otrodir

Para borrar un sub-directorio podés usar el comando RD. Sólo directorios vacíos se pueden borrar, de lo contrario te dará un error "FILE EXISTS".

// Remover dentro del directorio actual

RD:midir

// Remover en referencia al directorio raíz

RD//midir/:otrodir

Montando imágenes de disco

El comando CD también se puede usar para montar imágenes D64/D71/D81, como si fueran directorios comunes. Se usa la misma sintaxis que al montar directorios

// montar “imagen.d64” en directorio actual

 CD:imagen.d64

// montar "imagen.d64” en sub-directory /midir (relativo)

CD/midir/imagen.d64

// o absoluto

CD//midir/imagen.d64

// desmontar una imagen de disco (volver al directorio de la tarjeta SD en el que está la imagen)

CD:←

No necesariamente se deben utilizar imagenes sino que podés utilizar una tarjeta SD formateada para FAT o FAT32 como si fuera un disco floppy. Sin embargo, el sistema de la commodore sólo permite un máximo de 144 archivos en cada directorio, lo que significa que una tarjeta de 4GB tendrá todavía mucho espacio libre cuando lleguemos a los 144 archivos.

Cambiando el número de unidad del dispositivo

Por defecto el SD2IEC está configurado para el número de unidad 8. Pero como si fuera una disquetera real podés cambiarlo a 9,10 u 11 usando este comando:

// cambiar de unidad 8 a 9

OPEN 15,8,15

PRINT#15,“U0>"+CHR$(9)

CLOSE 15

Reemplazá el valor CHR$ con el valor de unidad deseado. Como una unidad 1541 real, el SD2IEC no recordará el cambio luego de ser reiniciado. Sin embargo podés guardar la configuración en memoria EEPROM para que sobreviva los reinicios.

// guardar el número de unidad en la EEPROM

OPEN 15,9,15

PRINT#15,“XW"

CLOSE 15

Reemplaza 9 con el número de tu unidad.

DETECCION DE FALLAS

Si hay luces titilantes (rojas sobretodo) es porque el SD2IEC te quiere decir algo. En la C128 y Plus/4 podés leer el canal de errores mirando la variable d esistema DS$:

// Mostrar canal de errores en C128 yPlus/4 PRINT DS$

Esto te mostrará cuál es el problema (ARCHIVO EXISTENTE, ARCHIVO NO ENCONTRADO, etc) En la C64 es un poco más difícil, y requiere escribir un pequeño programa para leer esos valores. Es necesario porque el comando INPUT no se puede utilizar en forma directa:

// Leer canal de errores en la C64 10 open 15,8,15 20 input#15,a,b$,c,d 30 print a;b$,c,d 40 close 15

Navegador de archivos Para manejarte por la estructura de archivos de la tarjeta SD, y facilitar el montaje de las imágenes de disco y carga de ejecutables es recomendable usar un "File browser" o "navegador de archivos". Hay varios y diversos con más y menos funcionalidades. El más simple y usado es el CBM File browser.
AUTOSWAP El SD2IEC tiene 3 botones. El del centro es el REINICIO, que sirve para poner en cero el dispositivo sin tener que apagar la C64 o desconectarlo, lo deja en el directorio raíz. Los otros dos botones se utilizan con la función de SWAP. La función de Swap (cambio) de imágenes nos permitirá usar la botonora de nuestro SD2IEC para cambiar de imagen de disco mientras estamos ejecutando un programa o juego. Nosotros podemos indicarle al SD2IEC mediante un comando que utilice una lista de imágenes previamente definida para que al presionar los botones pase de una a otra. Eso se hace con el comando XS:nombreswaplist.lst Cuando apretamos un botón va a utilizar la SWAP LIST que tenemos definida, y si no tenemos definida ninguna va a buscar el archivo AUTOSWAP.LST La lista puede contener imágenes de disco o sub-directorios (carpetas), es indistinto. Por ejemplo si tengo en mi ubicación cuatro sub-directorios: carpeta1, carpeta2, carpeta3, carpeta4. En mi swaplist pongo: carpeta1 carpeta2 carpeta3 carpeta4 si quiero que estén referenciadas con el directorio raíz //carpeta1 //carpeta2 //carpeta3 //carpeta4

Acelerador de carga SD2IEC soporta varios cartuchos de aceleración de carga, pero también hay un acelerador por software llamado SJLOAD que funciona con algunos ejecutables, especialmente los que no tienen fastloaders propios. Esto se carga una vez encendida la C64, y una vez cargado queda activado y todo lo que carguemos después lo va a cagar mediante ese sistema. El archivo ! es por defecto el que se usa para SJLOAD (pero se puede cambiar a cualquier otro si se desea) Para cargarlo se usa LOAD”!″,8,1 También se puede cargar un ejecutable y el SJLOAD en una sola operación, por ejemplo si lo cargamos junto a CBM File Browser para C64: LOAD”!*FB64″,8,1

Packs para descargar

Pack con juegos y File browsers de Sander Souza

Pack con juegos, file browser y tools de Beamrider (Foro Retrocomputación)

Megapack con juegos y tools de The Future was 8 bit
































Joomla templates by a4joomla