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!
Benutzt Du die verlinkte Lib oder hast Du selbst was gemacht? Schickst Du die richtige Empfängeradresse mit? NetworkID passt auch?
Naja, wenn er es so wie in der Lib nutzt, ist die Empfängeradresse egal, weil die da in Software geprüft wird und die Filter vom RFM69 nicht genutzt werden... Nur wenn er es selbst umgesetzt hat ist die wichtigste Frage: Enthält das erste Byte deiner Nachricht die Länge der Nachricht?
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.
QuantumPeak schrieb: > 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: Schön! Genau deshalb bohrte ich da rein, weil ich mich vage erinnerte, dass ich da auch anfangs Schwierigkeiten hatte.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.