RFM69 868 MHz Funkmodul empfängt korrupte Daten

Gast #5343946
Lesenswert?
• ▲
▼
Hallo zusammen,

ich bin jetzt schon seit mehreren Tagen dabei, zu versuchen, eine 
Funkstrecke zwischen zwei RFM69CW-Funkmodulen (868MHz Variante) 
aufzubauen.
Der Sender scheint einwandfrei zu funktionieren, wohingegen der 
Empfänger zwar über entsprechende Konfiguration des DIO0-Pins anzeigt, 
dass der RSSI-Wert einen festgelegten Treshold (-86 dB) beim Senden 
überschreitet, aber PayloadReady im IRQFlags2 (0x28) Register trotzdem 
nicht setzt.

Beide Module werden exakt gleichermaßen über folgende Konfiguration 
initialisiert:

https://github.com/LowPowerLab/RFM69/blob/dcda86fb903c06bb09d2fea0c3612bed2d18ddc4/RFM69.cpp#L46-L82

Die Daten werden über SPI auch korrekt übertragen, wie ich mit einem 
Logik-Analyzer überprüft habe.

Beim Empfänger-RFM69 kann ich allerdings kein PayloadReady-Interrupt 
über DIO0 oder per Polling im IRQFlags2-Register(0x28) feststellen, was 
für mich unerklärlich ist.

Wenn ich CRC deaktiviere (RF_PACKET1_CRCAUTOCLEAR_OFF in 
REG_PACKETCONFIG1 setzen) und den RSSI-Wert auf -114dB (Standard) setze, 
erhalte ich unregelmäßig und unabhängig vom Sender manchmal ein 
PayloadReady-Interrupt. Im FIFO sind dann allerdings irgendwelche 
zufälligen Daten zu finden, die nichts mit dem zu tun haben, was ich 
gesendet habe.

Um letztendlich beim Empfänger PayloadReady feststellen zu können, frage 
ich koninuierlich das IRQFlags2-Register ab und lese dann den FIFO aus, 
wenn das PayloadReady-Bit gesetzt ist.

Als Antenne verwende ich einen lambda/4 Kupferdraht.

Ich würde mich sehr über jegliche Anregungen freuen, was ich noch 
versuchen könnte, da mir langsam die Ideen ausgehen.
Sehr gerne kann ich alle möglichen weiteren Informationen liefern, die 
zur Lösung des Problems beitragen könnten!
Gast #5345028
Lesenswert?
• ▲
▼
Danke für die Tipps!

Ich habe aus verschiedenen Gründen selbst ein Programm geschrieben. Die 
Länge der Nachricht stimmt auch. Eure Vorschläge haben mich aber auf 
eine weitere Idee gebracht, die sich als Lösung herausstellte:

Das Library versendet ja eigentlich nach dem Length-Byte mindestens mal 
4 Bytes, nämlich EmpfängerID, SenderID, ein Steuerbyte und dann 
mindestens ein frei wählbares Byte. Ich habe mir gedacht, ich brauche 
dieses Steuerbyte nicht, und habe es aus meiner Implementierung 
weggelassen. Da im Datenblatt steht, man benötige nach den Adressen 
mindestens nur ein Byte, habe ich auch zum Testen nur erst einmal 1 Byte 
Nutzlast nach den Adressen verschickt.

Wie es aussieht, muss man allerdings mindestens 2 Bytes versenden! Dann 
klappt alles einwandfrei, inklusive CRC!

Vielen Dank nochmal für die Hilfe. Ich hoffe, ich kann hiermit auch noch 
Weiteren helfen, bei denen das gleiche Problem auftritt.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.