SD karte als configfile?

Hallo,

Kennt jemand ne gute lib mit der ich eine SD karte als "Configurationsspeicher" nutzen kann...

eine lib mit funktionen welche dennen eines EEPROMs nahe kommen suche ich genauer gesagt...

kennt jemand was in die richtung?

value = SD.read(minvalue);
SD.Write(minvalue, 0);

sowas in der art..

bräuchte für einen Logger im 5-10 Sekunden takt solche möglichkeiten... Mein externen EEPROM am Arduino DUE zerleg ich ansonsten so ratzfatz...

mpl1337:
Hallo,

Kennt jemand ne gute lib mit der ich eine SD karte als "Configurationsspeicher" nutzen kann...

eine lib mit funktionen welche dennen eines EEPROMs nahe kommen suche ich genauer gesagt...

kennt jemand was in die richtung?

value = SD.read(minvalue);
SD.Write(minvalue, 0);

sowas in der art..

bräuchte für einen Logger im 5-10 Sekunden takt solche möglichkeiten... Mein externen EEPROM am Arduino DUE zerleg ich ansonsten so ratzfatz...

Ich verstehe den Zusammenhang in deinem Fall zwischen Logger und Kofiguration nicht.
Konfiguration ist eine Datei, die man einmalig beim Start der Anwendung, bzw. zwischendurch, wenn es notwendig ist, ausliest, oder auch schreibt.
Das Loggen erfolgt erfahrungsgemäß häufiger.
Was genau möchtest du machen?

Ok, sry kommunikationsproblem meiner Seite.

Ich will im 5 Sekunden Takt ca die uptime, andere Aktivitäten wie z.b. die einschaltdauer mehrerer ios des arduinos und Temperaturen irgendwo ablegen. 5 Sekunden... da ich nie weiß wann der arduino ausgeschaltet wird.

Und dazu noch gleich config werte welche derzeit im eeprom sind mit da reinpacken dann kann ich das eeprom komplett aus dem Projekt nehmen

Ich verstehe das auch nicht. Ein externes EEPROM hat auch eine max garantierte Schreibzyklusanzahl von 1 Million. Gleiches gilt für die Speicher in der SD Karte. Mehr Schreibzyklen verkraften FRAM oder batteriebepufferte SRAM wie sie zb bestimmte RTC haben.

Ich sehe das einfachste wenn Du auf die SD ein File schreibst/liest, worin die Konfigurationsdaten stehen.

Grüße Uwe

value = SD.read(minvalue);
SD.Write(minvalue, 0);

sowas in der art..

Was ist denn minvalue?

Nur mal geraten:

String minvalue="Minimum";

und in def config -Datei eine Zeile mit

"Minimum = -99.9"

woraufhin du in value gern den Wert -99.9 hättest ?

Ein Due ist zwar leistungsfähiger als ein "klassischer" 8-bit Arduino,
aber was du schreibst, riecht eher nach raspberry als nach µ-Controller.

Und den eeprom kannst du "unendlich" oft lesen, das sollte nicht das Problem sein.

Ja aber wenn ich alle 5 Sekunden ins eeprom einen neuen wert schiebe.

86400/5 = 17280 scheibzugriffe an einen Tag

1 Mio / 17280 = ~ 57 Tage... die es sicher speichern sollte..was danach passiert weiß keiner so richtig.. kann ja auch bis 10Mio halten.

Das ne sd Karte auch so einen "kleinen" Zyklus hat wusste ich nicht.

Flash IC ?

Ja aber wenn ich alle 5 Sekunden ins eeprom einen neuen wert schiebe.

Was hat das mit einem configfile zu tun?

Beim loggen schreibst du jeden Sektor insgesamt nur 1 Mal, bis deine 2GB voll sind...
(etwas übertrieben, wie ich es gerne formuliere, aber die Richtung sollte dir zu denken geben)

mpl1337:
Ja aber wenn ich alle 5 Sekunden ins eeprom einen neuen wert schiebe.

86400/5 = 17280 scheibzugriffe an einen Tag

1 Mio / 17280 = ~ 57 Tage... die es sicher speichern sollte..was danach passiert weiß keiner so richtig.. kann ja auch bis 10Mio halten.

Das ne sd Karte auch so einen "kleinen" Zyklus hat wusste ich nicht.

Flash IC ?

Du schreibst nicht zwingend alle 5 Sekunden ins Eeprom. Da gibt es Funktionen, die überprüfen, ob der Wert gleich dem neuen Wert ist. Ist das der Fall, wird nicht neugeschrieben.

mpl1337:
Ok, sry kommunikationsproblem meiner Seite.

Ich will im 5 Sekunden Takt ca die uptime, andere Aktivitäten wie z.b. die einschaltdauer mehrerer ios des arduinos und Temperaturen irgendwo ablegen. 5 Sekunden… da ich nie weiß wann der arduino ausgeschaltet wird.

Und dazu noch gleich config werte welche derzeit im eeprom sind mit da reinpacken dann kann ich das eeprom komplett aus dem Projekt nehmen

Kennst Du Windows .INI Dateien, die Microsoft 1990 mit Windows 3 weingeführt hat?

Das sind Konfigurationsdateien, in denen “Sections”,“Keys” und "“Values (Werte)” in einem reinen Textormat abgespeichert sind.

Beispiel:

[Files]
one=Hello
two=3.14
[Item]
user=Henry

In diesem Beispiel hätte die INI Datei zwei Sektionen: [Files] und [Item]

Innerhalb der Section [Files] gibt es zwei Keys “one” und two" mit den Werten "Hello bzw “3.14”.
und innerhalb der Section “[Item]” gibt es einen Key “user” mit dem Wert "Henry

Die Einfachheit der Struktur aus “Section, Key, Value” und das reine Textformat mit einfachenWertepaaren aus Key=Value haben dazu geführt, dass diese Art Konfigurationsdatei nach 1990 eine ganz weite Verbreitung auch außerhalb von Windows gefunden haben, und es dürfte kaum ein Betriebsssystem und eine Programmiersprache geben, wofür nicht eine STandard-Library zum Umgang mit INI Dateien fertig zur Verfügung steht. Wenn ich mich mal bei Github umschaue, scheinen auch Microcontroller ohne Betriebssystem und AVR GCC kein Ausnahme zu sein.

Auch Kommentare, eingeleitet mit Semikolon, sind bei INI Dateien möglich, und zwar sowohl innerhalb als auch außerhalb von Sektionen Beispiel:

 ;Kommentar
 [Sektion]
 ;Kommentar
 Schlüssel=Wert