Actualmente estoy intentando probar algunos NVSRAMs antiguos para asegurarse de que funcionan antes de ponerlos en uso. Me gustaría probarlos de forma independiente y estoy pensando que un arduino podría hacer el truco. En teoría, ¿debería un arduino mega ser capaz de manejar esto?
PORTC = DQ0-DQ7
PORTA = A0-A7
#define E 2
#define G 3
#define W 4
void fillOne();
void setup() {
Serial.begin(9600);
pinMode(E, OUTPUT);
pinMode(G, OUTPUT);
pinMode(W, OUTPUT);
DDRA = B11111111; // sets port a to output
DDRC = B11111111; // set port c to output
digitalWrite(E, HIGH);
digitalWrite(G, HIGH);
digitalWrite(W, HIGH);
}
void loop() {
fillOne();
}
//Test One
void fillOne()
{
int fail = 0;
int address = 0;
PORTC = B11111111; // Sets Dataline to one
Serial.print("Test Start");
for (address = 0; address < 256; address++)
{
PORTA = address;
digitalWrite(W, LOW);
digitalWrite(E, LOW);
digitalWrite(W, HIGH);
}
//Read Back and check for One
// Sets Datalines to one
digitalWrite(W, HIGH);
digitalWrite(E, HIGH);
PORTC = 0x00;
DDRC = 0x00;
for(address = 0; address < 256; address++)
{
PORTA = address;
digitalWrite(G, LOW);
digitalWrite(E, LOW);
if(PORTC != B11111111)
fail ++;
digitalWrite(G, HIGH);
}
if(fail > 0)
{
Serial.print("FAIL");
Serial.print(fail);
while(1);
}
Serial.print("PASS");
while(1);
}
Actualización: Lo configuro para que solo use A0-A7 hasta que lo haga funcionar, luego lo expandiré a otros bits. También estoy programándolo solo con 1, por lo que es más fácil de depurar por ahora. No funciona del todo, creo que es el direccionamiento .. Tengo la dirección configurada en una INT y va de 0 a 256 ... Si envío la int a un PORT, debería enviar ese número en binario, ¿correcto?