Daten nach reset erhalten

Hey leute!

Ich würde gerne Daten, die sich während meinem Programmdurchlauf verändern, nach einem reset des Arduinos noch erhalten haben.

ist das irgendwie möglich?

Grüsse

Jonas

Mit Hilfe des internen EEPROMS des Arduinos würde das gehn.
Wie oft und wann wird den resettet?

danke, das war schonmal sehr hilfreich! :slight_smile:

würdest du due EEPROM - Library empfehlen?

eeem.

Der Arduino dient als Konsole auf der Einstellungen getroffen werden können. Wenn man ihn halt nicht braucht, dann stellt man ihn ab, um Batterien zu sparen.

"Wie oft und wann?" -> schwierig zu Antworten :smiley:

Wenn der Arduino als Konsole diehnt dann hat es selbst keine Daten sondern ist nur ein interface für die Eingabe und Ausgabe. Was soll er denn dann sich merken?
Die Daten müssen von der Anwendung kommen.
Grüße Uwe

Hallo, möglicherweise wäre ein externes EEPROM wie 24LC256 (Mitte der Seite) eine Überlegung wert.

Wenn die maximal möglichen Schreibzyklen erreicht sind, kann man ein externes EEPROM leicht ersetzen.

Ja, die EEPROM Library ist empfehlenswert, da zuverlässig und sehr einfach zu bedienen.

Gruß Chris

Addi2438:
Wie oft und wann wird den resettet?

Hallo,

das ist völlig belanglos, da man das EEPROM beliebig oft lesen kann. Entscheidend ist die Frage wie oft sich die Daten ändern und wie bzw. wie oft die Schreibroutine gestartet wird. Wenn man das so löst daß die Daten mit einem speziellen "save" Kommando sozusagen manuell abgespeichert werden dann habe ich absolut keine Sorgen in Bezug auf das EEPROM. Man könnte das auch automatisieren in dem man z.B. die Daten jedesmal dann ins EEPROM sichert wenn sie sich eine bestimmte Zeit nicht verändern. Zyklisch mit kurzen Taktraten ins EEPROM zu schreiben wäre aber sehr schlechter Programmierstiel, egal ob extern oder intern.

Christian

Moin,
ich bin davon ausgegangen, dass er die Daten jedesmal speichern will, bevor der Controller
resettet, desshalb auch die Frage, da sich daraus die Anzahl der Schreibvorgänge ergibt ;).

Hallo,

ein interessanter Ansatz, vor dem Reset noch schnell zu speichern. Nur nach meiner Vorstellung wird das mit der Arduino Hardware schwierig. Wenn man auf den Knopf drückt oder die Spannung abstellt dann ist es bereits zu spät. Einzig bei Reset Auslösung per Software (über den Watchdog) könnte das gehen indem man zuerst speichert und dann den WDT nicht mehr zurücksetzt bis er auslöst.

Um etwa bei Spannungsausfall noch schnell zu speichern benötigt man zusätzliche Hardware, z.B. großen Kondensator zur kurzfristigen Pufferung und zusätzliche Erkennung (per Diode o.ä. vom C entkoppelt)

Christian

Hallo Christian,
aufgrund Deiner Beschreibung ist mir nicht klar, welches Ereignis den Reset auslöst. Knopfdruck, Spannungsausfall ...

Darum zwei Ideen "ins Blaue" ohne Erfahrungen meinerseits:

  1. Eine kleine USV mittels Batterie/Akku.
  2. Speichern der Daten auf eine SD-Karte (ich höre gerade Musik von einer).

ich habe zwei arduinos. das eine gilt als konsole, das andere ist in einem mobilen fahrzeug. nun möchte ich über die konsole regelparameter des mobilen fahrzeuges einstellen, die nicht verloren gehen dürfe, auch wenn ich beide Arduinos vom strom nehme.

meint ihr das geht, wenn ich einfach immer auf den EEPROM schreibe, wenn ich die parameter verändert habe? oder ist das dann schon viel zu viel?

die idee mit der SD-Karte hatte ich auch schon. nur dachte ich mir, das es da vielleicht eine schon integrierte lösung gibt.

Wenn du deine Regelparameter vielleicht ein paar hundertmal anpasst, stellt das noch kein Problem dar. Du solltest eben bei der Programmierung darauf achten, dass du nicht permanent auf das interne Eeprom schreibend zugreifst.

OK.

Danke euch!

"An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it."

Dann ist wohl das das einzige worauf man achten muss.