LazyConfig / EEPROM usage

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

FUEL4EP
Beiträge: 197
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 35 Mal
Danksagung erhalten: 19 Mal

Re: LazyConfig

Beitrag von FUEL4EP » 02.01.2021, 22:32

Hi papa,

vielen Dank!

Mit
https://github.com/pa-pa/AskSinPP/blob ... vice.h#L66

kann ich erst mal starten.
Vielleicht sollten wir hier mal ne Methode machen, die das ausrechnet und einfacher zu nutzen ist.
Das wäre super, wenn Du das machen könntest :D :D
Zuletzt geändert von FUEL4EP am 02.01.2021, 22:50, insgesamt 1-mal geändert.
Grüße

Ewald

jp112sdl
Beiträge: 7645
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 413 Mal
Danksagung erhalten: 886 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 22:34

@Ewald: Wie viel Bytes benötigst du denn?

Ich persönlich finde 45 Bytes schon recht viel und fülle den restlichen EEPROM-Bereich immer mit einer maximal passenden Anzahl an PEERS PER CHANNEL

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

FUEL4EP
Beiträge: 197
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 35 Mal
Danksagung erhalten: 19 Mal

Re: LazyConfig

Beitrag von FUEL4EP » 02.01.2021, 22:47

Hi Jérôme,

wenn ich das richtig in Erinnerung habe, brauche ich knapp 110 Bytes. Ich ging da nicht sehr sparsam damit um.
Da ich ohnehin eine ATmega1284P mit 4kByte EEPROM verwende, ist ausreichend freier EEPROM Speicherplatz kein Problem.

Gute einfach zu benutzende Methoden für die Nutzung von persistenten Daten im EEPROM sind sicherlich für viele Applikationen sehr hilfreich.
Grüße

Ewald

jp112sdl
Beiträge: 7645
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 413 Mal
Danksagung erhalten: 886 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 22:57

FUEL4EP hat geschrieben:
02.01.2021, 22:47
brauche ich knapp 110 Bytes.
Oh, okay.
FUEL4EP hat geschrieben:
02.01.2021, 22:47
Da ich ohnehin eine ATmega1284P mit 4kByte EEPROM verwende, ist ausreichend freier EEPROM Speicherplatz kein Problem.
Ja, da ergibt das Anhängen "hinten dran" schon Sinn!
FUEL4EP hat geschrieben:
02.01.2021, 22:47
Gute einfach zu benutzende Methoden für die Nutzung von persistenten Daten im EEPROM sind sicherlich für viele Applikationen sehr hilfreich.
Welche z.B.?
Bisher hat hier niemand danach gefragt oder sowas umsetzen wollen :wink:

Zumindest wollte ich bisher nichts außerhalb eines Kanals oder Geräts (also List1/List0) ablegen - mit Ausnahme des Wasserzählers (4 Byte uint32 Zählerstand)

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

FUEL4EP
Beiträge: 197
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 35 Mal
Danksagung erhalten: 19 Mal

Re: LazyConfig

Beitrag von FUEL4EP » 02.01.2021, 23:21

Hi Jérôme,
Welche z.B.?
Bisher hat hier niemand danach gefragt oder sowas umsetzen wollen
Konkret speichere ich zur Zeit für den Luftgüte-Sensor HB-UNI-Sensor1-AQ-BME680 im EEPROM Autokalibrierungs- und statistische Parameter ab.
Ich beabsichtige, die Regressions- und Statistiksoftware dieses Sensors noch weiter auszubauen. Auch neuronale Netze will ich mal antesten.

Grundsätzlich kann ich mir viele Sensoren vorstellen, die umfangreiche Statistiken schon im Sensorknoten betreiben. Konkret sind in Planung:
- Sensor für Radioaktivitätsmessung (Stand: Hardware steht, Software ist noch zu entwickeln).
- Sensor für Feinstaubmessung (Stand: Hardware gekauft, Hardware ist noch aufzubauen, Software ist noch zu entwickeln)
Grüße

Ewald

jp112sdl
Beiträge: 7645
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 413 Mal
Danksagung erhalten: 886 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 23:28

FUEL4EP hat geschrieben:
02.01.2021, 23:21
- Sensor für Feinstaubmessung (Stand: Hardware gekauft, Hardware ist noch aufzubauen, Software ist noch zu entwickeln)
Kannst gern das hier als Vorlage nehmen :
https://github.com/jp112sdl/HB-UNI-Sen-DUST
FUEL4EP hat geschrieben:
02.01.2021, 23:21
Grundsätzlich kann ich mir viele Sensoren vorstellen, die umfangreiche Statistiken schon im Sensorknoten betreiben
Je nachdem wie häufig du ins EEPROM schreiben willst, musst du schauen, dass du es nicht "kaputtschreibst".

Für den Wasserzähler habe ich daher extra einen FRAM eingesetzt, da ich nach jedem Zählimpuls (1 Liter) sofort speichere.
https://www.reichelt.de/fram-4-kb-512-x ... 46571.html
❐ High-endurance 100 trillion (1014) read/writes
❐ 151-year data retention (See the Data Retention and Endurance table)
Vielleicht wäre so etwas besser für solche Zwecke

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

papa
Beiträge: 549
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 63 Mal

Re: LazyConfig

Beitrag von papa » 02.01.2021, 23:28

Was bräuchte man denn alles ?

Habe jetzt mal ne neue Klasse UserStorage eingeführt. Diese kann einfach genutzt werden, um den freien EEPROM zu nutzen.

https://github.com/pa-pa/AskSinPP/blob/ ... age.h#L505

Die Nutzung ist ganz einfach

Code: Alles auswählen

uint8_t b = sdev.getUserStorage().getByte(offset);
oder z.B. innerhalb eines Channels durch

Code: Alles auswählen

device().getUserStorage().setByte(offset,data);
Wenn andere Read/Write Methoden noch gebraucht werden - einfach nen PullRequest machen :-)
Anfragen zur AskSin++ werden nur im Forum beantwortet

FUEL4EP
Beiträge: 197
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 35 Mal
Danksagung erhalten: 19 Mal

Re: LazyConfig

Beitrag von FUEL4EP » 02.01.2021, 23:47

Hi papa,

das übertrifft ja meine kühnsten Erwartungen: Die neuen Methoden sind schon da :D :D :D

Hilfreich wäre noch eine Methode, um ein Struct ins EEPROM zu schreiben, bzw. aus dem EEPROM zu lesen. Dann kann ein ganzer Parametersatz mit einem Befehlsaufruf geschrieben bzw. gelesen werden. In EEPROM.h können z.B. beliebige Objekte abgelegt werden: EEPROM Put; EEPROM Get.
Grüße

Ewald

papa
Beiträge: 549
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 63 Mal

Re: LazyConfig

Beitrag von papa » 02.01.2021, 23:58

Habe noch

Code: Alles auswählen

  void setData (uint16_t offset,uint8_t* buf,uint16_t size) {
    storage().setData(getAddress()+offset,buf,size);
  }

  void getData (uint16_t offset,uint8_t* buf,uint16_t size) {
    storage().getData(getAddress()+offset,buf,size);
  }

  template <class T>
  void setData (uint16_t offset,const T& obj) {
    setData(offset,(uint8_t*)&obj,sizeof(T));
  }

  template <class T>
  void getData (uint16_t offset,T* obj) {
    getData(offset,(uint8_t*)obj,sizeof(T));
  }
hinzugefügt.
Anfragen zur AskSin++ werden nur im Forum beantwortet

FUEL4EP
Beiträge: 197
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 35 Mal
Danksagung erhalten: 19 Mal

Re: LazyConfig

Beitrag von FUEL4EP » 03.01.2021, 00:04

Ausgezeichnet !!!!!

Vielen herzlichen Dank für die ultra schnelle Lösung zur schon nächtlichen Zeit!
Grüße

Ewald

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“