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

LazyConfig / EEPROM usage

Beitrag von FUEL4EP » 02.01.2021, 16:25

Frohes Neues Jahr!

LazyConfig funktioniert, wie hier im Forum schon diskutiert, nur bei einem angelerntem Sensor.
Beim Wechseln der Batterien oder beim Drücken des Resetknopfs verliert der Arduino Prozessor die Kenntnis über die Adresse der angelernten CCU/RaspberryMatic.

Wo wird die Adresse der angelernten CCU/RaspberryMatic gespeichert?

Ist es möglich, diese Adresse (und vielleicht andere für LazyConfig notwendige Information) im EEPROM des Arduino Prozessors abzuspeichern und nach einem Reset wieder zurückzulesen?
Zuletzt geändert von FUEL4EP am 03.01.2021, 18:48, insgesamt 1-mal geändert.
Grüße

Ewald

jp112sdl
Beiträge: 7611
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 410 Mal
Danksagung erhalten: 880 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 16:35

FUEL4EP hat geschrieben:
02.01.2021, 16:25
Wo wird die Adresse der angelernten CCU/RaspberryMatic gespeichert?
Im EEPROM
FUEL4EP hat geschrieben:
02.01.2021, 16:25
Beim Wechseln der Batterien oder beim Drücken des Resetknopfs verliert der Arduino Prozessor die Kenntnis über die Adresse der angelernten CCU/RaspberryMatic.
Erstes ist seltsam... dann ist irgendwas mit deinem AVR nicht in Ordnung oder mit dem Sketch.
Zweites ist so gewollt ("Werksreset") - aber auch nur beim "ganz lange gedrückt halten"

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, 17:16

Hi Jérôme,

danke für Deine Antwort.

In welcher EEPROM Adresse wird die CCU Adresse gespeichert?
Welcher Prozess schreibt die Information ins EEPROM?

Dann hab ich einen Anhaltspunkt, wo ich suchen muss.
Vielen Dank im Voraus!
Grüße

Ewald

jp112sdl
Beiträge: 7611
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 410 Mal
Danksagung erhalten: 880 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 17:20

FUEL4EP hat geschrieben:
02.01.2021, 17:16
In welcher EEPROM Adresse wird die CCU Adresse gespeichert?
Das weiß ich nicht. Damit habe ich mich nie detailliert befasst, da das alles im Hintergrund beim Pairing sauber abläuft und bei über 50 Geräten noch nie Probleme machte

Was genau passiert denn bei deinem Sketch?
Du kannst ja mal die Ausgaben der Startsequenz im seriellen Monitor zeigen

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, 18:34

Hi Jérôme,

danke. Da meine betroffenen Sensoren zur Zeit alle in einem Langzeittest laufen, den ich nicht unterbrechen will, hier eine allgemeine Rückfrage:

Gibt in der Startsequenz im seriellen Monitor der Bereich hinter "Address Space" den von AsksinPP belegten EEPROM Bereich an?
Hier ein willkürlich aus dem Forum herauskopierte Startsequenz als Beispiel:

Code: Alles auswählen

12:21:47.121 -> AskSin++ V4.1.7 (Dec 25 2020 10:19:44)
12:21:47.121 -> Address Space: 32 - 940
Ich benutze für die Speicherung von Sensorparametern auch das EEPROM des Arduino.
Woher bekomme ich im C Code den noch freien EEPROM Adressbereich?
Wie kann ich EEPROM-Speicher allokieren (Gibt es eine Art 'malloc' für EEPROM Speicher)?
Grüße

Ewald

jp112sdl
Beiträge: 7611
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 410 Mal
Danksagung erhalten: 880 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 18:49

FUEL4EP hat geschrieben:
02.01.2021, 18:34

Code: Alles auswählen

Address Space: 32 - 940
Ab Byte 32 (0x20) liegen die Peerings und Listenparameter.
und - 940 liegt noch im Rahmen (von max 1024 beim 328P)
FUEL4EP hat geschrieben:
02.01.2021, 18:34
Ich benutze für die Speicherung von Sensorparametern auch das EEPROM des Arduino.
Da im EEPROM auch eine "magic" (erste 4 Bytes) und Checksumme abgelegt und auch beim Start geprüft werden, darfst du im EEPROM nicht einfach irgendwo was hinschreiben.
Du musst dafür die Methoden aus der Storage.h verwenden.

Ansonsten hast du nämlich genau dein Problem - der Speicherbereich im EEPROM wird bei jedem Neustart neu initialisiert und alles (CCU Pairing, Peerings, ListX) ist weg.

Code: Alles auswählen

uint8_t valueToSave = 0x00;
uint8_t cfgByte = 0x02; //Byte 0 und 1 sind für CONFIG_FREQ1 und CONFIG_FREQ2
StorageConfig sc = device().getConfigArea();
sc.setByte(cfgByte, valueToSave);
sc.validate();
und lesen mit

Code: Alles auswählen

uint8_t value = sc.getByte(cfgByte)
Ich hoffe, ich hab das so richtig zusammengefasst.
Ansonsten muss pa-pa mal intervenieren

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, 18:56

Hi Jérôme,

danke, das hilft schon mal sehr gut. Wir sind dem Täter auf der Spur: Er sitzt ca. 50 cm vor meinem Bildschirm :D

Gibt es ein Beispielsketch, wo ich die Methoden von Storage.h im Einsatz studieren kann?

Ich habe (fälschlicherweise) meine EEPROM-Parameter ab der Adresse 100 abgelegt, ohne die Methoden aus der Storage.h zu verwenden. Danke für den Tipp. Er wird nun umgesetzt.
Grüße

Ewald

jp112sdl
Beiträge: 7611
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 410 Mal
Danksagung erhalten: 880 Mal
Kontaktdaten:

Re: LazyConfig

Beitrag von jp112sdl » 02.01.2021, 19:34

FUEL4EP hat geschrieben:
02.01.2021, 18:56
Gibt es ein Beispielsketch, wo ich die Methoden von Storage.h im Einsatz studieren kann?
Im DUMMY-BEACON-V2 habe ich das verwendet:
https://github.com/jp112sdl/HB-UNI-Sen- ... #L408-L452

Dort speichere ich den "Enabled"-Status eines jeden Kanals (1 Byte für 8 Kanäle).

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, 19:49

Perfekt!

Vielen herzlichen Dank!
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, 22:19

Im vom Jerome vorgeschlagenen ConfigArea sind aber nur für 45 Byte Platz.
Hier ist der Code für doe Berechnung der letzten genutzen EEPROM Adresse.

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

Im Prinzip die Adresse des letzten Channels + seiner Größe. Dahinter kannst Du den EEPROM nutzen - wie Du willst.

Vielleicht sollten wir hier mal ne Methode machen, die das ausrechnet und einfacher zu nutzen ist.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Antworten

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