-         

Ergebnis 1 bis 9 von 9

Thema: Bei Spannungsverlust in Eeprom speichern möglich?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360

    Bei Spannungsverlust in Eeprom speichern möglich?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Habe derzeit ein Projekt mit einem Mega128, bei dem ich es gerne schaffen würde, dass einige Variablen bei einem Spannungsausfall automatisch gespeichert werden.

    Brauche ich da externe Hardware an einem Interrupt Eingang am Atmel oder gibts da eine schon vorhandene Lösung, die ich im Programm auslösen kann bei einem Spannungseinbruch? Ich programmiere in Bascom falls das etwas zur Sache tut
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Speicherung in EEPROM eines Microcontrollers (µC) ist nur bei vorhandener Versorgungsspannung (VCC) des µC's möglich. Deshalb in der Praxis wird der µC einen Puffer haben (meistens Kondensator, z.B. GoldCap mit von übriger Hardware trennender Diode), der ausreichend für Speicherung im EEPROM ist. Die zugeführte VCC muss selbstverständlig ständig überwacht werden um rechtzeitig die Speicherung zu starten.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    170
    Hi,
    Nehme an, dass in Deiner Schaltung einige C's VCC blocken, also bricht die Spannung nicht von "jetzt auf sofort" zusammen. Wenn die Zahl der Variablen
    nicht riesig ist, sollte das auf jeden Fall gehen.
    Einfacher ist natürlich, die Variablen gleich bei ihrer Änderung auch im EEPROM abzulegen, oder wenn diese nicht allzuoft verändert werden, gleich als
    EEPROM-Variable zu verwalten.
    Das Brown-Out-Flag des Mega128 kann man hier glaub ich nicht verwenden, das kann mann wohl erst nach Neustart auswerten.
    Evtl. gehts mit dem Analog-Komperator-Interrupt, an den AC-Eingang einen Spannungsteiler, Teilerspannung auf etwas unter die 5V (probieren) und
    in der ISR die Variablen sichern.
    mfg
    Achim

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    Selbst wenn er ein paar 100n um den UC verteilt hat werden die nicht reichen. Goldcap oder großer Elko sind hier der richtige Weg ( wie Picture richtig geschrieben hat.)

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    955
    Genau...definitiv ein Goldcap mit Diode, dazu ein Ladewiderstand bekommt den restlichen Bauteilen gut.

    Und dann eben per ADC die Spannung am Kondensator überwachen...

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von Accenter Beitrag anzeigen
    ... dass einige Variablen bei einem Spannungsausfall automatisch gespeichert werden ...
    Es folgt eine Meinung, kein Erfahrungsbericht.

    Versuch doch mal BOD zu nutzen. Ich würde dabei das BOD-Flag so hoch setzen dass es a) nicht zu früh anspricht, und b) noch so ein Fitzelchen Spannung da ist, um die Daten zu sichern. Suche im Datenblatt nach den entsprechenden Stellen und z.B. nach "BODLEVEL Fuse Coding". Dann gäbs noch ein "Preventing EEPROM Corruption" usf.

    Vorgehen: beim Ansprechen des BOD nachsehen, ob der Reset vom Spannungseinbruch kommt - wenn ja, dann Daten ins EEPROM sichern und den controller auf Sleep legen. Natürlich ist damit keine hundertprozentige Sicherheit gegeben, ein bisschen Risiko bleibt bestehen, weil ja nicht voraussehbar ist, wie schnell der Saft wegbricht. Aber die paar Mikrosekunden zum erkennen ob ein BOD-Fall vorliegt, Daten wegschreiben und ein Flag setzten, dass die Daten weggeschrieben wurden, sollten eigentlich in fast allen Fällen noch bleiben.
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Vorgehen: beim Ansprechen des BOD nachsehen, ob der Reset vom Spannungseinbruch kommt - ..., sollten eigentlich in fast allen Fällen noch bleiben.
    Hast Du da nicht etwas übersehen? Im Gegensatz zu einem kurzzeitigen Spannungseinbruch, welcher durchaus über's BORF festgestellt werden kann, findet im hier beschriebenen Fall ein kontinuierliches Absinken der Betriebsspannung statt. Sobald der BOD einmal ausgelöst hat, kommt der uC nicht mehr aus dem BO-Reset raus, was ja auch sinnvoll ist, um unkontrolliertes Verhalten zu vermeiden. D.h. Du hast in diesem Fall keine Möglichkeit per Code irgendwas zu sichern, da kein Code mehr ausgeführt werden kann.
    Geändert von MagicWSmoke (08.06.2013 um 08:34 Uhr)

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    170
    Hi,
    Zitat: Selbst wenn er ein paar 100n um den UC verteilt hat werden die nicht reichen. Goldcap oder großer Elko sind hier der richtige Weg
    ... ist in der Praxis mehrfach widerlegt. Es sind nicht nur die paar 100n C's um den µC, da sind noch Elkos im Netzteil, usw, das Abklingen der
    Spannung bis auf Werte bei denen man definitiv nicht mehr den EEPROM handeln sollte, kann mehrere 10ms dauern, und das reicht
    alllemal aus, um ein paar Variablen abzulegen.
    BOD nutzen hatte ich auch erwogen (s.o.) scheidet aber wie gesagt beim MEGA128 aus (Es gibt Controller bei den man BOD auf einen INT
    umleiten kann, da ginge es evtl.)
    mfg
    Achim

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von seite5 Beitrag anzeigen
    Es sind nicht nur die paar 100n C's um den µC, da sind noch Elkos im Netzteil, usw, das Abklingen der
    Spannung bis auf Werte bei denen man definitiv nicht mehr den EEPROM handeln sollte, kann mehrere 10ms dauern, und das reicht
    alllemal aus, um ein paar Variablen abzulegen.
    Es kommt darauf an, welche Verbraucher die noch vorhandene Energie in den Kondensatoren leer saugen. Wenn nur der µC angeschlossen ist und sonst nichts, mag's ausreichen sich auf die Restenergie in den vorhandenen Kondensatoren zu verlassen. Sollten hingegen zusätzliche Verbraucher dranhängen, so ist das Energie-mäßige Entkoppeln des µC über einen eigenen Versorgungskondensator und möglichst Schottky-Diode der richtige Weg. Da gibt's auch nicht viel zu diskutieren drüber, besonders da der Aufwand geringfügig ist.

Ähnliche Themen

  1. Speichern im EEProm
    Von elkokiller im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 14.12.2008, 11:09
  2. Sekunden ins EEPROM speichern bei einem ATtiny2313
    Von popi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 02.09.2008, 19:45
  3. Wert speichern bei Spannungsverlust
    Von brezelmann01 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 17.08.2008, 19:17
  4. Speichern im EEProm
    Von klaus1973 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 04.01.2008, 20:06
  5. Stringvariable in Eeprom speichern
    Von supairheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 15.05.2005, 11:35

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •