Ich versuche derzeit, einige alte NVSRAMs zu testen , um sicherzustellen, dass sie funktionieren, bevor ich sie verwende. Ich würde sie gerne unabhängig testen und ich denke, ein Arduino könnte den Trick machen. Sollte ein Arduino Mega damit theoretisch umgehen können?
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);
}
Update: Ich habe es so eingerichtet, dass es nur A0-A7 verwendet, bis es funktioniert, und dann auf andere Bits erweitert wird. Ich programmiere es auch nur mit Einsen, damit es jetzt einfacher zu debuggen ist. Es funktioniert nicht ganz, ich denke, es liegt an der Adressierung. Ich habe Address auf ein INT gesetzt und es geht von 0 bis 256. Wenn ich das int an einen PORT sende, sollte es diese Zahl in Binärform senden, richtig?
Ja, das sollte man können. Der Teil, den Sie verwenden, benötigt 21 Pins für die Adressierung, 8 Pins für Daten und ein paar Pins für die Schreibfreigabe und so weiter. Das Arduino Mega hat 54 digitale IO-Pins, also sollten Sie es so ziemlich einfach verkabeln und loslegen können.
Dinge, die Sie jedoch überprüfen sollten: Überprüfen Sie die erwarteten Spannungen für die Pins auf dem SRAM, um zu sehen, wie sie hohe/niedrige Logikpegel definieren, und stellen Sie sicher, dass dies dem entspricht, was Ihr Arduino sendet. Im schlimmsten Fall benötigen Sie zwischendurch eine Pegelumwandlung. Möglicherweise benötigen Sie auch Pulldown-Widerstände an den SRAM-Pins, um sicherzustellen, dass die Dinge 0 sind, wenn Sie es erwarten. Und überprüfen Sie den Innenwiderstand / die Stromaufnahme auf dem Chip, um sicherzustellen, dass er nicht versucht, mehr Strom zu versenken, als die digitalen IO-Pins von Arduino liefern können. Andernfalls könnte es den Arduino beschädigen.
Kein Grund warum es nicht funktionieren sollte. Es erfordert nur eine Menge Pins. Abhängig von der Anzahl der E/A-Pins Ihres Chips müssen Sie möglicherweise Port-Expander, Schieberegister, Latches/Flip-Flops oder andere Komponenten verwenden, um genügend Pins zu erhalten. Ein übliches Verfahren zum Verbinden mit RAMs mit breiten Adressbussen besteht darin, Adresslatches zu verwenden, um die Adressleitungen hoher Ordnung mit den Adressleitungen niedriger Ordnung zu multiplexen.
user_1818839
Benutzer39382
Hybridchem
Bruce Abbott
Bruce Abbott