EEPROM bei PIC16F690

Hallo,

im Datenblatt des PIC16F690 ist bezgl. Write EEPROM ein Hinweis auf „Specification D124,
D120, D120A“ angegeben. Außerdem ist dort die Rede von „refresh“ EEPROM.
Könnte mir jemand sagen, wo ich diese specifications finde, und wann und wie der EEPROM
„refreshed“ werden muss?
Ich habe bisher 2 Zellen im EEPROM schätzungsweise 10**7 mal gelesen und beschrieben
ohne dass Fehler aufgetreten sind. Was müsste ich in Zukunft beachten?
Vielen Dank für Eure Hinweise!

Viele Grüße von Ph33

Hallo

Könnte mir jemand sagen, wo ich diese specifications finde,

D12x sind parameter im Datenblatt selber (im Anhang hinten, einfach per PDF-Suche)

und wann und wie der EEPROM „refreshed“ werden muss?

Ich vermute aus dem Kontext, dass „Alle auslesen und dann erneut speichern“ gemeint ist.

Ich habe bisher 2 Zellen im EEPROM schätzungsweise 10**7 mal
gelesen und beschrieben

Lesen zählt nicht.

ohne dass Fehler aufgetreten sind. Was müsste ich in Zukunft beachten?

versuchen, die Schreibvorgänge zu minimieren (geschickte wahl der Daten, Komprimierung, Intervalle verlängern, NV-Ram des Uhrenchips nutzen (falls einer vorhanden ist :wink:

Gruß
achim

Hallo Achim,
danke für die rasche Antwort, die Spezifikationen habe ich jetzt alle gefunden. Beim Lesen hat sich eine ganz andere Frage ergeben:
Ich benutze zwei EEPROM-Zellen zum Speichern von Zählergebnissen, die über längere Zeiten (Monate) anfallen. Auch bei Stromausfall sollen diese Ergebnisse nach POR noch erhalten bleiben. Ist dafür eigentlich erforderlich, EEPROM zu verwenden? Könnte ich dafür
nicht auch Speicherzellen, z.B. mit den Adressen x020 und x021 in Bank 0 benutzen, oder werden die bei POR vom Rechner her vorbesetzt, z.B. gelöscht?
Für einen Tipp wäre ich dankbar!
Viele Grüße von Ph33

Auch Hallo,

zwar kenne ich den 690 noch nicht, arbeite z.Z. „nur“ mit den 87x. Bei denen verlieren die 0x020 und 0x021 die Daten oftmals schon gleich beim abschalten. Manchmal bleiben sie für 2 - 3 Stunden drin, manchmal kommen dann auch verstümmelte Daten raus, also da verschwinden einzelne Bits.
Auch wenns etwas länger dauert, würde ich den EEPROM nutzen.

Erstmal Grüße, jo_enn

Hallo,

ohne Strom kein Memoryerhalt in statischem Ram

Welche register wie aus dem POR kommen, steht im Datenblatt (0, 1 der unbestimmt)

Das speichern über Stromaufall muss im EEPROM geschehen (oder statischem Ram mit batteriepuffer, oder …)

Es stellt sich die Frage, wie „aktuell“ der Zählerstand beim Stromausfall sein muss. Meist entfallen ja auch die Ereignisse während der Strom weg ist, so dass man z.B. pro Stromausfall 100 dazu addiert für den Worst case, oder oder… . Dann kann man im Umkehrschluss auch tolerieren, dass man seltener abspeichert, z.B. nur wenn (neue Ereignisse * Minuten seit letzer Speicherung) > 20 ist.

Ganz wichtig ist natürlich, dass man wirklich nur dann genau die Speicherstelle neu schreibt, die sich auch wirklich geändert hat. Ich habe schon Code gesehen, der zyklisch alles immer wieder neu schrieb. Wobei ich mir natürlich sicher bin, dass dies bei Dir nicht der Fall sein wird.

Gruß
achim

Hallo,
danke für Eure Hinweise, jo-enn und wilbert. Ich habe inzwischen nachgelesen, dass die GP-Register in RAM-Technik ausgeführt sind und (bei Wikipedia) dass das Speichern nur bei vorhandener Versorgungsspannung funktioniert. Also EEPROM!
Viele Grüße von Ph33

Hallo Ph33,

prinzipiell kann man auch die Eingangsspannung Überwachen und die Versorgungsspannung des PICs mit einem Stützkondensator versehen, so dass erst bei Einbruch der Eingangsspannung ins EEPROM geschrieben wird.

Die Überwachung kann je nach Takt und Kondensator durch AD-Wandler-Einlesen als auch durch einen Komparator auf Interrupteingang erfolgen.

Gruß
achim

Hallo wilbert,

Hallo Ph33,

prinzipiell kann man auch die Eingangsspannung Überwachen und
die Versorgungsspannung des PICs mit einem Stützkondensator
versehen, so dass erst bei Einbruch der Eingangsspannung ins
EEPROM geschrieben wird.

die Idee ist neu für mich, aber ich finde sie gut. Über die schaltungstechnische Realisierung muss ich noch nachdenken. Der Stromverbrauch des PIC ist ja nicht ohne, je nachdem wieviele LEDs gerade an sind. Vielleicht kann man ausnutzen, dass der Lade-Elko von einigen mF bei 12 Volt vor dem 7805 den Betrieb noch eine Weile aufrecht erhält. Allerdings müsste man dann wohl den Spannungseinbruch am Netztrafo extra messen. Mal sehen, welche Ideen mir da noch kommen…

Die Überwachung kann je nach Takt und Kondensator durch
AD-Wandler-Einlesen als auch durch einen Komparator auf
Interrupteingang erfolgen.

Gruß
achim

Viele Grüße von Ph33

Hallo Ph33,

prinzipiell kann man auch die Eingangsspannung Überwachen und
die Versorgungsspannung des PICs mit einem Stützkondensator
versehen, so dass erst bei Einbruch der Eingangsspannung ins
EEPROM geschrieben wird.

die Idee ist neu für mich, aber ich finde sie gut. Über die
schaltungstechnische Realisierung muss ich noch nachdenken.

Die Idee ist steinalt :wink:

Man kann z.B. direkt nach dem Gleichrichter eine Diode in Serie schalten.
Dann hast du direkt am Gleichrichter eine pulsierende Gleichspannung. Diese überwacht man dann auf Spannung und Zeit, so kann man dann sogar den Ausfall einer einzelnen Halbwelle erkennen.

Man kann an diesem Punkt auch nur einen kleinen Kondensator einfügen und dann nur die Spannung überwachen.

Normalerweise steuert man dann den NMI des Prozessors an, damit das Powerfail-Signal nicht durch das Programm verzögert werden kann.

Nicht vergessen die CPU, nach der Rettung in Tiefschlaf zu versetzen.

Ein Watch-Dog ist auch noch hilfreich. Ein Spannungseinbruch kann stattfinden ohne das die Spannung so weit absinkt, dass ein Reset ausgelöst wird, dann muss der Watch-Dog die CPU wieder aufwecken.

MfG Peter(TOO)