Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

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

Moderator: Co-Administratoren

FUEL4EP
Beiträge: 407
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 62 Mal
Danksagung erhalten: 49 Mal

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 30.10.2021, 21:05

Ja, die al53.init Routine läuft in der Tat länger, hab da aber bisher nicht mit gestoppt:

Es werden

Variablen initialisiert
ADS115 initialisiert
S35770 initialisiert
1 Sekunde (!!) gewartet
16384 Testpulse auf den I2C-Zähler ausgegeben und das Zählergebnis geprüft

Also das dauert > 1 Sekunde :( . Das wird ja auch nur sehr selten durchlaufen.

Kann das die Ursache sein? Die doppelte Initialisiert würde das ja vielleicht erklären: Neuer Versuch, wenn rechtzeitig keine Antwort kommt.

Dann muss ich wahrscheinlich die Übergabe der neuen Kanalparameter von dem einmaligen Initialisieren trennen.
Zuletzt geändert von FUEL4EP am 30.10.2021, 21:08, insgesamt 1-mal geändert.
Grüße

Ewald

jp112sdl
Beiträge: 9823
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 619 Mal
Danksagung erhalten: 1471 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 30.10.2021, 21:06

FUEL4EP hat geschrieben:
30.10.2021, 21:05
Kann das die Ursache sein?
Möglich wäre es. Kommentier die Zeile

Code: Alles auswählen

      al53.init((uint16_t)this->getList1().alarm_level_counts_per_measurement_interval(), (int32_t)this->getList1().alarm_level_moving_average()); // set threshold levels for alarm signals as channel parameters
mal aus, dann wirst du ja sehen, ob die Übertragung einwandfrei klappt.

VG,
Jérôme ☕️

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

FUEL4EP
Beiträge: 407
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 62 Mal
Danksagung erhalten: 49 Mal

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 30.10.2021, 21:14

Bingo, das war's. Du bist einfach genial. Vielen Dank!

Das war nun wirklich kniffelig :D

Das Auseinandertröseln des Init-Prozesses ist jetzt nur noch Arbeit :D
Zuletzt geändert von FUEL4EP am 31.10.2021, 09:05, insgesamt 2-mal geändert.
Grüße

Ewald

jp112sdl
Beiträge: 9823
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 619 Mal
Danksagung erhalten: 1471 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 30.10.2021, 21:20

Ich hätte wohl das al53.init() in einen extra Alarm gepackt und diesen 2 Sekunden nach dem configChanged() laufen lassen.
FUEL4EP hat geschrieben:
30.10.2021, 21:05
1 Sekunde (!!) gewartet
Und feste Delays sind immer mist, wenn bidirektional kommuniziert wird.

VG,
Jérôme ☕️

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

FUEL4EP
Beiträge: 407
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 62 Mal
Danksagung erhalten: 49 Mal

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 30.10.2021, 21:43

Jupp, Delays sind Mist. Hinterher ist man immer schlauer. Ich hab heute wieder was gelernt! Zuerst hab ich in der völlig falschen Ecke nach der Ursache für das Fehlverhalten gesucht. Danke nochmals, dass Du wirkliche Ursache sehr schnell erkannt hast. Das macht immer wieder Spaß, diese großartige Unterstützung durch Dich zu bekommen.


Nachtrag 31. Oktober 2021: Das Update der Kanalparameter geht nach der Einführung einer kurzen 'al53.update_channel_parameters()' Methode, die ausschließlich die Kanalparameter in der Sensorklasse updated und sonst nichts. Diese wird nun von configChanged() aufgerufen:

Code: Alles auswählen

    void configChanged() {
      DPRINTLN(F("Config Changed: List1"));
      DPRINT(F("alarm level counts per measurement interval : ")); DDECLN(this->getList1().alarm_level_counts_per_measurement_interval());
      DPRINT(F("alarm level moving average                  : ")); DDECLN( (double)(this->getList1().alarm_level_moving_average()) / 100.0 );
      al53.update_channel_parameters((uint16_t)this->getList1().alarm_level_counts_per_measurement_interval(), (int32_t)this->getList1().alarm_level_moving_average()); // set threshold levels for alarm signals as channel parameters
    }
Grüße

Ewald

Antworten

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