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
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.
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...?
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.
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
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
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.
@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
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.