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?
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
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.
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.
1. Reset-Baustein DS1813 von Dallas, jetzt Maxim 2. 24LC65 serielles EEprom mit einer Page die bis zu 10.000.000 Schreibzyklen abkann.
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 :-).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.