Ich habe eine einfache Schaltung verkabelt, wobei eine LED an Pin 18 der BOARD-Referenz angeschlossen ist. Ich führe ein einfaches Programm aus, um Pin 18 auf HIGH zu setzen, wodurch die LED aufleuchtet. Einige Sekunden später setze ich Pin 18 auf LOW und beende mein Programm schließlich mit GPIO.cleanup ().
Zu diesem Zeitpunkt ist die LED aus, was bedeutet, dass Pin 18 aus ist (LOW). Jetzt starte ich meinen Raspberry Pi neu oder starte ihn neu, und wenn er wieder hochfährt, leuchtet die LED an Pin 18 wieder, obwohl der Pin vor dem Neustart des Raspberry Pi ausgeschaltet war.
Warum kann das passieren? Wie kann ich einen bestimmten Pin wie Pin 18 so konfigurieren, dass er ausgeschaltet ist, wenn der Raspberry Pi hochfährt? Und ich möchte nicht, dass GPIO-Pins auf HIGH stehen, wenn der Raspberry Pi hochfährt.
Ich mache mir Sorgen wegen dieses Problems, weil wir annehmen, dass Pin 18 mit einem Gleichstrommotor eines Roboters verbunden ist, und wenn der Raspberry Pi hochfährt, schaltet sich der Motor ein, und das ist nichts, was ich will, weil das stört Die gesamte Struktur des Roboters und einige Motoren werden möglicherweise gestartet, andere nicht. Dies hängt von den Stiften ab, mit denen sie verbunden sind. Ich möchte alle Motoren manuell synchronisiert einschalten.
Eine andere Sache ist, dass nicht alle Stifte dieses Problem haben. Einige bleiben aus, wenn der Raspberry Pi startet, andere nicht.
/sys/class/gpio
Pin 18 aufrufen und exportieren, in welchem Zustand befindet sich das System dann, wenn Sie nichts ändern?echo
, was etwas schreibt, dh setzt. Nachdem Sie es exportiert haben, möchten Sie davon Abstand nehmen und nurcat
das Lesen verwenden, um die Richtung und den Wert zu überprüfen.Antworten:
Beim Einschalten werden die GPIOs durch die internen Widerstände entweder hoch oder niedrig gezogen. Ob der Pull für ein bestimmtes GPIO hoch oder niedrig ist, wird auf Seite 102 von BCM2835 ARM-Peripheriegeräte beschrieben .
Wenn der Linux-Kernel gestartet wird und der Gerätebaum aktiviert ist (wahrscheinlich), werden die GPIOs entsprechend den Gerätebaumeinstellungen neu konfiguriert. Von geladenen Modulen kann
/etc/modules
auch der GPIO-Status aktualisiert werden.Jede andere Software, die Sie beim Start ausführen, kann die GPIOs möglicherweise nach den Einstellungen in der Gerätestruktur und dem Laden des Moduls neu konfigurieren.
Es ist am sichersten, eine Hardwarelösung zu finden, wenn Sie über Hardware verfügen, die beim Systemstart falsch ausgelöst werden könnte.
quelle
Wenn der Raspberry Pi bootet, werden die GPIO-Leitungen auf die Standardeinstellungen des Chips zurückgesetzt, und das Betriebssystem wird geladen und setzt sie auf die Standardeinstellungen des Betriebssystems zurück. Es gibt keine Möglichkeit, die Einstellungen während eines Neustarts zu "merken". Siehe auch Wie ist der Einschaltstatus der GPIOs? und GPIO-Status nach dem Start .
quelle
Ich weiß, dass es ziemlich spät ist. Antworten. Sie können ein Python- oder Bash-Skript schreiben, das den Pin manuell auf niedrig setzt, und einen Cron-Job planen, der bei jedem Start ausgeführt wird. Sie müssen keine systemkritischen Dateien ändern. Abgesehen von Cron
quelle