Va de Retro DRAM tester [v2.00]

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Responder
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 5798
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1202 times
Been thanked: 2781 times
Contactar:

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por cacharreo »

Creo que con 3 o 4 microinterruptores (Arriba, Abajo, Cancelar y Aceptar) iría sobrado pero no hay que decidirlo aún porque el próximo esquema del tester llevaría dos conectores (tiras de pines), uno de entrada con 3 pines (datos, Vcc y GND) y otro de salida con 4 (2 de datos, Vcc y GND). La entrada y la salida en sí se realizaría mediante placas hijas con botones o LEDs/pantalla respectivamente.

Acabo de hacer una prueba con 4 microinterruptores y un convertidor digital-analógico (DAC) de 4 bits,

Imagen

ha ido muy bien y no requiere calibración. Los valores leídos para cada microinterruptor de izquierda (MSB) a derecha (LSB) son 731, 682, 614 y 512. La distancia mínima entre dos de estos enteros es de 49 unidades y la pequeña variación entre una y otra prueba es de ±1 por lo que no habrá problema para discernir qué botón se pulsa. Añadir otro u otros microinterruptores más es algo trivial.
La parte buena de tu esquema de resistencias, es que son todas las resistencias de dos valores, sin complicación,
Pienso que aparte de bueno es esencial. Si alguien compra los componentes del tester para montarlo, excepto si los compra en una tienda de electrónica local, las resistencias tendrá que pedirlas por lotes y normalmente menos de 100 unidades no interesa por precio. Además, en pos de la consolidación de la lista de componentes desde el mismo origen, cuando tengamos claros los valores necesarios para la mayoría de las resistencias del circuito (pull-ups, protección,...), como se utiliza una escalera R-2R escogemos otras de la mitad o del doble del valor para el DAC.

Y recapitulando para cambiar de tema, tal como está siendo planificado, de los 22 pines del Nano, utilizaremos 1 para la entrada, 2 para la salida, y 19 que van conectados al zócalo ZIF. Escogiendo la asignación de D0 y D1 (TX/RX) se pueden soslayar los problemas siempre que no haya tensiones asignadas y/o el zócalo ZIF quede vacío cuando se programe el firmware; pero como todos los pines quedan conectados, se va a obstaculizar la transmisión y recepción serie durante los tests lo que implica que el proyecto inicial de controlar el tester y recibir los resultados por esta vía quedaría descartado. A costa de añadir complejidad al tester y de disminuir la velocidad máxima de los tests podrían sobrecargarse algunos pines del bus de direcciones pero, a priori y en mi opinión personal, si tengo que escoger entre las dos opciones prefiero la simplicidad del diseño, tener menos componentes en la lista final y un firmware más simple y accesible a cambio de renunciar a la comunicación serie. Si fuera esencial estaría más a favor de cambiar a otro microcontrolador con más pines I/O.
© cacharreo
Avatar de Usuario
Popopo
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3466
Registrado: 05 Nov 2019, 15:25
Has thanked: 1120 times
Been thanked: 570 times

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por Popopo »

cacharreo escribió: 13 Feb 2022, 11:35 ha ido muy bien y no requiere calibración. Los valores leídos para cada microinterruptor de izquierda (MSB) a derecha (LSB) son 731, 682, 614 y 512. La distancia mínima entre dos de estos enteros es de 49 unidades y la pequeña variación entre una y otra prueba es de ±1 por lo que no habrá problema para discernir qué botón se pulsa. Añadir otro u otros microinterruptores más es algo trivial.
La parte buena de tu esquema de resistencias, es que son todas las resistencias de dos valores, sin complicación,
Pienso que aparte de bueno es esencial. Si alguien compra los componentes del tester para montarlo, excepto si los compra en una tienda de electrónica local, las resistencias tendrá que pedirlas por lotes y normalmente menos de 100 unidades no interesa por precio. Además, en pos de la consolidación de la lista de componentes desde el mismo origen, cuando tengamos claros los valores necesarios para la mayoría de las resistencias del circuito (pull-ups, protección,...), como se utiliza una escalera R-2R escogemos otras de la mitad o del doble del valor para el DAC.
Buenos días :)
Tiene buena pinta, también me he hecho el mío, aunque he usado otros valores para conseguir un salto de unos 0.86v entre pulsador y pulsador. Más adelante probaré tu implementación a ver, aunque no entiendo muy bien ahora mismo que es lo que llevas montado en la foto. Parece complejo, tengo que releerlo algo más tarde que esté más despejado.

Te muestro como ha quedado el mío,
► Mostrar Spoiler
Un circuito muy cómodo, como ves, puedes enganchar un teclado externo, pulsadores o un simple cable si quieres ahorrar a tope o usar un invento propio plan lápiz electrónico. :) lo que se quiera.

Respecto al sistema, pues he usado IF porque con maps puede variar y no logré que me encajara bien los grupos de tensión, con if-elses consigo que entre dentro resistencias que pueden tener una variación importante y variar la tensión. No es lo mejor, pero... va bastante bien. Tampoco requiere calibración.
► Mostrar Spoiler
Como bien has indicado, mi implementación conlleva el problema de tener que pillar varias, aunque estás son estándar y se pueden usar valores aproximados bastante comunes también. {10K,3K9, 2K1,1K,560}, lo cierto es que es mejor usar tu esquema de control, pero ojo, que algunos teclados como el que he usado tienen una resistencia interna que depende un poco de la fabricación, en algún caso puede superar los 100 Ohms.
En definitiva, para poder centrarnos en el siguiente tema, usaremos tu implementación de control, aunque ya que he soldado mi circuito, para las pruebas en casa voy a usar este, hasta que lo adapte para que sea como el tuyo.
Lo importante es avanzar.


Respecto a los pines de comunicación Serie... a ver si apaño alguna solución. No quiero renunciar a ello, a ver si doy con alguna solución. Hoy trabajaré un poco el código de comprobación o al menos la estructura para escribir o leer en una memoria. Digo un poco, porque me he pegado todo el día de ayer para la tontería de los pulsadores... pues lo que me puede llevar será indescriptible :)

Luego cuando tenga la cabeza mejor trato de entender lo que me indicas.


Un saludo y gracias.

Edito: Me ha dado por ver el comportamiento y valores en un simulador con osciloscopio, para ver los saltos y valores de tensión teóricos de ambas opciones, bueno, el primero que he implementado es tu ADC, este es el enlace para verlo simulador: Esquemas de control A y B listas para simular

Realizado y este es el resultado gráfico:
► Mostrar Spoiler
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Última edición por Popopo el 13 Feb 2022, 20:20, editado 1 vez en total.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 5798
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1202 times
Been thanked: 2781 times
Contactar:

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por cacharreo »

De nada, gracias a ti.
Popopo escribió: 13 Feb 2022, 13:59Tiene buena pinta, también me he hecho el mío, aunque he usado otros valores para conseguir un salto de unos 0.86v entre pulsador y pulsador.
Genial, el valor entre pulsador y pulsador se puede variar fácilmente, para visualizarlo fácilmente: sería el equivalente a montar los pulsadores en vez de en D0, D1, D2 y D3 del DAC en D0, D2, D4 y D6.
Popopo escribió: 13 Feb 2022, 13:59tengo que releerlo algo más tarde que esté más despejado.
Es sencillo, como si en el esquema de la escalera R-2R que publiqué elimina todo de Q4 hacia arriba. En Q0, Q1, Q2 y Q3 están los microinterruptores con el pin común (NC) conectado a tierra y el conmutado (NO) a +5V.
Popopo escribió: 13 Feb 2022, 13:59Respecto al sistema, pues he usado IF porque con maps puede variar y no logré que me encajara bien los grupos de tensión,
Para esa función es mejor normalizar el valor leído para compensar cualquier pequeña variación y buscar en una tabla lookup el número de botón/microinterruptor.
Popopo escribió: 13 Feb 2022, 13:59para las pruebas en casa voy a usar este, hasta que lo adapte para que sea como el tuyo.
Cuando se encarguen las placas, si hay espacio no hay problema en hacer varias placas hijas para diferentes módulos de entrada o salida, de hecho creo que sería lo ideal.
Popopo escribió: 13 Feb 2022, 13:59Respecto a los pines de comunicación Serie... a ver si apaño alguna solución. No quiero renunciar a ello, a ver si doy con alguna solución.
No hay prisa ninguna pero, por favor, vamos a intentar centrarnos en una solución que haga corta la lista de componentes, que no añada más integrados o más módulos externos y no complique la programación con I2C o SPI para que después se comprenda todo al primer vistazo. Creo que este esfuerzo merecerá la pena en el futuro, cuanto más simple y elegante, mejor para todo.
© cacharreo
Avatar de Usuario
Popopo
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3466
Registrado: 05 Nov 2019, 15:25
Has thanked: 1120 times
Been thanked: 570 times

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por Popopo »

Buenas noches,

He estado trabajando un poco sobre el papel que lo soporta todo, según dicen.
El caso, según veo... los ICs caben sin problemas, no hay que quitarse de encima los pines de transmisión. Incluso cabe para el integrado de 20 pines. Sin problema. Si me equivoco ya me corregís.
Las pruebas en tablas y gráficas en el siguiente vídeo.

Además muestro una idea que @mad3001 tiene para facilitar mucho la realización de la placa y programación, basada en cambiar la colocación del IC dentro del ZIF.

Vídeo Explicativo en Y2B

Un saludo a todos y hasta mañana si se puede :)

Edito: en el vídeo cometí un error de contar coincidencias en la alineación centrada. De cualquiera forma, corregido dicho error, coincide con la alineación a base del ZIF, con lo cual... es mucho más práctico una alineación a base del ZIF a mi entender, por ser más sencilla.

Adjunto imagen:
► Mostrar Spoiler
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 5798
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1202 times
Been thanked: 2781 times
Contactar:

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por cacharreo »

Como idea para resolver la comunicación serie propondría incluir los pines TX y RX en una tira de pines 1x05 (DTR, +5V, RXD, TXD, GND) que serviría tanto de interfaz I2C como para conectar cualquier módulo de salida (LEDs o pantalla). Si se considera la comunicación serie como una forma más de entrada/salida estaríamos dentro de nuestras especificaciones iniciales.

En el chip 44256 la señal OE es necesaria para leer la salida de datos por lo que para este tipo de memoria serían 18 pines útiles.

Mover el integrado hacia abajo del todo sí que aumenta las coincidencias pero añade,
- una línea GND en el tablero de "wiring" que cuando la posición de GND era fija y conocida no hacía falta (más componentes, menos espacio),
- otro pin más para controlar desde el Arduino, el que habíamos ganado al tener GND en una posición fija,
pero además va a ir en contra de la natural tendencia a alinear la memoria con el pin 1 del zócalo ZIF y esto puede inducir a errores al operador que, más tarde o temprano, aparecerán (con una certeza del 100% tan pronto el operador automatice el proceso).

Sea cual sea la asignación de pines, para la programación no hay problema se crea un modelo software para los pines necesarios, se añaden constantes con los nombres y tablas/matrices de traducción que siempre tienen el mismo orden. Así cuando es necesario trabajar con un pin concreto, por ejemplo D0, en lugar de utilizar un pin directamente se haría así:

Código: Seleccionar todo

    byte bNumeroPin = aTablaAsignacionDePines[RAM_TYPE_4116][D0];
o

Código: Seleccionar todo

    digitalWrite( aTablaAsignacionDePines[RAM_TYPE_4116][D0], HIGH );
donde RAM_TYPE_4116 y D0 son constantes y la tabla/matriz de traducción es una matriz bidimensional con tantas filas (5) como tipos de memorias RAM y al menos tantas columnas como pines (18) aunque seguramente añadiríamos otras columnas para describir el tipo de memoria con datos como el número de pines de datos, de direccionamiento, etc.

También, según nuestra preferencia, esta tabla puede ser una matriz unidimensional con tantos elementos (5) como tipos de memorias RAM y cada elemento sería un registro/estructura de datos que, en pseudo-código, quedaría:

Código: Seleccionar todo

// Número de memorias RAM que conoce el tester
#define N_RAM_CHIPS         5 
// Índice para cada tipo de RAM en la tabla de definición de memorias
#define RAM_TYPE_4116       0
...

typedef struct
  {
    string sName;
    byte bDataPinN;
    byte bAddressPinN;
    ...    
    byte D0, D1, D2, D3;
    byte A0, A1,...;
    ...
  } RAM;

// Definición de características y asignación de pines para cada tipo de memoria RAM
RAM aTable[N_RAM_CHIPS] = ...;

...

byte bNumeroPin = aTable[RAM_TYPE_4116].D0;
int iD0value = digitalRead( bNumeroPin );
...
int iD0value = digitalRead( aTable[RAM_TYPE_4116].D0 );
...
digitalWrite( aTable[RAM_TYPE_4116].D0, HIGH );
o también, otra estrategia equivalente, es definir una clase genérica para estos chips y clases específicas para cada tipo. Esta última tiene como inconveniente que la programación dirigida a objetos no es tan popular y tal vez, no lo sé, pudiera resultar menos accesible.

Se use uno u otro enfoque, desde el punto de vista lógico esto hace el código independiente de los pines del zócalo ZIF.
© cacharreo
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 5798
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1202 times
Been thanked: 2781 times
Contactar:

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por cacharreo »

duca750 escribió: 05 Feb 2022, 19:53Hola compañeros, veo que ha avanzado bastante el tema, si necesitais hacer alguna prueba de algo me gustaría colaborar, tengo algún Arduino Nano por casa. Creo que hablo en nombre de la mayoría pensando que sobrepasar algo ese tope si se San más opciones no sería un problema, creo que más bien una ventaja. En fin como ya dije en su día y me apunté, me parece perfecto lo que decidáis y me mantengo en el proyecto sea cual sea. :)
¿Cómo lo llevas? ¿algún resultado?
© cacharreo
Avatar de Usuario
duca750 España - Extremadura
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2638
Registrado: 28 Ago 2017, 13:14
Has thanked: 386 times
Been thanked: 199 times

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por duca750 »

cacharreo escribió: 15 Feb 2022, 22:15
duca750 escribió: 05 Feb 2022, 19:53Hola compañeros, veo que ha avanzado bastante el tema, si necesitais hacer alguna prueba de algo me gustaría colaborar, tengo algún Arduino Nano por casa. Creo que hablo en nombre de la mayoría pensando que sobrepasar algo ese tope si se San más opciones no sería un problema, creo que más bien una ventaja. En fin como ya dije en su día y me apunté, me parece perfecto lo que decidáis y me mantengo en el proyecto sea cual sea. :)
¿Cómo lo llevas? ¿algún resultado?
Pues de momento solo a la espera de los zócalos CIF o como se llamen y me pondré a trastear, de momento estoy liado con un 6128 plus y no he tocado mucho el tema, a ver si me llegan los zócalos y me pongo serio con el tema.

P.d. lo pillé de 18 pin, las 41464 es el que llevan, espero sea correcto. ;)
CPC464,CPC6128/GX4000/COMMODORE 64,AMIGA 500/ATARI STFM1024&800XL/ORIC1,ATMOS/DRAGON32/SPECTRUM+, +2,+3,48K,16K/MSX HB501P,101P,201P,MSX HB20P,HB75P,CANON V20,PHILIPS NMS8250,8020&8010&8000/ACORN ELECTRON/THOMSON MO08,MO05/ENTERPRISE 64.
Avatar de Usuario
cacharreo !Sinclair 1
Moderador
Moderador
Mensajes: 5798
Registrado: 09 Ago 2019, 10:17
Ubicación: /home/cacharreo/
Has thanked: 1202 times
Been thanked: 2781 times
Contactar:

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por cacharreo »

Sin ninguna prisa, dale a ese CPC 6128+ como se merece. ;-)
duca750 escribió: 16 Feb 2022, 00:51lo pillé de 18 pin, las 41464 es el que llevan, espero sea correcto. ;)
Para la versión 0.00 sirve, en la próxima que soportará M5M44256 hace falta un zócalo ZIF de 20 pines.

De momento está casi todo, nos pondremos con el esquema nuevo tan pronto acordemos entre todos cómo proteger el Nano.
© cacharreo
Avatar de Usuario
Popopo
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3466
Registrado: 05 Nov 2019, 15:25
Has thanked: 1120 times
Been thanked: 570 times

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por Popopo »

duca750 escribió: 16 Feb 2022, 00:51 Pues de momento solo a la espera de los zócalos CIF o como se llamen y me pondré a trastear, de momento estoy liado con un 6128 plus y no he tocado mucho el tema, a ver si me llegan los zócalos y me pongo serio con el tema.
P.d. lo pillé de 18 pin, las 41464 es el que llevan, espero sea correcto. ;)
Leñe, pero esas cosas dilas, porque tengo que te podría haber mandado uno hombre.
Si tu quieres uno para hacer las pruebas me dices y te lo mando. Tengo también alguna pantalla OLED para dejarte si necesitas para pruebas. (el ZIF te lo quedas claro, vas a tener que soldarlo).
Avatar de Usuario
duca750 España - Extremadura
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2638
Registrado: 28 Ago 2017, 13:14
Has thanked: 386 times
Been thanked: 199 times

Re: Test de Memorias 4116, 4164 y 41464 - NEWS

Mensaje por duca750 »

Popopo escribió: 16 Feb 2022, 11:47
duca750 escribió: 16 Feb 2022, 00:51 Pues de momento solo a la espera de los zócalos CIF o como se llamen y me pondré a trastear, de momento estoy liado con un 6128 plus y no he tocado mucho el tema, a ver si me llegan los zócalos y me pongo serio con el tema.
P.d. lo pillé de 18 pin, las 41464 es el que llevan, espero sea correcto. ;)
Leñe, pero esas cosas dilas, porque tengo que te podría haber mandado uno hombre.
Si tu quieres uno para hacer las pruebas me dices y te lo mando. Tengo también alguna pantalla OLED para dejarte si necesitas para pruebas. (el ZIF te lo quedas claro, vas a tener que soldarlo).
Si es que tengo yo también caso todo jajaja, pantalla, oled, Nano, zócalos normales. Podría haber empezado a enredar ya, pero estoy con 6128 con media casa desmontada ya porque no aparece el cartucho...
CPC464,CPC6128/GX4000/COMMODORE 64,AMIGA 500/ATARI STFM1024&800XL/ORIC1,ATMOS/DRAGON32/SPECTRUM+, +2,+3,48K,16K/MSX HB501P,101P,201P,MSX HB20P,HB75P,CANON V20,PHILIPS NMS8250,8020&8010&8000/ACORN ELECTRON/THOMSON MO08,MO05/ENTERPRISE 64.
Responder

Volver a “Proyectos de hardware abiertos”