Hi,
wir rätseln im OpenKNX Team gerade etwas über einen change:
https://github.com/OpenKNX/knx/commi...9278af4074eff8
mike ich denke der ist von dir. Ggf kannst du was dazu sagen.
Oder thesing
konkret
fragen wir uns warum der buffer verworfen wird (eventuell fehlerhafte telegramme würde man ja über CRC erkennen.
Weiterhin gehen wir davon aus, dass der Wert 7 für eine plattform mit einem 8Byte Rx-Buffer gemacht ist, oder?
Gerade bei größeren Werten (z.B. 32Byte bei RP2040) könnten ja im bufer noch mehrere gültige telegramme enthalten sein, selbst WENN man einen Überlauf erkennt.
wir rätseln im OpenKNX Team gerade etwas über einen change:
https://github.com/OpenKNX/knx/commi...9278af4074eff8
mike ich denke der ist von dir. Ggf kannst du was dazu sagen.
Oder thesing
konkret
Code:
if (_platform.uartAvailable() > OVERRUN_COUNT)
{
print("input buffer overrun: "); println(_platform.uartAvailable());
enterRxWaitEOP();
break;
}
Weiterhin gehen wir davon aus, dass der Wert 7 für eine plattform mit einem 8Byte Rx-Buffer gemacht ist, oder?
Gerade bei größeren Werten (z.B. 32Byte bei RP2040) könnten ja im bufer noch mehrere gültige telegramme enthalten sein, selbst WENN man einen Überlauf erkennt.


) und es dauerte nochmal 2 Wochen für uns beide, die Problemstelle zu finden. Es geht also keinesfalls darum, dass bei jedem loop irgendwo 5-10ms verbraten werden. Es geht darum, dass es bei Telegramm-Bursts zu Fehlern kommen kann. Der Anfangsverdacht war auch der, dass 2 unabhängige Kanäle sich doch "irgendwie" beeinflussen. Also durchaus ein ernsthafter Fehler, den ich unbedingt verfolgen wollte, da er für ein nichtdeterministisches Verhalten sorgt -> für ein Logikmodul der Supergau. Nach der Untersuchung zeigt sich, dass im Stack einfach Telegramme verloren gehen. Und das "nur", weil kein ACK gesendet werden konnte.
Kommentar