www.mikrocontroller.net

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


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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...?

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Charly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.