Page 1 of 1

Digitaler Eingang - welcher GPIO Pin?

Posted: 29 Aug 2024, 09:39
by Rumpelstilzchen
Hallo Forum,

an einen RevPi Compact ist ein Taster an den digitalen Eingang 0 angeschlossen.

Wie unter https://revolutionpi.com/de/tutorials/e ... ol-compact beschrieben
ist piControl deaktivert und das Auslesen liefert 0 oder 1 je nachdem, ob der Taster gedrückt ist oder nicht:

Code: Select all

$ cd /sys/class/gpio
$ cat gpiochip488/label
max31913
$ echo 488 > export
$ cat gpio488/value
0
$ cat gpio488/value
1
Soweit sogut.

An welche GPIO Pins sind die 8 digitalen Eingänge angeschlossen?
Ich möchte den Tasterzustand mit den gpiozero oder lgpio Bibliotheken auslesen.

Rumpelstilzchen

Re: Digitaler Eingang - welcher GPIO Pin?

Posted: 29 Aug 2024, 15:44
by u.biakoup
Hallo,
Die digitalen Eingänge deines RevPi Compact sind über den MAX31913 GPIO-Chip angesprochen. Der Chip beginnt bei GPIO 488, und die folgenden Eingänge werden in aufeinanderfolgenden GPIO-Pins fortgesetzt:

Digital Input 0: GPIO 488
Digital Input 1: GPIO 489
Digital Input 2: GPIO 490
Digital Input 3: GPIO 491
Digital Input 4: GPIO 492
Digital Input 5: GPIO 493
Digital Input 6: GPIO 494
Digital Input 7: GPIO 495

im Beispiel im Link wurde erklärt, wie der digitale Eingang 5 zugreifbar ist. In dem Beispiel möchtest du auf den digitalen Eingang 5 zugreifen. Da der Chip gpiochip496 bei GPIO 496 beginnt, musst du die Nummer des gewünschten Eingangs (in diesem Fall 5) zu der Basisnummer des Chips addieren:

Basisnummer des Chips: 496
Eingang 5: 496 + 5 = 501
Daher würdest du den GPIO 501 exportieren, um auf den digitalen Eingang 5 zuzugreifen.

Warum gpiochip496?

Die Nummer 496 für den Chip ist spezifisch für das System, auf dem das Beispiel basiert. Wenn du den Chip auf deinem System identifizieren möchtest, solltest du in der Regel den folgenden Befehl verwenden:

Code: Select all

cd /sys/class/gpio
cat gpiochip*/label
Damit kannst du die genaue Bezeichnung (z. B. max31913) finden und sehen, welche Basis-GPIO-Nummer für diesen Chip verwendet wird.

Best Regards

Ulrich Kouatang Biakoup | field application engineer

Re: Digitaler Eingang - welcher GPIO Pin?

Posted: 29 Aug 2024, 17:37
by Rumpelstilzchen
Hallo Ulrich Biakoup,

danke für den Hinweis, daß der RevPi Compact mehrere GPIO-Chips enthält.
Beim Auslesen der Tasterinformation mit lgpio - siehe http://abyz.me.uk/lg/lgpio.html - muß deshalb zunächst der richtig GPIO-Chip lokalisiert werden:

Code: Select all

   int h = lgGpiochipOpen(4); /* Handle holen */
   lgChipInfo_t cInfo;
   int status = lgGpioGetChipInfo(h, &cInfo);
   if (status == LG_OKAY) {
      printf("lines=%d name=%s label=%s\n", cInfo.lines, cInfo.name, cInfo.label);
   }
gibt aus

Code: Select all

lines=8 name=gpiochip4 label=max31913
Somit ist der 4te Chip auszulesen

Code: Select all

   /* Einlesen von Pin 1 */
   lgGpioClaimInput(h, lFlags, 1);
   int v = 0;
   while (!interrupt_received) {
     v = lgGpioRead(h, 1);
     printf("GPIO %d Zustand %d\n", 1, v);
     lguSleep(1); /* sleep for 1 second */
   }
und tatsächlich, wenn der Taster an den digitalen Eingang 1 angeschlossen ist, dann wird der Zustand korrekt angezeigt.

Problem gelöst.

Re: Digitaler Eingang - welcher GPIO Pin?

Posted: 30 Aug 2024, 11:16
by u.biakoup
Hallo Rumpelstilzchen,

Es freut mich dass es funktioniert hat.

Viele Grüße.