mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ausschalt-Erkennung


Autor: hammer_c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

ich möchte, daß mein AVR jedes mal wenn er ausgeschaltet wird noch ein
paar Einstellungen im EEPROM speichert. Hatte mir das irgendwie so
vorgestellt, daß an einem Eingangs-Pin die normale Versorgungsspannung
anliegt und der Zustand des Pins im AVR die ganze Zeit gepollt wird.
Sobald der Pin Low geht soll er dann halt in die EEPROM-Schreib-Routine
hüpfen. Das setzt natürlich vorraus, daß der AVR noch ein paar
Millisekunden am leben erhalten wird (z.B. mit Elko vor VCC). Ist das
möglich? Wie macht man sowas oder gibt es einen anderen Weg?

danke,

ciao christian

Autor: Jonas Merz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

deine Idee ist schon ganz gut, nur dass sie so noch nicht funktionieren
würde, weil auch der Elko die Spannung für deinen Portpin aufbringen
würde.

Eine einfache Diode dazwischen und das ganze sollte so funktionieren.
Du musst nur einen Elko nehmen, der eine Kapazität hat, die groß genug
ist, alle Daten noch sicher im EEPROM zu sichern.

Problematisch könnte sein, dass das EEPROm sich nicht unendlich oft
beschreiben lässt. Das kommt dann auf die Anwendung an, ob es sinnvoll
ist ...

Ein anderer Weg wäre, einfach einen Ausschalter mit einem Portpin zu
verbinden und bei Betätigung des Tasters alle Daten abzuspeichern und
anschließend mit einem anderen Portpin die Stomversorgung zu
unterbrechen (z.B. über ein Relais, ...)

Gruß Steffen

Autor: hammer_c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha, vielen dank schon mal! werde ich mal testen...

ciao christian

Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So eine selbsterhaltende Schaltung mit einem Relais wäre wohl die beste
lösung wenn es nicht so unbedingt auf die Anzahl der Ausgänge ankommt.
Da der Controller dann die Daten auch ganz sicher ins EEprom schreibt.

Autor: hammer_c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin!

so, also die Lösung mit der Diode wird wohl nicht funktionieren denk
ich... da bleiben von meinen 5V versorgungsspannung nicht mehr genug
für den controller übrig...

die eeprom-wiederbeschreibbarkeits-problematik wollte ich eigentlich
möglichst minimieren, indem nur die daten weggeschrieben werden, die
sich auch wirklich geändert haben... und so oft wird man an dem gerät
vermute ich die einstellungen nicht ändern...

die geschichte mit dem relais habe ich nicht ganz verstanden... gut, es
gibt einen aus-schalter, der bewirkt das der controller alles
abspeichert und sich selber danach per relais die stromversorgung
kappt... nur wie wird das ganze wieder angeschaltet? ...

ciao christian

Autor: Dieter Götz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es empfiehlt sich nicht, die 5V-Spannung über Kapazitäten zu puffern.
Bei einem Netzausfall fällt diese Spannung zu schnell auf die
Resetspannung. Besser ist es, eine höhere Spannung zur Pufferung zu
verwenden, z.B. 24V. Auf jeden Fall muss vor dem Pufferkondensator eine
Diode zum Pin der Versorgungsspannung liegen. Sonst entlädt sich der
Kondensator eventuell über das Netzteil.

Um die Störempfindlichkeit zu minimieren würde ich ein RC-Glied an den
Portpin empfehlen. Sonst führt jeder Störimpuls auf der Leitung zum Pin
zum Speichern der Daten.

Die Lösung mit dem Schalter funktioniert leider nicht, wenn die
Versorgungsleitung gezogen wird.

Um die Anzahl Schreibvorgänge auf das EEPROM zu optimieren, kann man
das EEPROM quasi in Sektoren aufteilen. Bei jedem Schreibvorgang wird
der Sektorschreibzähler um eins erhöht. Ist die maximale Anzahl
Schreibvorgänge in diesem Sektor erreicht, dann einfach auf den
nächsten Sektor umschalten.

Zur zusätzlichen Sicherheit kann noch eine CRC-Summe mit eingebaut
werden. Dadurch lässt sich nach dem Einschalten feststellen, ob das
letzte Speichern erfolgreich war.

Nun viel Spass beim Umsetzen.

Autor: Björn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal einen Schaltplan gepostet so sollte das dann gehen.

Autor: Mark de Jong (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich würde die versorgungs spannung vor dem regler messen,
und wenn er unter einen gewissen wert geht,
die einstellungen speichern.

Wenn der ELKO nach der regler gross genug ist, hast Du noch ausreichend
zeit zum speichern.

Zusetzlich die daten im EEPROM mit einen CRC sichern,
wenn einen CRC fehler beim starten detectiert wird,
standaard werte aus dem ROM/FLASH nehmen. (wie Dieter auch schon
sagte)

Grüße Mark.

Autor: Sebastian Wille (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

und als Tip noch 'ne Freilaufdiode zwischen 1 und 2!

Sebastian

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
die Spannung vor dem Regler messen und überwachen ist wohl am besten
geeigent und die Entkopplung  des µP vom Netzteil mit einem Transistor
vornehmen, da gibt es keinen Spannungsabfall. Ich benutze zur Setup
Speicherung ein FRAM (25C020 währe allerdings ein zusätzliches
Bauteil), daß ist im Gegensatz zum EEPROM extrem schnell(100nS) und
unterliegt keinen max Schreibzyclen.

MfG  Manfred Glahe

Autor: hammer_c (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

danke an euch alle, das waren schonmal ein paar ziemlich gute tips!
...

@dieter; das eeprom in sektoren aufzuteilen hört sich gut an. wenn das
funktionieren soll, dann müssen die maximalen schreibzugriffe ja pro
speicherzelle gelten und nicht gleich für das gesamte eeprom. ist das
so?

@manfred; unbegrenztes schreiben hört sich natürlich verlockend an.
allerdings scheinen die teile a) ziemlich teuer zu sein, b) ziemlich
groß (>=DIL32...) und c) für meine zwecke auch ziemlich
überdimensioniert (>=1Mbit). muß eigentlich lediglich maximal 16 Bytes
sichern. laut dieter könnte ich also mein 512Byte-EEPROM in 32 Sektoren
aufteilen. wenn diese laut atmel-datenblatt ca. 100000 mal beschrieben
werden können ergibt das insgesamt 3.2Mio schreibzugriffe. geht man
davon aus, daß man das gerät z.B. durchschnittlich 4 mal am Tag an- und
ausschaltet und auch jedes mal die config ändert, ergibt sich eine
lebensdauer von ca. 2200 Jahren. das sollte reichen :)

ciao christian

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@christian
 8 polig SOT23, SPI BUS, 256 Byte, (32KB Type ca. 10 EUR)

MfG  Manfred Glahe

Autor: Dieter Götz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die maximal zulässigen Schreibzugriffe auf das EEPROM gelten pro
Speicherzelle.

Gruß
Dieter

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.