Guten Abend, ich hoffe jemand kann mir beim Raspberry Pi mit OS12 Bookworm helfen.
Ich habe mir eine kleine C++ App für den Raspberry Pi und dessen CLI erstellt.
Ich polle hier zwei LoRa-Funkmodule (434 und 868 MHz / RFM98 und RFM95). Diese sind auf dem SPI und verwenden den CS0 sowie CS1 (Pin 8 und Pin 7) sowie DIO0 und DIO1 (hier 25/24 und 16/12). Verwende die RadioLib von JGromes: https://github.com/jgromes/RadioLib
Das merkwürdige: Ich muss den CS0 und CS1 mit "RADIOLIB_NC" initialisieren, weil der RPi-Kernel wohl die Pins besetzt. Zusätzlich kann ich die DIO0 und DIO1 nicht abfragen. Ich muss also die Module pollen um zu erkennen ob Daten anliegen. Daher ist hier kein CAD (channel activity detection) möglich. Auch kein interruptgesteuerten Aufruf der Empfängerroutine über DIO0. DIO0 wird vom Modul hier nicht gesetzt. Kommt ein Paket, bleibt es 0. Brücke ich den GPIO mit 3v3, so geht der Eingang auf high. GPIO 25: level=0 func=INPUT pull=DOWN GPIO 25: level=1 func=INPUT pull=DOWN
(gekürzt) raspberry@raspberrypi:~/LoRaHAM $ raspi-gpio get BANK0 (GPIO 0 to 27): GPIO 25: level=0 func=INPUT pull=DOWN GPIO 24: level=0 func=INPUT pull=DOWN GPIO 16: level=0 func=INPUT pull=DOWN GPIO 12: level=0 func=INPUT pull=DOWN
Die IOs sind also auf Pull-Down und müssen high werden, sobald DIO einen Interrupt auslöst.
Was ist der Grund, weshalb ich hier die DIO0 und DIO1 nicht ausgelöst bekomme?
Quellcode anbei
Anmerkung: in Python geht es!