Hallo,
ist es grundsätzlich möglich, einen 24CO2 EEPROM in einer Schaltung
auszulesen und auch wieder zu programmieren?
Zum Hintergrund: Ich habe ein kleines Funkgerät mit einem Serienfehler.
Offenbar versagte bei sehr vielen Geräten das EEPROM bzw. wurde dessen
Inhalt irgendwie ungewollt verändert.
Laut eines Forums hat aber ein User eines der Geräte retten können. Es
hat sich um das besagte EEPROM gehandelt. Wie genau das Problem behoben
wurde, konnte ich leider nicht mehr in Erfahrung bringen.
Vielleicht ist es aber einen Versuch wert, ein noch funktionierenden
EEPROM auszulesen und den Code auf das defekte Gerät zu übertragen. Die
Frage ist nur WIE man das anstellt. Nach etwas Recherche bin ich auf den
WINGONEER EEPROM Routing USB Programmer CH341A Writer LCD Flash für 25
SPI Serie 24 I2C
USB I2C Adapter gestoßen. Hat damit vielleicht schon jemand Erfahrungen
gesammelt und würde so eine Hardware für mein Vorhaben funktionieren?
Gruß
Alex
Alex schrieb:> ist es grundsätzlich möglich, einen 24CO2 EEPROM in einer Schaltung> auszulesen und auch wieder zu programmieren?
Ja, der 24C02 hat keinen Leseschutz.
Den alten Chip neu zu programmieren lohnt aber bei einem potentiell
defekten Chip nicht, sondern man wird ein frisches Exemplar nehmen.
Kostet nicht viel. Dieser Chip wurde früher sogar bei den Teststäbchen
von Bluzuckermeßgeräten mitgeliefert und enthielt Kalibrierdaten.
Im Prinzip könnte man den 24C02 sogar auf einem uralt Rechner unter DOS
am Parallelport auslesen und programmieren, aber das ist eine etwa
mühselige Methode.
Am einfachsten lässt du das von jemandem machen, der ein geeignetes
Programmiergerät hat, das werden nicht wenige sein.
Unklar aber ist, wie du die fehlerhaft gespeicherten Daten korrigieren
willst.
Wie kommst du an gute Daten? Evtl gibts auch noch eine Prüfsumme um
Veränderungen zu erkennen.
Du kannst versuchen, den Reset des mc, an dem das Eeprom hängt, zu
aktivieren. Dann sollten alle Ports hochohmig sein und Du kannst mit
einem anderen mc o.ä. das Eeprom auslesen.
Der von Dir genannte Programmer sieht nicht wirklich nach inCircuit
Verwendung aus.
Gruß, Stefan
P.S.:
Alex schrieb:> Offenbar versagte bei sehr vielen Geräten das EEPROM bzw. wurde dessen> Inhalt irgendwie ungewollt verändert.
Ist es möglich, dass bei diesen Geräten der Chip ausgetauscht wurde?
Es gibt bei diesem Typ subtile Unterschiede zwischen dem ursprünglichen
2402 von Exar und späteren Varianten wie 24C02 z.B. von ST.
Ich habe selbst ein Meßgerät, bei dem in diesem Chip bestimmte
Kalibrierfaktoren hinterlegt werden.
Das klappt aber nur bei der uralten Version, die neueren Typen kann das
Meßgerät nicht beschreiben.
Das merkt es zwar nicht, aber am Schluß des Programmiervorgangs liest es
eben doch nur wieder die alten Daten aus.
Hallo Nachtmix,
die Methode mit dem Uralt Rechner hatte ich auch, allerdings habe ich
leider keine so alte Kiste mit Parallelport mehr rumstehen, höchstens
noch mit serieller Schnittstelle, weswegen ich mich mal nach I2C USB
Adaptern umgesehen habe.
"Unklar aber ist, wie du die fehlerhaft gespeicherten Daten korrigieren
willst.
Wie kommst du an gute Daten? Evtl gibts auch noch eine Prüfsumme um
Veränderungen zu erkennen."
Ich hatte vor einigen Jahren zwei dieser Geräte vom Ramschtisch für
zusammen 5 EUR gerettet. Das eine Gerät arbeitet einwandfrei, das andere
hat eben den Defekt. Ich würde die korrekten Daten vom "Spendergerät"
auslesen. Ein frisches Exemplar würde ich im Moment nur sehr ungern
verwenden, da die Platine sehr eng bestückt ist. Das würde ich erst dann
machen, wenn die Neuprogrammierung durch einen Defekt im EEPROM nicht
funktioniert.
Mich würde aber auch einmal interessieren WIE es zum Datenverlust
gekommen ist. Offenbar hatten ja einige User genau das gleiche Problem.
Alex
@Nachtmix
Nein, die Platine sieht jungfräulich aus. Selbst die Schrauben am Gerät
hatten keinerlei Spuren. Puh, ich glaube mich zu erinnern, dass in dem
Gerät ein EEPROM von ST verbaut ist. Gerät müsste vom Bj. so um
2000-2005 herum sein.
@Stefan K.
Danke! Sowas hatte ich auch gerade irgendwo gelesen. Was das incircuit
angeht: Gibt es denn da einen Unterschied? Klar, der Adapter hat einen
Sockel für IC`s, aber mit entsprechenden Microklemmen bzw. mit so einem
"Klammer-Adapter" für SOIC müsste es doch eigentlich gehen. Passende
Klemmen habe ich hier, nur eben nichts für I2C.
Zum Lesen/Programmieren mußt Du ihn ausbauen oder die CPU in der
Schaltung dauerhaft in Reset halten. Sonst kämpft die CPU gegen Dein
Programmiergerät und kann Schaden nehmen.
Alex schrieb:> Mich würde aber auch einmal interessieren WIE es zum Datenverlust> gekommen ist.
Das geht sehr leicht, wenn an der Resetschaltung gespart wurde.
Wird nur ein billiges RC-Glied als Reset benutzt, dann kann die CPU bei
nicht monotonem Anstieg der VCC oder Unterspannung wirre Dinge auf dem
I2C-Bus machen.
@ Peter Dannegger
Oder gegebenenfalls ein paar Leiterbahnen durchtrennen...Na mal sehen
was ich da machen werden. Ich habe zwar schon einige Chips heil auf und
von Platinen bekommen, aber in dem Fall sind die Platzverhältnisse
wirklich sehr beengt.
Wenn der Fehler wirklich auf ein schlechtes Design zurückzuführen ist,
wäre vielleicht ein Durchtrennen der Leiterbahnen an geeigneten Stellen
die bessere Wahl. Man muss dann ja womöglich mal wieder mit einem Fehler
rechnen.
Incircuit heisst ja, dass Du das Bauteil in der Platine belassen musst.
Wenn das Eeprom gesockelt ist, hast Du natürlich keine Probleme.
Theoretisch geht incircuit auch mit dem von Dir beschriebenen
Programmer. Du musst aber sicherstellen, dass die Betriebsspannung von
Schaltung und Programmer übereinstimmen. Den VCC-Pin des Eeproms würde
ich dabei nicht an den Programmer anschliessen.
Allerdings ist die Voraussetzung, dass Du den Reset-Pin des mc (und ev
dessen Beschaltung) herausfindest.
Du kannst das Auslesen (und wiederbeschreiben) auch erstmal an einem
nicht funktionierendem Gerät testen. Wahrscheinlich sind nur einige Bits
im Eeprom gekippt. Der Atmega hatte z.B. in der Anfangszeit die
Schwäche, dass das Eeprom-Byte an Adresse Null regelmässig korrumpiert
wurde. Auch wenn der Brownout des mc nicht gesetzt ist, kann sowas öfter
mal passieren. Sowas kann grundsätzlich auch mit externen Eeproms
passieren: mc stürzt ab -> springt "aus Versehen" mit wirren Daten in
die Eeprom Schreibroutine -> defekt.
Viele Grüße, Stefan
@stefan64
Vielen Dank erst mal für die vielen nützlichen Infos. Habe zwar mal vor
2 Jahren etwas "oberflächlich" mit AVR`s und Bascom experimentiert (IR
Fernbedienung für Kamera für Timelapse Aufnahmen) aber mich nicht
wirklich um I2C und EEPROMS beschäftigt. Aber das ist jetzt mal eine
gute Gelegenheit da mal wieder etwas einzusteigen. Das defekte Gerät
selbst ist gebraucht keine 30 EURO mehr wert, eine Reparatur würde 80
EURO kosten. Also ein schönes Bastelprojekt für mich.
Ich vermute, der Prozessor wird irgendwas proprietäres vom Hersteller
selbst sein, aber mal sehen was ich an Unterlagen/Schaltplänen dazu
finde.
Zum halten im Reset: Ich erinnere mich noch etwas dunkel an den AVR und
dessen Reset Pin. Dort konnte man ja den Pin auf Masse legen für einen
Reset, also active Low wenn ich mich recht erinnern kann.
Schau mer mal ob das alles funktioniert :-)