Чому деякі шпильки GPIO ВИСОКІ, коли Raspberry Pi завантажується?


18

У мене простий ланцюг підключений, зі світлодіодом, підключеним до штифта 18 на дошці BOARD. Я запускаю просту програму, щоб поставити шпильку 18 на ВИСОКУ, яка вмикає світлодіод, а потім через пару секунд встановлюю контакт 18 на НИЗКО, і, нарешті, закінчую програму GPIO.cleanup ().

У цей момент світлодіод вимикається, що означає, що контакт 18 вимкнено (НИЗЬКО). Тепер я перезавантажую або перезавантажую свій Raspberry Pi, і коли він завантажується, світлодіод на штифті 18 знову вмикається, навіть якщо штифт був вимкнений, перш ніж я перезавантажував Raspberry Pi.

Чому це може статися? Як я можу налаштувати певний штифт, як-от штифт 18, щоб він був вимкнений, коли Raspberry Pi завантажується? І я не хочу, щоб будь-які шпильки GPIO були ВИСОКИМИ, коли Raspberry Pi завантажується.

Мене турбує ця проблема, тому що скажімо, що контактний контакт 18 підключений до двигуна постійного струму на роботах, і коли Raspberry Pi завантажиться, мотор увімкнеться, і це не те, що я хочу, тому що це буде заважати вся структура роботи, а деякі двигуни можуть запускатися, а інші не будуть, залежно від штифтів, до яких вони підключені. Хочу вручну ввімкнути всі двигуни синхронізовано.

Ще одне, що не всі шпильки мають цю проблему. Деякі зупиняються, коли Raspberry Pi завантажується, але інші ні.


Цей світлодіод увімкнено настільки яскраво, як це було б, коли ви встановите його високим, або він просто тьмяно світиться?
золотинки

На нього застосовано 3,3 вольта.
Віктор Малина

Отже, якщо ви перейдете до /sys/class/gpioта експортуєте штифт 18, у якому стані система скаже, що він є, якщо нічого не змінити?
золотинки

Коли я пишу "/ sys / class / gpio", він говорить "-bash: / sys / class / gpio: Є каталог". Я не впевнений, як експортувати певний штифт.
Віктор Малина

Є пояснення пояснень цього , тому я не буду намагатися відригувати. Цей приклад є важким для того echo, що пише, тобто встановлює щось. Після експорту його ви хочете утриматися від цього і просто використовувати cat, що читається, для перевірки напрямку та значення.
золотинки

Відповіді:


25

При включенні живлення GPIO витягуються або високими, або низькими через внутрішні резистори. Чи є високий або низький рівень тяжкості для певного GPIO, детально описано на сторінці 102 BCM2835 ARM периферійних пристроїв .

Після запуску ядра Linux і якщо дерево пристрою включено (ймовірно), воно перенастроїть GPIO відповідно до налаштувань дерева пристроїв. Модулі, завантажені з, /etc/modulesтакож можуть оновити стан GPIO.

Будь-яке інше програмне забезпечення, яке ви запускаєте при запуску, може потенційно перенастроїти GPIO, після налаштувань дерева пристрою та завантаження модуля.

Найбезпечніше знайти апаратне рішення, якщо у вас є апаратне забезпечення, яке могло б бути запущено неправильно при запуску системи.


10

Коли завантажується програма Raspberry Pi, лінії GPIO скидаються до стандартних чіпів, тоді операційна система завантажується і скидає їх до стандартних параметрів ОС. Немає способу "запам'ятати" налаштування під час перезавантаження. Дивіться також Яка влада на стан GPIO? і стан GPIO після завантаження .


2

Я знаю, що вже досить пізно. Відповісти. Ви можете написати сценарій python або bash script, який вручну встановлює штифт на низький рівень і планує роботу cron для кожного завантаження. Вам не потрібно буде змінювати будь-які системні / критичні файли. Крім крон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.