Test de Memorias 4116, 4164 y 41464 [Presentación y primeros intentos]

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.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3377
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 146 times

Re: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por Kyp »

Popopo escribió: 19 Ago 2020, 11:47 cómo la protegerías?
Estoy haciendome ya la placa de pruebas para la serie 4164 y diseñando el software, me gustaría saber como la proteges.
He dicho que hay que tenerlo en cuenta, no que sepa como hacerlo :)) :)) :))
Buscaría algún tipo de chip regulador que tenga ese tipo de protección, aunque, bueno, la mayoría la tienen :|
Se puede controlar con un sensor de corriente (una resistencia) y si sube mucho cortar la alimentación por ejemplo.

Yo el principal problema que le veo es que no va a haber pines suficientes para todo con un Arduino. Recuerdo que había un problema con eso. Esas memorias necesitan refresco. Normalmente el hecho de leer/escribir toda la memoria sirve de refresco, pero si se lee/escribe a base de cambiar pines individualmente el Arduino es muy lento y no se cumplen los timings necesarios para el refresco, había que usar un método que cambia grupos de pines a la vez y en ese caso no hay tantos pines como parece.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por dandare »

La manera trivial (y efectiva) de controlar la corriente maxima de una fuente es poner una resistencia en serie.
Imagen
Imagen
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: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por Popopo »

Kyp escribió: 19 Ago 2020, 15:24
Popopo escribió: 19 Ago 2020, 11:47 cómo la protegerías?
Estoy haciendome ya la placa de pruebas para la serie 4164 y diseñando el software, me gustaría saber como la proteges.
He dicho que hay que tenerlo en cuenta, no que sepa como hacerlo :)) :)) :))
Buscaría algún tipo de chip regulador que tenga ese tipo de protección, aunque, bueno, la mayoría la tienen :|
Se puede controlar con un sensor de corriente (una resistencia) y si sube mucho cortar la alimentación por ejemplo.

Yo el principal problema que le veo es que no va a haber pines suficientes para todo con un Arduino. Recuerdo que había un problema con eso. Esas memorias necesitan refresco. Normalmente el hecho de leer/escribir toda la memoria sirve de refresco, pero si se lee/escribe a base de cambiar pines individualmente el Arduino es muy lento y no se cumplen los timings necesarios para el refresco, había que usar un método que cambia grupos de pines a la vez y en ese caso no hay tantos pines como parece.
:) no es la idea, quiero decir cambiar pines continuamente. La configuración de pines es variable y a la vez estática. No será un problema. Me han dicho que puedo configurar los pines análogicos como digitales, eso me da mucha vida, ahora lo que debo de saber es que pines no puedo usar porque son dedicados a algo, por ejemplo D0 y D1 se que no puedo usarlos porque son para la comunicación serie.

Ahora andaba indagando donde poner los pulsadores para cual quiera de las dos configuraciones iniciales que pretendo en la primera etapa, la del 4116 y 4164, así como dos pines más para los dos diodos que sustituyen a la pantalla.
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: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por Popopo »

Ben-kenobi escribió: 19 Ago 2020, 16:09 Me apunto a uno
¿con qué menú de selección? quiero decir, ¿pantalla, carcasa, condensador de fluzo?...
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: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por Popopo »

dandare escribió: 19 Ago 2020, 16:44La manera trivial (y efectiva) de controlar la corriente maxima de una fuente es poner una resistencia en serie.
Es justo lo que me ha recomendado Llopis, me ha surgido por tanto una duda... la alimentación máx que me da el Arduino nano son 5v, la tensión para un 4164 son 5v, si a cada pin de conexión le meto una resistencia... ¿no cae la tensión demasiado para que de fallos de comunicación?.

Por otro lado, tendría que estar controlando en cada N ciclos que la tensión es adecuada, ¿no? en caso de corto la tensión cae a 0 y la que tendría es la de la resistencia, tendría que estar escaneando cada puerto analógico (y no se si tengo suficientes (no, no tengo suficientes) para detectarla, así como el problema del refresco. No sé si ando muy desencaminado, pero por ello andaba pensando en quizás usar un buffer o Mosfet.
¿Qué opinas?
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por dandare »

Normalmente, la impedancia de entrada de los chips es muy alta, por lo que la resistencia en serie no provoca caídas de tensión significativas.
No hace falta comprobar nada analógicamente, si limitas la corriente a menos del maximo IO de un pin de arduino, lo más que circulara será eso. Digamos unos 5mA. Para eso necesitarás resistencias de 1K
Imagen
Imagen
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3377
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 28 times
Been thanked: 146 times

Re: Comprobador de Memorias 4116, 4164 y quizás 41464

Mensaje por Kyp »

No hace falta controlar todos los pines, basta con poner la resistencia en serie con la alimentación. Es una resistencia pequeña, de unos pocos ohmios, que a un consumo normal de unos pocos mA el voltaje que cae en la R es un 0 lógico y si hay un corto entonces sube la tensión hasta dar un nivel lógico alto que puedes detectar y en ese caso apagar la fuente.
Avatar de Usuario
papanillu
Aspirante a demonio
Aspirante a demonio
Mensajes: 382
Registrado: 02 Jul 2017, 21:46
Ubicación: Baix Llobregat
Been thanked: 2 times

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

Mensaje por papanillu »

Bueno,

Hoy he tenido algo de tiempo, y he hecho lo que seria la "concept proof" del software del tester.
Yo para estas cosas uso un Arduino uno, que tengo montado junto a unas placas de estas de pruebas.

He grabado un video del funcionamiento y lo he enviado al grupo de telegram, Luego miro de subirlo aquí.
de momento aquí esta el fuente para cargarlo en un Arduino y probar.

No esta afinado, ni depurado ya que no tenia demasiado tiempo, y necesitaba hacer el menú.
Mide unos 4 Kb, mas los 3 de cada test de memoria en bruto, serian unos 12 -13 Kb, o sea, por memoria todavía nos cabe,

Enlace al video;



Y el codigo:


#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for LCD
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4);

const int buttonPin = 2; // Pin asignado al pulsador, es el primero despues de RX y TX
//const int ledPin = 13; // Pin asignado al led de test de desarrollo,
// Al ser el por defecto y tener un led instalado no necesitamos cablear nada durante el desarrollo
// variables Globales,
int buttonState = 0; // para leer el pulsador
int contadormenu = 0; // Para cargar el valor seleccionado
int action = 0; // Vamos incializando variables
int OKMenu = 0; // esta es para la cuando damos pulsacion larga y convertimos en OK
char mostrar[5]; // Para mostrar valores en pantalla
#define MAXMENU 4 // Numeo Maximo de opciones de menu

unsigned long Tinicio; //Momento en que se pulsa el pulsador
unsigned long Tfin; //Momento en que se libera el pulsador
unsigned long Tpulsacion; //Diferencia Tfin-Tinicio
long Retardopulsacion = 500; //Tiempo pulsacion larga,
//Hay que afinar este tiempo, ya que parece no cuadran los milisegundos leidos con tiempo real
void setup() {

lcd.init();
lcd.backlight();
// initialize the LED pin as an output:
// pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void menuread()
{
Tinicio= millis();
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH)
{
do {
buttonState = digitalRead(buttonPin);
Tfin = millis();
} while (buttonState == HIGH);
Tpulsacion = (Tfin-Tinicio);
if (Tpulsacion > Retardopulsacion)
{
// significa pulsacion larga, No hay que incrementar opcion de menu y activar OK
OKMenu=1; //Asignamos 1 como OK
} else {
// Enciende LED
// digitalWrite(ledPin, HIGH); // Para control visual de bonton pulsado, luqego quitar
OKMenu=0; //Asignamos 0 como no OK
++contadormenu;
if (contadormenu > MAXMENU ) contadormenu=1;
}
} else {
// turn LED off:
// digitalWrite(ledPin, LOW);
}
}

void ramtest()
{

// Aqui vendra la rutina de testear memoria;
// de momento ponemos una espera de unos cuantos segundos, y un contador para que sea mas visual

int espera=1000;
lcd.setCursor(12,2);
lcd.print(" 0%");
delay(espera);
lcd.setCursor(12,2);
lcd.print("10%");
delay(espera);
lcd.setCursor(12,2);
lcd.print("30%");
delay(espera);
lcd.setCursor(12,2);
lcd.print("50%");
delay(espera);
lcd.setCursor(12,2);
lcd.print("70%");
delay(espera);
lcd.setCursor(12,2);
lcd.print("90%");
delay(espera);
lcd.setCursor(11,2);
lcd.print("100%");
OKMenu=0;
action=0;
lcd.setCursor(0,3);
lcd.print("RAM OK, Press.....");
do
{
buttonState = digitalRead(buttonPin);
Tfin = millis();
} while (buttonState == LOW); //Esperamos hasta que se pulse el boton

// Inicializamos y volvemos al Inicio.
delay(1000);
contadormenu=0; // Si no inicializamos, permacera activo la ultima seleccionada
}

void loop() {
// (Columna, Fila) Comenzando por 0
lcd.setCursor(0, 0);
lcd.print("Ram Tester VDR 0.1 ");
lcd.setCursor(0,1);
lcd.print("No chip Selected ");
lcd.setCursor(0,2);
lcd.print("Short press change ");
lcd.setCursor(0,3);
lcd.print("long press OK ");


// Bucle donde controlamos el menu
do
{
menuread();
switch (contadormenu)
{
case 1:
lcd.setCursor(0,1);
lcd.print(" 4464 ");
break;
case 2:
lcd.setCursor(0,1);
lcd.print(" 4116 ");
break;
case 3:
lcd.setCursor(0,1);
lcd.print(" 4164 ");
break;
case 4:
lcd.setCursor(0,1);
lcd.print("41464 ");
break;
}

if (OKMenu==1 && contadormenu != 0 ) action=1; //Validando contadormenu nos aseguramos que no se lanza un test sin opcion.

}while (action==0);

lcd.setCursor(0,2);
lcd.print("Testing... ");
lcd.setCursor(0,3);
lcd.print(" ");
ramtest();
}
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9971
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 122 times
Contactar:

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

Mensaje por flopping »

Buena prueba de concepto, no sabia yo que ese tipo de pantallas se podian gobernar con dos pines solo, ¿tienes el esquema de conexionado del circuito, aunque sea escrito a mano?, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
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 »

► Mostrar Spoiler
Muchas gracias papanillu, estaba haciendo el menú a base de LEDs y escribiendo la estructura en los huecos, en caso de que no tuvieras el tiempo para hacerlo que se que andas bastante liado.
Gracias

PD: veo que finalmente has optado por usar un solo pulsador :) esta muy bien, la mía tira a usar dos, pero claramente si al final no tengo pines suficientes haré como habíamos hablado y como has hecho tu... 1 solo pulsador para gobernarlos a todos :)
Responder

Volver a “Proyectos de hardware abiertos”