Beiträge von andi6510 im Thema „Ein RAM Tester für 2114 RAMs auf Basis eines Arduino Nano“

    Da nun Bitte melde dich an, um diesen Link zu sehen. werden, wollte ich die aktuelle Software hier noch posten: Bitte melde dich an, um diesen Anhang zu sehen.

    Momentan unterstützt die Software das Testen von 2114 SRAMs (4x1k) sowie die Standard DRAMs 4x64k, 4x16k, 1x64k und 1x256k. Die DRAM Tests sind nicht besonders praxisnah da vom Timing her viel zu langsam. Daher kann es sein, dass ein RAM, welches den Test besteht, im Rechner bei voller Geschwindigkeit doch Probleme macht. Aber für einen groben Check taugt es. Testzeit liesse sich sicher auch noch verbessern. Wenn da jemand Lust hat noch zu optimieren: Nur zu! (Ich mache es nicht :P)

    In dem ZIP file verbirgt sich ein Arduino sketch. Wer daran rumbasteln möchte, muß sich die Bitte melde dich an, um diesen Link zu sehen. installieren und kann loslegen. Platz für Erweiterungen ist noch genug frei und ich hoffe, ich habe den Code übersichtlich genug gestaltet. :smile:

    Läuft das mit dem gleichen Adapter? Oder brauchts da nen anderes Shield?

    Das habe ich vergessen zu erwähnen:

    Ich stecke das RAM in den gleichen Adapter, aber auf dem Kopf, also mit Pin1 am IC in Pin 10 des Sockels und nur in die unteren 16 Pins. Pin 1 und 18 des Sockels bleiben dann also frei. Die Stromversorgung bekommt das RAM aus einem Portpin der einfach dauerhaft auf high gelegt wird.

    Evtl wäre da tatsächlich ein eigener Adapter hilfreich. Wenn der geschickt verdrahtet wird, braucht man auch nicht alle Adressbits auf verschiedene Ports des ATMEGA zu verteilen. Das könnte der Sache dienlich sein.

    So, weil ja immer die Frage nach den dynamischen RAMs kam, habe ich mich mal da ran gesetzt und einen Test für 4164 RAMs geschrieben. Um es vorweg zu sagen: Im Prinzip funktioniert das soweit, ABER...

    Mit meiner reinen Softwarelösung gelingt es mir nicht das Refresh-Timing der RAMs einzuhalten. Spezifiziert sind 4ms, ich erreiche 45ms Refresh Cycle. Dennoch funktionieren damit zumindest die RAM Chips, die ich hier habe. Allerdings kann ich auch das Timing der Zugriffe nicht genau genug kontrollieren. Eigentlich kann ich da sogar gar nichts kontrollieren und die erforderliche Genauigkeit im 100 Nanosekunden-Bereich ist vollkommen illusorisch.

    Das bedeutet also: Der Test ist nur ein sehr grober Schätzwert, ob das RAM überhaupt irgend etwas tut. Funktionierende RAMs fallen oft trotzdem durch den Test. Nur defekte werden recht zuverlässig erkannt. Ausserdem dauert der Test für ein RAM (Alle 65536 Speicherbits fünf mal mit Zufallsbits geschrieben und gelesen) ca 2 Minuten.

    Unter diesen Umständen werde ich den Arduino-Sketch hier erst mal nicht veröffentlichen. Wer sich aber damit beschäftigen will, darf ihn gerne von mir haben (per PN). Aber da sowieso im Moment niemand über die Hardware verfügt, dürfte das wohl schwierig werden.

    ;(

    Wenn ich Dir jetzt (mit) das Projekt verleidet habe, dann tut es mir wirklich leid. Das war nicht meine Absicht!

    Keine Angst, so schnell kriegt man mich nicht unter :-). Nur kenne ich meine Fähigkeiten in KiCad nur zu gut. Daher überlasse ich es gerne der Community in der Platine noch die ein oder andere Verbesserung einzupflegen. Ich bin da keine so große Hilfe.

    ADAC kümmert sich ja schon dankenswerter Weise darum, dass die Interessensbekundungen eingesammelt werden, fehlt noch jemand, der sich das Layout noch mal vornimmt: Die Löcher des DIP Sockels auf 0.9 aufbohren und den Arduino deutlicher kennzeichnen ist wohl das Wichtigste. Wäre das was für Dich?

    Übrigens sieht mein Arduino anders aus als Deiner im Nunchuck Bild. Von daher würde die Darstellung bei mir so nicht passen... .

    Welches RAM war denn beim PET defekt? War es, wie vermutet, eines des beidem im ersten KB?

    Ja, war es - ich habe alle 16 RAMs ausgelötet und habe auch Ersatz besorgt. Nur fehlen mir noch die Sockel...

    Bleibt noch das ROM-Problem. Auch da werde ich mit frischen Sockeln anfangen. Aber evtl ist es auch der 74154 - laut Oszi Bild zappelt es da an ein paar Pins nicht so recht wie erwartet. Aber ich komme voran.

    Bitte stell das doch auch mal im Vereinsforum vor.

    Klar mache ich - wenn sich hier der Staub soweit gelegt hat. :smile:

    Das wäre natürlich noch besser, wenn das ginge. Farbram testet man ja doch nicht so oft, für 4164 wäre schon geil. Aber das eine ist Static-Ram und das andere Dynamic-Ram, ob das geht?

    Ich habe das Teil zusammengeklopft, weil ich bei meinen PET2001 einen Speicherfehler diagostizieren wollte. Der verwendet 16 von den 2114 Käfern. Für mich tut er genau das, was ich brauche.

    Die dynamischen RAMs (4164, 4464 etc) müssten völlig anders getestet werden. Mit Refresh etc... . Rein vom footprint her könnte es mit der Hardware aber gehen. Nur das die dynamischen RAMs 5V und GND vertauscht haben. Die müssten dann also kopfüber in den Sockel. Und man bräuchte einen andern Arduino Sketch je nach RAM Typ.

    OK, ich übergebe das den Profis! :smile:

    Ich hänge jetzt einfach mal mein KiCAD Projekt an. Freak kennt ja meine KiCad Fähigkeiten schon. Entsprechend "qualitativ" ist mein Projekt geraten... :wink:

    Der Footprint vom Arduino ist aus einem 32-PIN DIP IC mehr schlecht als recht abgeleitet. Im 3D Viewer sieht man das noch. Wer Lust hat, kann da gerne einen tollen footprint draus machen mit Beschriftung etc.

    Aber bevor da jetzt unendlich Arbeit rein versenkt wird: Bedenkt, dass die Zielgruppe gerade aus einer Hand voll Leuten besteht. Also ich persönlich würde den Aufwand minimieren...

    andi6510 Vielen Dank schon mal! Sag mal, paßt ich den DIP18 Footprint auch ein ZIF-Sockel? Die Bohrungen sehen mir auf den ersten Blick ein wenig eng aus dafür. Aber das kann natürlich täuschen...

    Ja, die Bohrungen sind für einen ZIF Sockel vermutlich zu eng.

    Ich habe gerade mal im Datenblatt eines 3M Sockels geschaut: Die Bohrung sollte eher 0.9 statt 0.8 mm sein.

    Das kann man als schnellen Hack evtl einfach im Drill-File anpassen. Dann sind allerdings alle Löcher größer und nicht nur die vom Sockel... :sad:

    Die Frage ist, ob jemand die knapp 20 € für so einen Sockel ausgeben will... (Preis bei Digikey und Mouser)

    Ich glaube, der ZIF-Sockel muss sowieso in einen normalen Sockel gesteckt werden, da er deutlich breiter ist und man dann auf den Lötaugen der Buchsenreihen aufsitzt. Vorteil: Dann kann man den ZIF-Sockel auch mal auswechseln (z.B. nach Testen von > 1000 RAMs)... :wink:

    So, nun noch ein Update des Arduiono Sketch - diese Version testet das RAM in wenigen Sekunden:

    Also, Platine ist schon fertig (war ja auch wirklich nicht so kompliziert).

    Bitte melde dich an, um diesen Anhang zu sehen.    Bitte melde dich an, um diesen Anhang zu sehen.

    Im Anhang finden sich die Gerber Files.

    Die Bauteile habe ich mal in einer Reichelt Bestelliste zusammengefasst:

    Bitte melde dich an, um diesen Link zu sehen.

    Den Arduino gibts in der Bucht sicher noch günstiger. Und die Pinleiste gibts in der Regel zum Arduino dazu. Ich habe aber trotzdem mal zwei 16er Leisten mit in die Liste genommen. Die müssen dann jeweils auf 15 Pins gekürzt werden.

    ACHTUNG! Bis jetzt ist alles noch komplett ohne Funktionsgarantie. Die Platine habe ich einfach nach bestem Wissen layoutet. Es wäre daher nett, wenn mal jemand die Platine gegen meine Pinliste oben gegenchecken könnte. Dann haben wir wenigstens das vier Augen Prinzip.

    Um die Rätselei abzukürzen, wie das bestückt werden muss: Der Arduino bekommt seine Beine nach unten eingelötet und wird dann in die Buchsen auf der Unterseite der Platine gesteckt. PIN1 vom Arduino ist dabei der Pin D1/TX.

    Bestückungsanleitung mit Bildern gibts natürlich erst, wenn Platinen da sind.

    Wer mag sich um eine Sammelbestellung kümmern? Ich habe nicht so die Erfahrungen mit Platinenherstellern, bei denen so ein Kleinkram günstig gemacht wird. Und Würth Elektronik ist sicher ein bisschen zu teuer...

    zum Schluss noch der Schaltplan:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Wo wird mir Test failed oder Test pass angezeigt.

    Ich habe im Scetch was mit seriell gelesen.

    Ja, per serieller Verbindung im Arduino serial Monitor wird detailliert ausgegeben, was gerade getestet wird.

    Wenn man das Teil standalone betreibt gibts dann Blinkcodes per LED (ist bereits auf dem Nano 3 vorhanden):

    XXXX____XXXX____... gleichmäßiges Blinken bedeutet "Test läuft".

    XXXX_XXXX_XXXX_... 1x Laaang (mit kurzer Pause) bedeutet PASS, RAM ist OK.

    X_X____X_X____... 2x Kurz bedeutet FAIL, RAM ist defekt.

    Ich habe damit erfolgreich aus 32 RAM ICs das Defekte ausgesiebt (im standalone Modus).

    Momentan dauert so ein test pro IC noch ca 30-40 Sekunden. Vor allem, weil das chip-select für 1 ms gezogen wird - 1us würde ja schon reichen. Aber ich hatte auf die Schnelle nicht gefunden, wie man auf dem Arduino ein Mikrosekunden-Delay macht (ja ich weiss, Google hat mir die Lösung gerade auch sofort ausgespuckt...)

    Und ja, ich hätte dann auch gerne einen Bausatz oder Platine

    Klar, ich hätte Interesse an einer solchen Platine! Sammelbestellung, KiCAD-Projekt oder Gerber-Files -- wie es Dir am besten passt.

    OK, das ist genug Motivation mal eine Platine zu machen. Ich werde dann zu gegebener Zeit eine Umfrage machen, wer Interesse hat - wenn es sich lohnt kann man ja ne Bestellung lostreten.