Hallo Zusammen,
Setze ein serielles EEPROM ein, aus dem nach dem Einschalten Daten ausgelesen werden. Wird zu diesem Zeitpunkt ausgeschaltet, so kann es zu Schreibvorgängen kommen ( nicht beabsichtigt ). Wie können diese verhindert werden ? Der Write Protect Pin ist auf GND geklebt. Frage :
Wenn ich WP nun mit einem Portpin manipuliere, ist das wirklich eine sichere Verbesserung ? Ggf. zappelt diese Leitung ebenso kurz vor dem Ende und läßt einen Schreibvorgang zu. Kleiner Kondensator gegen Versorgung mit Widerstand ?
Eine Langfristige Lösung ( mit Redesign ) denke ich mir mit einer Reset-Schaltung, die die CPU vorwarnt. Ist aber momentan nicht vorhanden.
Freue mich über alle Vorschläge und Tips !
Freundlichst,
Uwe P.
Hallo Uwe,
um welchen Typ EEPROM handelt es sich?
Gruß
Dieter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Einfach einzubauen, professionell, teuer, sicher : ein Spannungsüberwachungsbaustein z.B. von Maxim (Max692 und viele andere).
Unter 4.75 V wird der Prozessor angehalten und /WE-Impulse sicher unterbunden bis herab zu 0V (! das ist mit Hausmitteln garnicht so trivial!).
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Dieter
24 LC256, seriell, 8 Pins
Freundlichst,
Uwe P.
Hallo Reinhard,
Danke für den Tip fürs Redesign.
Aktuell suche ich aber nach einer Lösung, die in die bestehende Hardware eingelötet werden kann ( Sprich geringster Aufwand ).
Freundlichst,
Uwe P.
(! das ist mit Hausmitteln garnicht so trivial!).
–> Hatte mal eine Schaltung mit Low-voltage-erkennung, die der MPU einen Interrupt lieferte, um die Daten zu sichern ( Habe ich hier aber nicht eingebaut )
Hallo Uwe,
Wenn Du Diene Daten garnicht mehr ändern willst, dann einfach WP (Pin7) auf VCC-Legen. einfach hochlöten und mit Lötklecks an Pin 8 (VCC), auch bei professionellen Schaltungen durchaus üblich (als Patch!)
Bei IIC (24-er Reihe) ist leider kein Softwareschutz vorhanden (Befehlsreihenfolge die einzuhalten ist) Im Gegensatz zum SPI (25-er) ist ein korrekter IIC-Frame aber auch schwieriger einzuhalten. In der Praxis sollte ein fehlgeleiteter Schreibzugriff durch Power down sehr selten auftreten. Wenn doch, dann ist Deine Idee mit Spannungs-Warnung und WP-PIN am Controller richtig und gut…
Bei uns war aber meist einer der folgenden Fehler die eigentliche Ursache für Datenverlust:
- Unterbrechung der Schreibroutinen durch Interupts (Schreibroutine in Schreibroutine)
- Programm-Fehlfunktionen
- Page-Überlauf im EEPROM
- Inkonsistente Daten durch mangelndes Konzept
gegen diese Fehler hilft auch kein noch so geschickt gewählter WP-Mechanismus.
Wenn man nicht 100% sicherstellen kann, dass der Prozessor während eines Schreibvorgangs keinen Reset bekommt, kann eine Page immer inkonsistent sein. Bei Spannungsreset hilf da eine aureichend dimensionierte Vorwarnung (bei Resetschwelle + X-Volt), bei z.B. Watchdog-Reset hilft i.d.R. garnichts.
Dementsprechend sollte man bei EEPROMS die im Betrieb mit kritischen Daten beschrieben werden eigentlich jede Page durch eine Checksumme sichern. Ebenso sollte jede Page vor dem Überschreiben kopiert werden, um im Fehlerfall noch diese Kopie zu haben. Leider erfordert dass mehr oder weniger komplexe Verfahren, die in einfacher Ausführung auch noch das Problem haben, häufig auf eine Page zu schreiben.
Gruß
achim