Servus allerseits
Den RFM95W setzen wir seit Jahren ein und hatten damit noch nie irgendwelche Probleme.
Bis ich vor ein paar Tagen bei einem Prototype den RFM nicht von der Produktion abzweigte, sondern eines aus meinem eigenen Lagerbestand benutzte. An die Bezugsquelle kann ich mich nicht mehr errinern; aber sie sind gegurtet und unterscheiden sich optisch nicht von den anderen.
Resultat: die Kommunikation klappte nur halbwegs: das Gerät konnte zwar seine Nachricht absetzen, war dann aber blockiert, bis der Watchdog eingriff. Ich war dermassen erstaunt, dass ich den Techniker anrief und ihn fragte, ob er schon mal einen defekten RFM95W habe auswechseln müssen. Nein, hatte er noch nie müssen.
Also das Ding ausgewechselt und die Kommunikation klappte wieder. Um dann ein paar Tage später wieder zu bocken. Beim Debuggen sah ich dann, dass der RFM zwar die internen Flags korrekt setzte, aber kein Interrupt-Signal generierte. Als ich dann mit dem Oszi den DIO-0 Pin kontrollierte, sah ich das Signal. Sehr sauber, so als ob man es mit Stift und Linear gezeichnet hätte. Aber sein Pegel war nur 1,5V (SPI-Signale hingegen 3.3V). Alle anderen Geräte, die ich von der Serien-Produktion erhalten hatte, hatten am DIO-O ein 3.3V Pegel.
Alles in allem habe ich 3 RFMs ausgewechselt, bis ich auf die glänzende Idee kam, diesbezüglich mal das Datenblatt zu konsultieren. Und dort stand zu meinem Erstaunen "Digital output level high min. 0.9V"
Um die Tests nicht zu blockieren habe ich den Code dahingehend abgeändert, dass ich nun die Flags abfrage. Und weil in LoRa die Sende- und Empfangs-Zeiten doch recht gemütlich sind und das Ganze mit RTOS läuft, habe ich auch keinerlei Performanseinbussen. Aber schön ist es nicht.
Dem DIO-Ausgang werde ich nun einen Transistor spendieren, damit ich in Zukunft Ruhe habe. Aber wohl ist mir bei der Sache nicht. Fast tendiere ich dazu, beim Polling zu bleiben. Denn im Internet konnte ich sowas ähnliches nicht finden, und selbst eine Anfrage bei der KI hat nichts gebracht.
Meine 2 Fragen:
- Habe ich irgendwas übersehen?
- Wie würdet Ihr jetzt weiter vorgehen?
