Forum: Mikrocontroller und Digitale Elektronik 24CO2 EEPROM incircuit auslesen?


von Alex (Gast)


Lesenswert?

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

von Hp M. (nachtmix)


Lesenswert?

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.

von Stefan K. (stefan64)


Lesenswert?

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

von Hp M. (nachtmix)


Lesenswert?

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.

von Alex (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

@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.

von Peter D. (peda)


Lesenswert?

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.

von Alex (Gast)


Lesenswert?

@ 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.

von Stefan K. (stefan64)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

@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 :-)

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
Noch kein Account? Hier anmelden.