das Abfragen eines Eingabe GPIO-Pins am Chip 3 "max31913" funktioniert, z.B. mit diesem Python Skript:
Code: Select all
#!/usr/bin/env python3
import lgpio, time
handle = lgpio.gpiochip_open(3)
if handle < 0:
print("Fehler beim Öffnen des RP1")
exit()
led = 1
ret = lgpio.gpio_claim_input(handle, led)
if ret != 0:
print(f"Fehler beim Allozieren von Pin {led}")
exit()
while True:
state = lgpio.gpio_read(handle, led)
print(f"Pin={state}")
time.sleep(1)
lgpio.gpio_free(handle, led)
lgpio.gpiochip_close(handle)
Deshalb soll auf "Benachrichtigung bei Änderung" umgestellt werden, was die lgpio Bibliothek
unter https://abyz.me.uk/lg/index.html unterstützt.
Eine Registrierung auf Änderungen des Pin-Zustandes
schlägt fehl - dazu liefert lgpio das Beispielprogramm monitor.c mit:
./monitor 3:1
chip=3 gpio=1
GPIO in use 3:1 (bad event request)
Der Fehler "bad event request" bedeutet, daß der bei der Registrierung
ausgeführte ioctl-Aufruf fehlschlägt.
Registrierung auf z.B. GPIO Pin 0:4 funktioniert.
Hat jemand eine Idee, wie die Registrierung für den
GPIO-Chip 3 möglich wird?
Rumpelstilzchen
P.S. Hier ein Listing der GPIO-Chips, die Eingabe-PINs sind an Chip 3 - max31913 - angeschlossen.
Code: Select all
$ ls -l /dev/gp*
crw-rw---- 1 root gpio 254, 0 May 13 2023 /dev/gpiochip0
crw-rw---- 1 root gpio 254, 1 May 13 2023 /dev/gpiochip1
crw-rw---- 1 root gpio 254, 2 May 13 2023 /dev/gpiochip2
crw-rw---- 1 root gpio 254, 3 Sep 11 07:22 /dev/gpiochip3
crw-rw---- 1 root gpio 254, 4 Sep 11 07:22 /dev/gpiochip4
lrwxrwxrwx 1 root root 9 Sep 11 07:22 /dev/gpiochip_din -> gpiochip3
lrwxrwxrwx 1 root root 9 Sep 11 07:22 /dev/gpiochip_dout -> gpiochip4
$ sudo cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-53, parent: platform/3f200000.gpio, pinctrl-bcm2835:
gpio-0 (GPIO0 )
gpio-1 (GPIO1 )
gpio-2 (GPIO2 )
gpio-3 (GPIO3 )
gpio-4 (GPIO4 )
gpio-5 (GPIO5 )
gpio-6 (GPIO6 |mux ) out lo
gpio-7 (GPIO7 |spi0 CS1 ) out hi ACTIVE LOW
gpio-8 (GPIO8 |spi0 CS0 ) out hi ACTIVE LOW
gpio-9 (GPIO9 )
gpio-10 (GPIO10 )
gpio-11 (GPIO11 )
gpio-12 (GPIO12 |mux ) out lo
gpio-13 (GPIO13 |mux ) out lo
gpio-14 (GPIO14 )
gpio-15 (GPIO15 )
gpio-16 (GPIO16 |mux ) out lo
gpio-17 (GPIO17 |spi0 CS2 ) out hi ACTIVE LOW
gpio-18 (GPIO18 )
gpio-19 (GPIO19 |maxim,db0 ) out lo
gpio-20 (GPIO20 |maxim,db1 ) out lo
gpio-21 (GPIO21 )
gpio-22 (GPIO22 )
gpio-23 (GPIO23 )
gpio-24 (GPIO24 )
gpio-25 (GPIO25 )
gpio-26 (GPIO26 |maxim,modesel ) out lo
gpio-27 (GPIO27 )
gpio-28 (GPIO28 |maxim,fault ) in lo ACTIVE LOW
gpio-29 (GPIO29 )
gpio-30 (GPIO30 )
gpio-31 (GPIO31 )
gpio-32 (GPIO32 )
gpio-33 (GPIO33 )
gpio-34 (GPIO34 )
gpio-35 (GPIO35 )
gpio-36 (GPIO36 |spi2 CS3 ) out hi ACTIVE LOW
gpio-37 (GPIO37 )
gpio-38 (GPIO38 )
gpio-39 (GPIO39 )
gpio-40 (GPIO40 )
gpio-41 (GPIO41 )
gpio-42 (GPIO42 )
gpio-43 (GPIO43 |spi2 CS0 ) out hi ACTIVE LOW
gpio-44 (GPIO44 |spi2 CS1 ) out hi ACTIVE LOW
gpio-45 (GPIO45 |spi2 CS2 ) out hi ACTIVE LOW
gpio-46 (SMPS_SCL )
gpio-47 (SMPS_SDA )
gpio-48 (SD_CLK_R )
gpio-49 (SD_CMD_R )
gpio-50 (SD_DATA0_R )
gpio-51 (SD_DATA1_R )
gpio-52 (SD_DATA2_R )
gpio-53 (SD_DATA3_R )
gpiochip1: GPIOs 100-101, brcmvirt-gpio, can sleep:
gpio-100 ( |ACT ) out lo
gpiochip4: GPIOs 488-495, parent: spi/spi2.2, 74hc595, can sleep:
gpiochip3: GPIOs 496-503, parent: spi/spi2.3, max31913, can sleep:
gpiochip2: GPIOs 504-511, parent: platform/soc:firmware:expgpio, raspberrypi-exp-gpio, can sleep:
gpio-504 (HDMI_HPD_N )
gpio-505 (EMMC_EN_N )
gpio-506 (NC )
gpio-507 (NC )
gpio-508 (NC )
gpio-509 (NC )
gpio-510 (NC )
gpio-511 (NC )