Hallo
Ich habe ein Programm in FreeBasic geschrieben, mit dem man über die serielle Schnittstelle des PCs serielle EEPROMS vom Typ 24... auslesen und beschreiben können soll. Die Statusleitungen des COM-Ports werden dazu mit ein paar Widerständen und Z-Dioden zu einem I²C-Bus umfunktioniert.
Das Programm soll für alle Typen funktionieren, die Speicher- und Pagewrite-Buffer-Größe des jeweils verwendeten EEPROMs werden beim Programmstart abgefragt und müssen vom Benutzer angegeben werden. Die Adresspins A0-A2, die man von außen beschalten kann, liegen der Einfachheit halber immer auf Masse.
Ich habe zum testen EEPROMs vom Typ 24C02, 24C64 und 24C512. Mit dem 24C02 und dem 24C512 funktioniert das Ganze auch wunderbar, nur mit dem 24C64 nicht. Ich stehe echt vor einem Rätsel. Es läuft auch alles, wenn ich den 512er einstecke, aber die Werte für den 64er, also 64 kbit Speichergröße und 16 bzw. 32 Byte Pagewrite-Buffer eingebe. Dann werden die oberen 8kb von dessen Speicher einwandfrei beschrieben und ausgelesen. Eigentlich kann es also nicht am Programm liegen. An der Hardware aber auch nicht, ich habe es mit zwei verschiedenen, nagelneuen 24C64 probiert, die ich praktisch aus dem leitfähigen Schaumstoff, in dem ich sie bekam, direkt in die Schaltung umgesteckt habe. Aber nix. Der 24C64 reagiert nicht. Als ob gar kein EEPROM angeschlossen wäre.
Ich will euch gar nicht mit dem Programm oder dem Schaltplan langweilen. Meine Frage ist erstmal nur, ob es irgendeinen Unterschied gibt, der mir bisher entgangen ist. Ich bin auch in den Datenblättern noch auf keinen möglichen Grund dafür gestoßen, dass es mit dem kleinen und dem großen EEPROM geht, aber mit dem mittleren nicht.
Gruß
Skilltronic
Elektronik und QBasic: www.skilltronics.de
Geändert von Searcher (23.03.2012 um 12:41 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Oh, der 24C64 ist von ST Microelectronics, die anderen beiden von Atmel. Darauf hatte ich bisher nicht geachtet. Scheint eine heiße Spur zu sein, dafür schon mal vielen Dank!
Aber was genau meinst du mit "belegen die Pins anders"? Invertiert oder so? Im Datenblatt von ST finde ich keinen Hinweis darauf.
Gruß
Skilltronic
PS: hat das etwas damit zu tun, dass manchmal von den Pins A0-A2 und manchmal von E0-E2 die Rede ist?
Ich hatte nur allgemein geantwortet. Beim 24C16 wenn ich mich recht entsinne, wurden bei ST die Pins für Schreibschutz verwendet.
Da scheint der Unterschiede nicht zu liegen. Auf die Schnelle nachgeschaut ist die Funktion gleich unabhängig von den NamenPS: hat das etwas damit zu tun, dass manchmal von den Pins A0-A2 und manchmal von E0-E2 die Rede ist?
Bleibt also weitersuchen. Wie sieht denn Dein Schreibmodus aus? Lesemodus? Byteweise oder Blockweise? gibt es da Unterschiede bei den Chips?
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Ich schreibe mit Page Write und anschließendem Acknowledge Polling, gelesen wird der gesamte EEPROM-Inhalt am Stück mit Random Address Read, beides beginnend bei Adresse 0. Der einzige Unterschied, den ich bisher finden konnte ist der, dass unterschiedliche Typen mit gleicher Speichergröße verschieden große Pagewrite-Buffer besitzen. Das habe ich aber schon berücksichtigt.
Gruß
Skilltronic
Hallo!
Wie sieht es denn mit Entstörkondensatoren aus? Vielleicht schafft ein 100nF-Kerko so nah wie möglich zwischen Vcc und GND Abhilfe?
Grüße
Thomas
Lesezeichen