CC1101 Watchdog to recalibrate frequency synthesizer

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

Moderator: Co-Administratoren

Antworten
Horbi
Beiträge: 199
Registriert: 29.05.2019, 12:51
Hat sich bedankt: 19 Mal
Danksagung erhalten: 65 Mal

CC1101 Watchdog to recalibrate frequency synthesizer

Beitrag von Horbi » 20.01.2024, 11:58

Ich wollte nur kurz Bescheid geben, dass die CalibratedRadio Änderungen ihren Weg vom Asksin++ dev-trilu branch in den Master gefunden haben.

Hintergrund zum Problem:
Das CC1101 Funkmodul empfängt sporadisch keine Nachrichten mehr und hält den Zustand bis eine Nachricht gesendet wird, oder das Modul per Reset neu gestartet wird. Das Problem scheint nur unter bestimmten Voraussetzungen oder Einstellungen vorzukommen und wurde von mehreren Benutzern im Homematic und Fhem Forum gemeldet. Ich selbst hatte auch das Problem bei 2 von 8 STM32L152 Dimmern.

Bei der Analyse des Problems verhielt sich das Funkmodul recht normal, auch die Kommunikation über den SPI-Bus funktionierte reibungslos.
Der einzige Anhaltspunkt war, dass das FSCAL1 Register im Betrieb einen Wert kleiner 0x3F hatte und im "tauben" Zustand 0x3F.
Damit scheint auch die Ursache des Problems gefunden - das CC1101 Funkmodul kalibriert die Frequenz im Betrieb selbstständig und in vereinzelten Situationen scheint da was schief zu gehen und damit hört das Modul auf eine andere Frequenz, was zu oben beschriebenem Problem führt.

Die Ursache des Problems konnte ich nicht finden, aber zumindest einen Workaround entwickeln.
Wir fragen das FSCAL1 Register per Watchdog alle 500ms ab und falls der Rückgabewert 0x3f ist, wird der Empfangsmodus neu gestartet. Dabei wird die Frequenz neu kalibriert und das Funkmodul arbeitet wieder wie gewünscht.
Gebraucht wird diese Funktion nur bei dauerhaft empfangenden Geräten, wie Dimmer oder andere Schalt Aktoren.
Batterie Geräte gehen regelmäßig in den Schlafmodus und werden beim Aufwachen neu kalibriert, Schalter oder Sensoren haben das Problem auch nicht, da sie recht häufig senden und beim Wechsel vom Senden zu Empfangen eine Rekalibrierung auslösen.

Wie aktiviert man die Funktion? Recht einfach über den Typedef des Radios.
Ohne Watchdog:

Code: Alles auswählen

typedef Radio<RadioSPI, CC1101_GDO0_PIN> RadioType;
Mit Watchdog:

Code: Alles auswählen

typedef CalibratedRadio<RadioSPI, CC1101_GDO0_PIN> RadioType; 
Auf diesem Weg auch noch mal ein großes Danke an Marco und alle anderen die getestet haben!

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: CC1101 Watchdog to recalibrate frequency synthesizer

Beitrag von Matsch » 20.01.2024, 12:40

Sehr schön, besten Dank.
Vielleicht sollte man sagen, dass sich dies bisher nur bei netzbetriebenen Geräten (NoBattery) zeigte.

Horbi
Beiträge: 199
Registriert: 29.05.2019, 12:51
Hat sich bedankt: 19 Mal
Danksagung erhalten: 65 Mal

Re: CC1101 Watchdog to recalibrate frequency synthesizer

Beitrag von Horbi » 20.01.2024, 14:34

Matsch hat geschrieben:
20.01.2024, 12:40
Sehr schön, besten Dank.
Vielleicht sollte man sagen, dass sich dies bisher nur bei netzbetriebenen Geräten (NoBattery) zeigte.
Gerne!

Ich dachte das hätte ich hiermit gesagt:
Horbi hat geschrieben:
20.01.2024, 11:58
...
Gebraucht wird diese Funktion nur bei dauerhaft empfangenden Geräten, wie Dimmer oder andere Schalt Aktoren.
Batterie Geräte gehen regelmäßig in den Schlafmodus und werden beim Aufwachen neu kalibriert, Schalter oder Sensoren haben das Problem auch nicht, da sie recht häufig senden und beim Wechsel vom Senden zu Empfangen eine Rekalibrierung auslösen.
...

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: CC1101 Watchdog to recalibrate frequency synthesizer

Beitrag von Matsch » 20.01.2024, 15:26

Stimmt irgendwie, hab's aber leider nicht gleich so erfasst. 🤔

Antworten

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