Forum: Mikrocontroller und Digitale Elektronik AVR: EEPROM-Inhalt gefährdet?


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo,

das EEPROM der AVRs und ordentliche Resets sind ja ein Thema für sich. 
Aber ist der EEPROM-Inhalt gefährdet, wenn der AVR im ganzen Programm 
nur lesend darauf zugreift? Ich verwende es nämlich nur zur Speicherung 
von Strings und wüsste gerne ob ich einen Reset-Controller brauche, oder 
ob die übliche RC-Kombination in diesem Fall ausreicht.

Andreas

von mikki merten (Gast)


Lesenswert?

Bei den älteren AT90S und MEGA323, MEGA103 sehr zu empfehlen. Bei den 
neueren MEGA AVRs nicht mehr erforderlich, da diese über eine recht 
zuverlässige abeitende Unterspannungs-Logik verfügen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich bin bisher davon ausgegangen dass diese Probleme nur beim Schreiben 
auftreten, und dass dabei nur die zu beschreibende Speicherstelle und 
die an Adresse 0 gefährdet seien. So ähnlich steht's ja auch im Errata. 
Also ist das Lesen wohl hoffentlich unprolematisch...?

von mikki merten (Gast)


Lesenswert?

Lesen ja, aber im undefinierten Zustand schreibt der AVR schon mal recht 
wild in's EEPROM. Daher bei den älteren Controllern ein entsprechendes 
RESET IC einsetzen. Adresse 0 sollte in jedem Fall nicht genutzt werden.

von Charly (Gast)


Lesenswert?

Hi,

wenn in deinem ganzen programm kein write_ee befehl
drin ist geht es ohne ´reset´ ic, wenn nicht dann
muss ein reset-ic oder was aehnliches dran, ich selber verwende ein pnp 
und 4 widerstaende,
(ist billiger und immer ´lieferbar´)
bei meiner dimensionierung wird der reset bei
einer vcc kleiner 4volt auf low gelegt, funzzt bestens.

viele gruesse
Charly

von Peter D. (peda)


Lesenswert?

Das spielt keine Rolle.

Auch wenn Du nur lesen willst, mußt Du eine externe 
Unterspannungsüberwachung oder den internen Brown-Out benutzen.

Ich hab mal versucht eine Tabelle im EEPROM des AT90S1200 zu speichern, 
da der ja kein LPM kann.
Das ging total daneben, bei jedem Einschalten waren mehr und mehr Bytes 
zerstört. Mit nem MAX690 am Resetpin gings dann.


Peter

von thkaiser (Gast)


Lesenswert?

Ich habe seit längerem einen 2313 im Einsatz, dessen Programm nur lesend 
auf das EEPROM zugreift. Der Reset-Schaltkreis besteht aus dem 
obligatorischen Pull-Up Widerstand. Bis jetzt habe ich, trotz härtester 
Tests, keine Ausfälle im EEPROM gehabt.
Ich denke, daß das EEPROM nicht durch einen "schlechten" Reset allein 
verändert wird, sondern durch einen unbeabsichtigten Sprung in die 
Schreib-Routine. Ist keine Schreib-Routine im Programm vorhanden, wird 
das EEPROM nicht beschrieben.

von Peter D. (peda)


Lesenswert?

@thkaiser,

da hast Du Glück, vielleicht ist der 2313 auch nicht so empfindlich, wie 
der 1200 oder Du hast ne gute Charge erwischt.

Die EEPROM-Daten im 1200 waren auch dann futsch, wenn weder Schreiben 
noch Lesen erfolgte, einfach nur nach mehrmaligem Ein- und Ausschalten 
der Betriebsspannung.

Steht ja auch so in der Atmel Note AVR180:

"Without a Detector, random CPU activity such as described in the 
introduction may ini-tialize
an unintended write to the non-volatile memory. This may cause random
corruption of the memory contents."


Beim 2313 kann man konstante Daten ja besser im Flash ablegen, da der 
LPM kann.


Peter

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich verwende den 2333, der hat ja einen internen Brown-Out-Detektor. 
Taugt das was für den beschriebenen Anwendungszweck? Mit welcher 
Programmersoftware setzt man die entsprechenden Fusebits am besten?

LPM wird in meiner Anwendung leider schon von einer zeitkritischen 
Interruptroutine verwendet, da bleibt keine Zeit den Z-Pointer 
umzuladen. Die beste Lösung wäre wahrscheinlich, die Strings zu Beginn 
vom Flash in den RAM zu laden und später von dort zu lesen.

von mikki merten (Gast)


Lesenswert?

@andreas
Bei den AT90S (alte 0.5µ Technik) gibts es etliche Probleme mit dem 
Brown-Out. Daher ist hier in jedem Fall eine externe RESET-Schaltung 
vorzuziehen.

Ersetze den 2333 doch durch einen MEGA8. Der ist fast 100% kompatibel, 
bietet einen erweiterten Befefhlssatz und verfügt über einen 
funktionierenden Brown-Out.

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.