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.
- 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.
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 setzenop
- Pin als Ausgang setzena0
-a5
- Umschaltung auf Alternativbelegung Alt0 bis Alt5dh
- Ausgang aufHIGH
setzendl
- Ausgang aufLOW
setzenpu
- Pullup-Widerstand einschaltenpd
- Pulldown-Widerstand einschaltenpn
- 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)