Mam okablowany łatwy obwód, z diodą LED podłączoną do pinu 18 na tablicy BOARD. Uruchamiam prosty program, aby ustawić pin 18 na WYSOKI, co włącza diodę LED, a następnie kilka sekund później ustawiam pin 18 na NISKI, a na koniec kończę program za pomocą GPIO.cleanup ().
W tym momencie dioda LED jest wyłączona, co oznacza, że pin 18 jest wyłączony (LOW). Teraz ponownie uruchamiam lub ponownie uruchamiam Raspberry Pi, a kiedy uruchamia się ponownie, dioda LED na pinie 18 włącza się ponownie, nawet jeśli pin był wyłączony przed ponownym uruchomieniem Raspberry Pi.
Dlaczego tak się dzieje? Jak skonfigurować konkretny pin, np. Pin 18, aby był wyłączony po uruchomieniu Raspberry Pi? I nie chcę, aby żadne piny GPIO były WYSOKIE, gdy Raspberry Pi się uruchomi.
Martwię się tym problemem, ponieważ powiedzmy, że pin 18 jest podłączony do silnika prądu stałego w robocie, a gdy Raspberry Pi uruchomi się, silnik włączy się, a to nie jest coś, czego chcę, ponieważ to zakłóca cała konstrukcja robota, a niektóre silniki mogą się uruchomić, a inne nie, w zależności od pinów, do których są podłączone. Chcę ręcznie włączyć wszystkie silniki w sposób zsynchronizowany.
Inną rzeczą jest to, że nie wszystkie piny mają ten problem. Niektóre pozostają wyłączone, gdy Raspberry Pi uruchamia się, ale inne nie.
/sys/class/gpio
i wyeksportujesz pin 18, w jakim stanie system powie, że jest, jeśli nic nie zmienisz?echo
, który pisze, czyli ustawia coś. Po jego wyeksportowaniu chcesz się od tego powstrzymać i po prostu użyjcat
, który czyta, aby sprawdzić kierunek i wartość.Odpowiedzi:
Po włączeniu GPIO są przeciągane albo wysoko, albo nisko przez rezystory wewnętrzne. To, czy przyciąganie jest wysokie czy niskie dla danego GPIO, opisano szczegółowo na stronie 102 BCM2835 ARM Peripherals .
Gdy jądro Linux jest uruchamiane i jeśli drzewo urządzeń jest włączone (prawdopodobnie), wówczas ponownie skonfiguruje GPIO zgodnie z ustawieniami drzewa urządzeń. Załadowane moduły
/etc/modules
mogą również aktualizować stan GPIO.Każde inne oprogramowanie uruchomione podczas uruchamiania może potencjalnie zmienić konfigurację GPIO po ustawieniach drzewa urządzeń i ładowaniu modułów.
Najbezpieczniej jest znaleźć rozwiązanie sprzętowe, jeśli masz sprzęt, który może zostać nieprawidłowo uruchomiony podczas uruchamiania systemu.
źródło
Kiedy Raspberry Pi uruchamia się, linie GPIO są resetowane do domyślnego układu, następnie system operacyjny jest ładowany i resetuje je do domyślnego systemu operacyjnego. Nie ma możliwości „zapamiętania” ustawień podczas ponownego uruchamiania. Zobacz także Jaka jest moc w stanie GPIO? i stan GPIO po uruchomieniu .
źródło
Wiem, że jest dość późno. Odpowiedzieć. Możesz napisać skrypt python lub skrypt bash, który ręcznie ustawia pin na niski i planuje uruchamianie zadania cron przy każdym uruchomieniu. Nie będziesz musiał modyfikować żadnych plików systemowych / krytycznych. Oprócz crona
źródło