Raspberry: GPIO-Pins beim Booten initialisieren

Wenn der RasPi ein Gerät steuert, kann es beim Booten zu unerwünschten Aktionen kommen. Es sei denn, man initialisiert die Pins bereits beim Start.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Raspberry: GPIO-Pins beim Booten initialisieren
Lesezeit: 2 Min.
Von
  • Heinz Behling

Wenn ein RasPi über seine GPIO-Pins Geräte steuert, dann kann ein falscher Pegel an einem oder mehreren der benutzen Pins zu ungewünschten Aktionen des gesteuerten Gerätes führen. Das ist besonders beim Start des Raspberrys (zum Beispiel nach einem Stromausfall) lästig bis gefährlich. Bis nämlich die eigentliche Steuersoftware startet (falls sie es denn überhaupt automatisch macht) ist keine Kontrolle über das angeschlossene Gerät gegeben. Aufblinkende LEDs sind da noch harmlos. Zuckende oder sich wild bewegende Motoren oder dauernd laufende Pumpen und ähnliches können da sogar Schäden anrichten.

Daher sollte man schon während des Bootens die Pins initialisieren. Dann können die Pins nach dem Einschalten höchstens noch für einige Sekundenbruchteile undefinert sein.

Der Zustand der Pins beim Start des Raspberrys ist nicht immer viorhersagbar.

(Bild: raspberrypi.org)

Diese Initialisierung ist mit Befehlen in der Datei config.txt im Verzeichnis /boot der Speicherkarte möglich. Dort kann mit dem Befehl gpio gefolgt von den Adressen der Pins und den passenden Parametern der Zustand jedes Pins beeinflusst werden. Die zulässigen Parameter sind:

  • ip - Pin als Eingang setzen
  • op - Pin als Ausgang setzen
  • a0-a5 - Umschaltung auf Alternativbelegung Alt0 bis Alt5
  • dh - Ausgang auf HIGH setzen
  • dl - Ausgang auf LOW setzen
  • pu - Pullup-Widerstand einschalten
  • pd - Pulldown-Widerstand einschalten
  • pn - Kein Pullup-/Pulldown-Widerstand

In einem Befehlsaufruf können dabei mehrere Pins und Parameter verwendet werden. Dazu ein paar Beispiele: Um die Pins 0, 1, 2, 3, 6 und 10 als Ausgang zu definieren und auf HIGH zu schalten, genügt

gpio=0-3,6,10=op,dh

Mehrere Pins (14,17,20) zu Eingängen mit Pullup-Widerständen zu machen, gelingt mit

gpio=14,17,20=ip,pu

(hgb)