Forum: Mikrocontroller und Digitale Elektronik Werte im EEROM speichern im Betrieb - geht das?


von Christoph Kukulies (Gast)


Lesenswert?

Meine Anwendung (AT90S2313) soll einen Kalibrierungswert permanent
speichern und bei Neueinschalten geich wieder vorfinden, so daß
diese Kalibrierung nicht jedesmal ausgeführt werden muß.

Geht das mit dem AVR Instruktionssatz oder muß ich da eine
Batteriepufferung einführen oder was müßte ich machen?

von anfänger (Gast)


Lesenswert?

also du kannst schon im internen eeprom des controllers daten ablegen.
allerdings ist dieser nicht ganz verschleißfrei (laut datenblatt
100.000 schreib-/lösch-zyklen). also solltest du das nicht all zu oft
machen. nimm lieber ein externes eeprom (zum beispiel mit i2c). die
sind meist "länger haltbarer" (mehr als 1.000.000 zyklen).

alle angaben ohne gewähr

von crazy horse (Gast)


Lesenswert?

Dazu kommt, dass gerade bei den classic AVR die Daten  im EEPROM nicht
besonders sicher aufgehoben sind, beim Abschalten kann es passieren,
das Daten willkürlich verändert werden.
Lösung: ordentlicher Reset-Baustein oder eine Software-Lösung:
Werte 3fach Abspeichern, bei Programmstart alle 3 Werte lesen,
vergleichen, ist einer anders, diesen wieder durch den Wert der beiden
anderen Zellen ersetzen.
Keinesfalls regelmässig in die EEPROM-Zellen schreiben, vorher
kontrollieren, der Wert sich überhaupt geändert hat, wenn nicht, das
Schreiben unterlassen.
Lässt sich dennoch eine hohe Schreibrate nicht verhindern, gibts noch
die Möglichkeit, die jeweils aktive Zelle "wandern" zu lassen,
natürlich muss dann auch der Zeiger auf die jeweils aktiven Zellen mit
gesichert werden, ebenso muss ein Zyklenzähler realisiert werden.
Natürlich verringert sich durch solch ein Verfahren die Anzahl der
verfügbaren Datenzellen drastisch. Wenn du aber nur ein paar Werte
sichern willst, lässt sich da allerhand machen.

von Christoph Kukulies (Gast)


Lesenswert?

jsgps: Was meinst Du mit "ordentlichem Resetbaustein"?

Gibt es da was mit serieller Programmierung bzw. Ein/Auslese?
Ich will ja keine aufwendige Ram-Interfaceschaltung bauen, die noch
weitere Pins belegt.

von Elektrolurch (Gast)


Lesenswert?

1. Reset-Baustein DS1813 von Dallas, jetzt Maxim
2. 24LC65 serielles EEprom mit einer Page die bis zu 10.000.000
Schreibzyklen abkann.

von crazy horse (Gast)


Lesenswert?

Tja, ein Reset-Baustein ist ein Reset-Baustein, z.B. TL7705.
Liefert ein sauberes Reset-Signal sowohl beim Einschalten als auch beim
Absinken der Versorgungsspannung. Die interne Reset-Schaltung bei den
classic-AVR ist nicht ausreichend für sicheren Betrieb. Das betrifft
einmal die fehlerhaften EEPROM-Daten, ausserdem kann es passieren, dass
unter bestimmten Bedingungen der MC gar nicht startet
 Bei den Megas und Tinys ist es besser gelöst.
Vielleicht wartest du noch, bis der Tiny2313 endlich kommt, in 4 Wochen
soll ich meine erste Lieferung endlich bekommen :-).

von E-D (Gast)


Lesenswert?

Meine Lieblings-Reset-Schaltung ist der ZSM560.
Du kannst ja den Controller über nen Elko puffern, sodaß er noch
einigte 10ms nach Spannungsausfall weiterlebt. Über den internen
Komparator realisierst Du eine Power-Fail-Erkennung.
Solange kein Power-Fail erkannt wird, schreibst Du den Kalibrierwert in
RAM, erst beim 'Power-Fail' kopierst Du die Zelle in interne E2P.
Beim einschalten liest du wieder den E2p-Wert und schreibst diesen
wieder ins RAM.

Der Maxim 691 Reset-Baustein hat auch eine Power-Fail-erkennenung,
allerdings mußt du irgendwie den µC bis zum speichern am Leben
erhalten.

VG ED

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.