Matsch hat geschrieben: ↑07.03.2023, 11:56
Es sieht nicht so aus, als würde das irgendwas bringen. Schon wieder die bekannten Ausfälle auf 2 von 3 Geräten - innerhalb von 14 h.
Wie reagiert die Firmware eigentlich auf Overflow-Signalisierung?
Nachtrag: Nach 15 h ist zeigt sich auch beim dritten Gerät wieder die bekannte Macke ...
Sehr schade, hatte gehofft das wir dem Fehler näher kommen.
Auf Overflow Signalisierung wird gar nicht reagiert.
Basierend auf GDO0 Änderung wird ein Interrupt ausgelöst der ein READ flag setzt.
Die Funktion read wird per loop ständig durchlaufen und prüft ob das READ flag gesetzt ist.
Wenn ja, wird der RX Buffer kopiert und im cc1101 zurück gesetzt.
Zum Kopieren des Buffers wird die Länge gelesen, ist die zu groß, wird nichts gelesen, sondern direkt geleert.
Ich habe ja eine ganze Weile das Overflow Flag ausgelesen - hatte bei mir aber keinen Treffer.
Kannst ja bei Dir mal das Chip Status Byte beobachten, vielleicht gibts bei Dir wirklich eine Overflow Signalisierung auf die wir reagieren können.
Edit: Ich glaube Du kannst Dir das Auslesen des Overflow Flags sparen. Für den GDO0 ist folgendes eingestellt:
Asserts when sync word has been sent / received, and de-asserts at the end of the packet. In RX, the pin will also deassert when a packet is discarded due to address or maximum length filtering or when the radio enters RXFIFO_OVERFLOW state. In TX the pin will de-assert if the TX FIFO underflows.
Fallende Flanke löst den Interrupt aus, das READ flag wird gesetzt.
Beim nächsten Poll wird der Buffer gelesen. Wegen des RXFIFO_OVERFLOW state wird die Länge auf 0 gesetzt und damit ist read auch schon beendet.
Wir brauchen eine neue Idee