Hallo, ich suche eine Möglichkeit, ein Ram zu testen. Es sollen alle Bits mit 1 und auch mal mit 0 beschrieben werden. Desweiteren sollen alle Adressen sicher getestet werden. Also alles mit 0x5A beschreiben und zurücklesen und dann das ganze noch einmal mit 0xA5 ist dann doch etwas zu einfach. Wenn möglich, eine Funktion in C. Aber auch für einen einfachen Ansatz wäre ich schon dankbar. Dieter
Die relevanten Muster sind AAh und 55h, du gehst alle Adressen ab und schreibst eben diese Werte in das RAM, anschließend ließt du sie aus und überprüfst ob es immer noch das selbe Muster ist. Wo liegt das Problem?
Ganz einfach, wenn eine Adressleitung permanent auf 0 liegt (z.B. Lötbrücke), ist das nicht feststellbar. Aber genau solche Fehler will ich feststellen können. Dieter
Hi Das Teil ist zwar für'n M16C mit 1MB extern 16RAM, aber das kannst Du ja als Anregeung nehmen. Es findet nicht gelötete Pins, kurzgeschlossene Addressleitungen, kurzgeschlossene Datenleitungen, sowie irgend was auf Masse oder Vcc Reiner
An besten, man nimmt einen Pseudo-Zufallsgenerator und schreibt damit den kompletten RAM voll. Dann testet und invertiert man alles im 2. Durchgang. Im 3.Durchgang testet man das invertierte Zufallsmuster und fertig. Peter
Schon mal vielen Dank, sehr schöner einfacher Ansatz, der schon mal die meissten Tücken finden sollte. Gibt es noch andere Ansätze, die das RAM evtl. mit "zufälligen" Adressen beschreiben. Also das RAM mit allen möglichen Daten in wild springende Adressen beschreiben und dann genauso wild überprüfen. Dieter
Hi, warum wild und Chaos? Zuerst würde ich die einzelnen Aressleitungen testen: kompletten Ram auf 0 setzten A0=0 Zelle auf 1, lesen, invertieren, schreiben, lesen, ok? > A0=1 Zelle auf 0? ok> zelle auf 1,... s.o. A1=...so und geht man halt die einzelnen Adressleitungen durch. Sind die Adressleitungen alle ok, dann folgt der Zellentest: Zelle lesen, invertieren, schreiben, lesen ok > nächste. Was für ein Bitmuster zum prüfen verwendet wird spielt keine Rolle, die Invertierung stellt sicher das sich jedes Bit setzten und löschen lässt. Eine Prüfung der Adressleitungen bei RAMS in Software ist eher ungewöhnlich. Noch Fragen? cu tb
Wie Dieter schon sagte, will er nicht nur das RAM, sondern auch die Verdrahtung testen. Verdrahtungsfehler erkennt man mit der beschriebenen Methode nicht. Noch ein Vorschlag: man löscht das gesamte RAM und schiebt ein Bit durch das gesamte RAM. Dabei überprüft man die letzte Adresse, ob hier das Bit zu früh, oder gar nicht ankommt. Siegfried
@siegfried: vertauschte Adressleitungen sind per Software nicht zu erkennen (gar nicht!!!) und für die Funktion ist es auch egal (solange nicht noch mehr am Adressbus hängt). Wichtig(und prüfbar) ist nur die Anzahl und Ansprechbarkeit der einzelnen Zellen(Adressleitungstest) und die Funktion der einzelnen Zellen(Ramtest) alles was darüber hinausgeht ist nur Mehraufwand ohne Mehrnutzen. Ein BIT durch den Ram zu schieben ist Quark. Selbst ein BYTE zu "schieben" (ist je nach Hardware nicht mal möglich) ist albern, da nach jedem Schritt der gesamte RAM geprüft werden müsste. Um Verdrahtungsprobleme zu ermitteln genügt jeweils die Zellen abzuchecken, bei den sich eine ADRESSLEITUNG ändert(z.b. 0,1,2,4,8,16...). Die Funktion des RAMs wird getestet in dem jedes BIT getestet wird, ob es sich auf H und L setzten lässt. Ob das nun Bit-, Byte- oder Blockweise geschieht und mit welchem Muster ist egal.
@thomas b Vertauschte Adressleitungen, bzw. Datenleitungen spielen keine Geige in Sachen Funktion. Mit dem Vorschlag ein BIT durch den Speicher zu schieben meinte ich natürlich den softwaremäßigen Ansatz. Ist wohl klar, dass min. ein Byte adressiert werden muss. So aufwändig ist der Test nun auch nicht, er deckt aber zumindest fast alle Verdrahtungsfehler, Unterbrechnungen, Kurzschlüsse und RAM-Fehler auf. Allerdings sind einige Fehlerfälle denkbar, wo der vorgeschlagene "Adressleitungseinzeltest" versagt. Beispiel: A2 hängt auf GND. Schreiben und Lesen von Zelle 0x0000 ist OK. Schreiben und lesen von Zelle 0x0004 geht jeweils auf die Zelle 0x0000. Bei den Datenleitungen verhält es sich ähnlich. Daher sollte das Bitmuster was über die Datenleitungen geht, ebenfalls variiert werden. Im Grunde kommt es auf die Anforderung an. Für einen Lego-Roboter wird wohl kaum jemand so einen Aufwand treiben. Es gibt jedoch genügend Fälle wo es auf einwandfreie Funktion ankommt. Siegfried
Hi! Ich habe letztes Jahr mal sowas gebaut um Speicherfehler älterer CNC-Masch. zu testen.Dabei habe ich abwechselnd $AA und $55 ins Ram geschrieben.Das darauffolgende Lesen wurde mit dem ADW gemacht um saubere Pegel und TST feststellen zu können. Bei falschem Lesewert hat das Prog.einfach über RS232 eine Fehlermeldung gebracht und den momentanen Leitungszustand zum nachmessen per Hand erhalten.Mit der Tastatur konnte man dann entscheiden ob Abbruch oder Weitertesten. Das mit den gebrückten / losen Adressleitungen fällt auch auf, da ja das Bitmuster wechseln muss. Habe so einige böse Chips finden können, die meisten allerdings mit schlechten "Datenpegeln".Lief allerdings auf einem HC12, den kann man am ehesten mit einem M16 vergleichen, deshalb auch kein Programmanhang.Aber als Denkanstoss hilft es eventuell. Uwe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.