AskSinPP: Message zu kurz

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

Moderator: Co-Administratoren

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

AskSinPP: Message zu kurz

Beitrag von stan23 » 26.07.2021, 14:22

Hi,

seit langer Zeit habe ich das Problem, dass sich mein HB-LC-Dim5PWM-CV auf STM-Basis immer wieder aufhängt, aktuell rund ein Mal pro Woche.
Dann blinkt die rote LED auf dem BluePill schnell und lässt sich nur durch einen Reset wiederbeleben.

Das CC1101 hatte ich schon mal getauscht und eine unsaubere Lötstelle festgestellt, davor war das Problem etwas öfters zu sehen.

Nun hängt am BluePill seit einiger Zeit ein alter RasPi und immer, wenn nach meinem stündlichen Test-Ping eine Kommunikationsstörung gemeldet wird, schaue ich dort auf die serielle Konsole.

Hier sieht man jeweils die vorletzte und die letzte Message.
Auffällig ist dass die Länge jeweils 06 ist, was aber zu kurz für eine komplette Message ist, sondern nur bis inkl. der Sender-Adresse reicht. Die restlichen Bytes stehen dann noch im Empfangspuffer.

Die lange Ausgabe liegt an dieser Zeile:

Code: Alles auswählen

DHEX(buffer()+9,length()-9);
weil die Längenangabe 6 - 9 = -3 --> 253 ist.
Trotzdem werden nur 172 Byte ausgegeben. Womöglich stößt der STM da an eine Speichergrenze die zu einer Zugriffsverletzung führt, und bleibt deswegen hängen.
-> 21 10 00 8E 6681D2 B32C7C 11 F9 83 18 29 19 5C DF 5C 57 52 8C 18 B0 5D 26 F6 B3 2F A2 3F B9 F1 1F - 164369346
-> 06 66 81 D2 B32C7C B32C7C 11 F9 83 18 29 19 5C DF 5C 57 52 8C 18 B0 5D 26 F6 B3 2F A2 3F B9 F1 1F 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 54 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 05 00 00 00 01 00 00 00 20 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08


-> 1B 10 00 8E 578170 B32C7C 00 01 33 0E A5 37 BD 54 0D C2 77 33 2C 72 D0 CA 8B 2B - 950548765
-> 06 57 81 70 B32C7C B32C7C 00 01 33 0E A5 37 BD 54 0D C2 77 33 2C 72 D0 CA 8B 2B 7A 0E 00 20 6F 69 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 48 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 05 00 00 00 01 00 00 00 16 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08


-> 14 10 00 8E B32C7C 6681D2 1F 88 94 B1 E0 C3 50 E6 04 6E 65 - 1381785689
-> 06 B3 2C 7C 6681D2 6681D2 1F 88 94 B1 E0 C3 50 E6 04 6E 65 00 00 00 70 11 00 20 7A 0E 00 20 6F 69 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 52 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 04 00 00 00 01 00 00 00 34 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08


-> 1E 10 00 8E 6681D2 B32C7C 11 F9 A6 58 81 C5 F5 F2 13 FA F3 9F 6D 76 78 01 A2 0D E0 9B 25 - 87616783
-> 06 66 81 D2 B32C7C B32C7C 11 F9 A6 58 81 C5 F5 F2 13 FA F3 9F 6D 76 78 01 A2 0D E0 9B 25 20 6F 69 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 48 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 05 00 00 00 01 00 00 00 32 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08


-> 1E 10 00 8E 6681D2 B32C7C 11 F9 CE A3 1D 5F DE 6E ED 76 C2 19 F3 4C CE 53 03 95 D1 50 9B - 1968091696
-> 06 66 81 D2 B32C7C B32C7C 11 F9 CE A3 1D 5F DE 6E ED 76 C2 19 F3 4C CE 53 03 95 D1 50 9B 20 6F 69 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 4A 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 05 00 00 00 01 00 00 00 12 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08


<- 0F 7A A2 10 DD882F 2D7DD5 06 05 00 00 5A 00 - 581391065
-> 06 66 81 D2 B32C7C 000000 00 00 2D 00 00 00 69 68 00 08 00 00 00 00 70 11 00 20 7A 0E 00 20 6F 69 00 08 22 00 00 00 25 25 00 08 48 0E 00 20 34 0E 00 20 05 00 00 00 48 0E 00 20 5A 00 00 00 01 00 00 00 4F 0E 00 20 03 51 00 08 00 00 00 00 34 0E 00 20 20 10 00 20 BD 51 00 08 34 0E 00 20 2D 7D D5 20 00 00 00 00 2C 0D 00 20 00 00 00 00 01 00 00 00 00 00 00 00 77 52 00 08 D8 4F 00 20 C0 0C 00 20 06 00 00 00 5E 4F 00 20 05 00 00 00 01 00 00 00 34 00 00 00 A7 9E 00 08 59 A1 00 08 21 70 00 08 D1 6F 00 08 11 08 00 08
B32C7C ist übrigens die Adresse des HmIP-RF-Funkmoduls.

Zum Test habe ich mal diese Änderung eingebaut, damit werden die Pakete die zu kurz sind auf eine Länge von 0 Byte gesetzt und fallengelassen:
https://github.com/pa-pa/AskSinPP/commi ... dd7f86950b
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: AskSinPP: Message zu kurz

Beitrag von papa » 27.07.2021, 11:03

Mach mal nen Pull Rquest, wenn das stabil funktioniert. Scheint ja eine HmIP spezifische Message zu sein.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 27.07.2021, 11:58

Offenbar tritt das wesentlich öfter auf, denn auf der seriellen Schnittstelle sehe ich
Msg too short: 6
Msg too short: 6
Temp: 240
immer wieder mal durchlaufen.
Wie diese Message den CRC-Check passiert ist mir noch nicht klar.
Oder die Länge von 6 ist doch nur ein Fehler nach der Luftschnittstelle.


Gerade habe ich noch einen Test gemacht:
Wenn ich meinen HmIP-PSM per WebUI umschalte, bekomme ich immer eine 6-Byte-Message-Warnung.
Der AskSinAnalyzer zeigt diese auf der Sniffer-Ausgabe aber gar nicht an.

Entweder die Nachricht gibt es in der Form tatsächlich nicht, oder sie wird in einem weiteren Schritt verworfen.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 31.07.2021, 16:38

Inzwischen bin ich etwas weiter in meiner Analyse 8)

Meine 3 HmIP-Aktoren machen alle ein "kurzes ACK" auf eine HmIP-Message, schicken dann eine normale Message zurück an die Zentrale die wiederum ein "kurzes ACK" gibt.
Möglicherweise ist das bei HmIP normal, und uns nur deshalb unbekannt weil Frank Graß es nicht auf seinen Folien gezeigt hat 8)

So sehen Messages aus (alle ohne Preamble, Syncword und CRC)

Code: Alles auswählen

BidCoS:     LEN | CNT | TYPE | FLAGS | S | S | S | R | R | R | 1..17 Byte Payload
HmIP:       LEN | MAC | MAC  | MAC   | S | S | S | R | R | R | 1..23 Byte Payload
HmIP-ACK:   LEN | R   | R    | R     | S | S | S
Interessant ist hier dass die Senderadresse an der gleichen Stelle bleibt, während die Empfängeradresse nach vorne rutscht.

Im Normalfall ist das für die AskSinPP kein Problem, denn die Messages mit Länge=6 werden in Device.h pollRadio( ) verworfen.

In den sechs aufgezeichneten Fehlerfällen wartet mein Gerät allerdings auf eine Antwort, und in Device.h waitResponse( ) gelten alle Messages mit einer Länge größer als 0.

Ob das Problem welches zum Aufhängen führt tatsächlich am response.dump( ) liegt oder am darüber liegenden send( ), kann ich momentan nicht erkennen.
Interessanterweise blinkt die LED im Fehlerfall schnell, allerdings gefühlt deutlich schneller als die 500 bzw. 600 ms die in der Schleife bei send( ).


Ob ich das Problem tatsächlich forcieren kann weiß ich noch nicht, da müsste mein Test-Aktor auf eine Antwort der Zentrale warten, während ein HmIP-Gerät ein kurzes ACK schickt. Vermutlich stößt da eher der DC an seine Grenzen als dass ich das genau treffe.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 31.07.2021, 17:00

Vielleicht ist es ja in Zukunft für den AskSinAnalyzer interessant diese kurzen ACKs anzuzeigen.
Hier ist meine erste Version zur Unterstützung in der AskSinPP:

https://github.com/pa-pa/AskSinPP/commi ... 1bb4a33f48
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 31.07.2021, 17:54

stan23 hat geschrieben:
31.07.2021, 16:38
Ob ich das Problem tatsächlich forcieren kann weiß ich noch nicht, da müsste mein Test-Aktor auf eine Antwort der Zentrale warten, während ein HmIP-Gerät ein kurzes ACK schickt. Vermutlich stößt da eher der DC an seine Grenzen als dass ich das genau treffe.
War doch nicht so schwierig:
- Test-Aktor nur aus Zentrale löschen
- Wartezeit erhöhen
- während der Aktor nach dem Boot versucht, seinen Status an die Zentrale zu schicken, einen HmIP-Aktor schalten
- serielle Konsole beobachten
-> 06 66 81 D2 B32C7C 6681D2
-3 bytes payload:
0x20004F66=1F
0x20004F67=F6
0x20004F68=7E
0x20004F69=08
0x20004F6A=7D
0x20004F6B=A0
0x20004F6C=D1
...
0x20004FFC=11
0x20004FFD=08
0x20004FFE=00
0x20004FFF=08
0x20005000=

Meine Vermutung war also richtig
stan23 hat geschrieben:
26.07.2021, 14:22
Womöglich stößt der STM da an eine Speichergrenze die zu einer Zugriffsverletzung führt, und bleibt deswegen hängen.
8)
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von TomMajor » 31.07.2021, 19:31

stan23 hat geschrieben:
31.07.2021, 17:54
Meine Vermutung war also richtig
stan23 hat geschrieben:
26.07.2021, 14:22
Womöglich stößt der STM da an eine Speichergrenze die zu einer Zugriffsverletzung führt, und bleibt deswegen hängen.
8)
Hey Marco, Respekt für deine Hartnäckigkeit 8)

zum Thema Serial buffer, das ist abhängig davon welcher USART Treiber genau und was der als buffer reserviert.
Falls du wie ich die Arduino_STM32 Library einsetzt (im Board Manager "Arduino SAM Board .. Cortex-M3") sollte man hier die buffer sizes vergrößern können:
https://github.com/rogerclarkmelbourne/ ... #L380-L386
Das file ist bei mir im "hardware" Verzeichnis des Arduino Systems.
Default ist je 64 Byte.
Viele Grüße,
Tom

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 31.07.2021, 19:56

TomMajor hat geschrieben:
31.07.2021, 19:31
Hey Marco, Respekt für deine Hartnäckigkeit 8)
Moment, ich erinnere dich an deine Worte:
TomMajor hat geschrieben:
12.12.2020, 19:41
stan23 hat geschrieben:
12.12.2020, 08:36
weil ich mit dem STM-Dimmer immer wieder Probleme hatte da er sich einfach aufhängt...
ich habe die STM32F1 und F4 Serie früher im beruflichen Umfeld mit diversen RTOS eingesetzt und fand die immer sehr stabil und mit hervorragenden On-Chip Komponenten.
Nur als Anregung - vielleicht wäre es zielführender zu versuchen die SW-Probleme zu debuggen und zu lösen anstatt gleich eine neue HW zu entwickeln?
:mrgreen:


Der Überlauf hat nichts mit der seriellen Ausgabe an sich zu tun.
DHEX (pointer, length) läuft hier einfach zu weit, weil die Länge mit 6-9=-3 übergeben wird

Code: Alles auswählen

  inline void DHEX(const uint8_t* b,uint8_t l) {
    for( int i=0; i<l; i++, b++) {
      DHEX(*b); DPRINT(F(" "));
    }
  }
Es kommt also auf das Glück des Compilers und die CPU-Archtiektur an, ob hinter Message response noch genug lesbarer Speicher ist oder nicht. Die Message an sich hat ja nur 42 Bytes.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von TomMajor » 31.07.2021, 20:59

stan23 hat geschrieben:
31.07.2021, 19:56

Moment, ich erinnere dich an deine Worte:
Oh Mann, ich hoffe ich bin nicht Schuld am Zeit versenken für das Problem :roll:

Hatte deine Infos nur aus dem Augenwinkel mitgelesen ohne mich in jedes Detail reinzudenken, und da ich früher auch seltsame USART Fehler hatte der Hinweis mit dem buffer.
ich kann mich z.B. an einen Fehler erinnern wo eine Stelle beim USART FIFO Handling nicht atomar war und das sorgte für relativ seltene aber lästige Fehler..
DHEX(buffer()+9,length()-9) ist natürlich auch blöd bei Längen <9, aber zum Glück einfach zu fixen.
Viele Grüße,
Tom

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 577 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: AskSinPP: Message zu kurz

Beitrag von stan23 » 01.08.2021, 15:05

TomMajor hat geschrieben:
31.07.2021, 20:59
Oh Mann, ich hoffe ich bin nicht Schuld am Zeit versenken für das Problem :roll:
Keine Sorge, das hat am Ende echt Spaß gemacht und mich an meinen früheren Job erinnert :)
TomMajor hat geschrieben:
31.07.2021, 20:59
...Stelle beim USART FIFO Handling nicht atomar war und das sorgte für relativ seltene aber lästige Fehler..
DHEX(buffer()+9,length()-9) ist natürlich auch blöd bei Längen <9, aber zum Glück einfach zu fixen.
Der eigentlich Fix ist es, Messages unter 10 Byte zu ignorieren und vor allem nicht auszudrucken.
Doch auf dem Weg zu dieser Erkenntnis musste ich erstmal herausfinden woher diese vermeintlich zu kurzen Messages kommen und habe in dem Zug gleich noch die Unterstützung dafür in die AskSinPP eingebaut.
Vielleicht kann man diese später im Analyzer mit anzeigen.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Antworten

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