Entwicklung SIGNALDuino Empfänger Firm- und Hardware V4 für Maple Mini und ESP32

Begonnen von Ralf9, 13 Dezember 2019, 12:48:26

Vorheriges Thema - Nächstes Thema

Reinhard.M

Zitat von: Ralf9 am 01 Juni 2020, 11:38:33
4 Sekunden sollten eigentlich reichen, gibt es bei 4 sek noch Probleme?
Ich hatte es auf 20 Sekunden gesetzt um dein Timout von 10 Sekunden im "00_SIGNALDuiono.pm " zu überschreiten. Mit 4 sek gibt es keine Probleme dieser Art. Ich werde mal testen ob die 20 sek das Problem sind, also ob 15 sek z.B. noch funktionieren.
Zitat
Mit dem Watchdog habe ich mich noch nicht beschäftigt.
Hast Du mir mal den Code wie Du den Watchdog aktivierst?
Hast Du im Internet eine Beschreibung darüber gefunden?
Im SIGNALDuino.ino gibt es folgende Änderungen von mir:

#define WATCHDOG 1 // Der Watchdog ist in der Entwicklungs und Testphase deaktiviert. Es muss auch ohne Watchdog stabil funktionieren.

#ifdef WATCHDOG
// #include <avr/wdt.h>
//  #define WDTO 25000  // 25000 entspricht ~20 Sekunden
//  #define WDTO 5000  // 5000 entspricht ~4 Sekunden
  #define WDTO 2500  // 2500 entspricht ~2 Sekunden
  #include "wdt.h"
#endif

#ifdef WATCHDOG
/*
if (MCUSR & (1 << WDRF)) {
MSG_PRINTLN(F("Watchdog caused a reset"));
}
if (MCUSR & (1 << BORF)) {
DBG_PRINTLN("brownout caused a reset");
}
if (MCUSR & (1 << EXTRF)) {
DBG_PRINTLN("external reset occured");
}
if (MCUSR & (1 << PORF)) {
DBG_PRINTLN("power on reset occured");
}
*/
//wdt_reset();
  iwdg_feed();

//wdt_enable(WDTO_2S);  // Enable Watchdog
  iwdg_init(WDTO);
#endif

#ifdef WATCHDOG
//wdt_reset();
  iwdg_feed();
#endif

#ifdef WATCHDOG
//wdt_reset();
  iwdg_feed();
#endif


Wenn du im Code nach WATCHDOG suchst findest du die Einträge schnell. Aus dem Netz habe ich folgenden Link verwendet:
https://www.stm32duino.com/viewtopic.php?f=7&t=190&p=1350&hilit=watchdog#p1350
Für den STM32 Watchdog gibt es aber einiges mehr.

Ralf9

Danke, habe damit die Beschreibung vom watchdog gefunden
https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/IWatchdog

Hier ist die Maximal timeout definiert:
https://github.com/stm32duino/Arduino_Core_STM32/blob/master/libraries/IWatchdog/src/IWatchdog.h
// Maximal timeout in microseconds
#define IWDG_TIMEOUT_MAX    (((256*1000000)/LSI_VALUE)*IWDG_RLR_RL)



FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Reinhard.M

Dann lag ich mit meinen 20 sek ja noch locker im Range. Hatte vorhin den Code ganz vergessen:


#ifndef _WDT_H_
#define _WDT_H_

#include <stdint.h>

#define IWDG_PR_DIV_4 0x0
#define IWDG_PR_DIV_8 0x1
#define IWDG_PR_DIV_16 0x2
#define IWDG_PR_DIV_32 0x3
#define IWDG_PR_DIV_64 0x4
#define IWDG_PR_DIV_128 0x5
#define IWDG_PR_DIV_256 0x6

void iwdg_feed(void) {
  IWDG->KR = 0xAAAA;
}

void iwdg_init(uint16_t reload) {
  IWDG->KR = 0x5555;
  IWDG->PR = IWDG_PR_DIV_32;
  IWDG->RLR = reload;
  IWDG->KR = 0xCCCC;
  IWDG->KR = 0xAAAA;
}

#endif /* _WDT_H_ */

Auch mit dem 32er Vorteiler sollte der 25000er reload Wert immer noch passen.

Ralf9

ich hatte es schon befürchtet, ich habe heute auf den core 1.9.0 geupdatet, damit funktioniert das USBD_reenumerate mit dem Bootloader2.0 auch nicht :(
Der workaround mit der "USBD_reenumerate.c" funktioniert auch nicht mehr.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Telekatz

Lösch die "USBD_reenumerate.c" aus dem Projektverzeichnis. Dann funktioniert es auch mit dem core 1.9.0.

Ralf9

Hab ich gemacht, es funktioniert aber trotzdem nicht.
Ich verwende den ungepatchten Bootloader2.0 und
Board part number: Gerneric F103CB
der Maple Mini steht nicht mehr zur auswahl
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Telekatz

Bei mir ist der Maple Mini immer noch auswählbar. Das Generic F103CB ist das falsche Board.

Ralf9

Ja, ich hab den mapleMini Eintrag inzwischen auch gefunden, meine Bildschirmauflösung ist dafür anscheinend zu klein.
Das Auswahlfeld hat bei mir unten keinen Pfeil
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Meine Auflösung ist nur 1920 * 1080.

Nachdem ich den MapleMini Eintrag ausgewählt habe, funktioniert nun auch das USBD_reenumerate wieder :)
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

meier81

Hallo,

könnt ihr mir dann mal kurz helfen, habe auch auf die aktuelle V1.9.0 geupdatet, vorher lief alles einwandfrei, AdruinoIDE ist die 1.8.12.

Sketch alles gleich zu vorher, bekomme mit der 1.9.0 folgenden Fehler:

P.S.: Hab die Einstellungen noch angehängt  ;)
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

Ralf9

Beim core 1.9.0 gab es bei der Timer Interrupt Routine eine Änderung

alt
void cronjob(HardwareTimer*) {
neu
void cronjob() {


oder
#ifdef MAPLE_Mini
#if ARDUINO < 190
void cronjob(HardwareTimer*) {
#else
void cronjob() {
#endif
noInterrupts();
#else
void cronjob() {
cli();
#endif


Ich mache heute Abend einen Commit mit den Änderungen, ich habe auch vor den Watchdog einzubauen
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Reinhard.M

Zitat von: Ralf9 am 02 Juni 2020, 17:07:21
Ich mache heute Abend einen Commit mit den Änderungen, ich habe auch vor den Watchdog einzubauen
Das mit dem Watchdog höre ich gerne :)
Da ich mich im Maple-Code nicht sonderlich auskenne hatte ich keine Debug Messages für den WD hinzugefügt. Wirst du das entsprechend einfügen?

Ralf9

hab die notwendigen Änderungen für den core 1.9.0 und den watchdog commited
https://github.com/Ralf9/SIGNALDuino/commit/035416ca079c59a4ba2884f0a6372a0ac4dbaee7

Ich muß bei meinem angepassten 00_Signalduino Modul noch bei der Init Routine noch was optimieren.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

RichardCZ

https://forum.fhem.de/index.php/topic,111061.msg1060120.html#msg1060120

Im FHEM Code sind  das Zeilen 3882 und 3932 +/-1.

Der Vollständigkeit halber:

my $osv2byte = "";
$osv2byte=NULL;
$osv2byte=substr($bitData,$idx,16);

->

my $osv2byte = substr($bitData, $idx, 16);

und
my $osv3nibble = "";
$osv3nibble=NULL;
$osv3nibble=substr($bitData,$idx,4);

->

my $osv3nibble = substr($bitData, $idx, 4);


k.A. wen da was geritten hat.
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

Ralf9

ZitatIm FHEM Code sind  das Zeilen 3882 und 3932 +/-1.
Der Vollständigkeit halber:
Danke für den Hinweis, werde ich in meinem angepassten 00_Signalduino Modul korrigieren.

Sidey ist gerade dabei das 00_Signalduino Modul zu überarbeiten, da ist es schon korrigiert
https://github.com/RFD-FHEM/RFFHEM/blob/feaa3f38f3bf58db049218aa9f79eed406627bce/FHEM/lib/SD_Protocols.pm#L873

Zitatk.A. wen da was geritten hat.
Da wird sich Sidey wahrscheinlich nicht mehr daran erinnern was er da vor ca 5 Jahren programmiert hat :)



FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7