Проблема на ровном месте. Не понимаю, подскажите Есть три пина: 16,20 и 21. Все должны работать как ввод с подтяжкой к 1 GPIO.setup(pin, GPIO.IN,pull_up_down=pdn=GPIO.PUD_UP) 20 и 21 вполне себе нормально, а вот 16 ни в какую Понимаю, что 16 пин может быть также spi.... SPI 1 как CE2 N i2c... SCL6 как GPIO23 sdi0... SD0 CMD/SD1 CMD как GPIO23 Пытаюсь оказаться от всего этого богатства. В raspi-config отключаю spi, i2c Устанавливаю raspi-gpio set 16,20,21 ip Контролирую raspi-gpio get 16,20,21: GPIO 16: level=0 fsel=0 func=INPUT pull=UP GPIO 20: level=1 fsel=0 func=INPUT pull=UP GPIO 21: level=1 fsel=0 func=INPUT pull=UP И всей-то разницы - некий level !? Вот код теста. 20 и 21 норм, 16 никак. На вход подаю землю через 1 ком Код (Python): import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) pin = 16 GPIO.setup(pin, GPIO.IN,pull_up_down=pdn=GPIO.PUD_UP) while True: val = GPIO.input(pin) print(val) time.sleep(1)
В этом сказано: "светодиод на GPIO 16 загорается сразу же, когда Pi включен и остается включенным. Во время выключения (запуск sudo poweroff) светодиод начинает мигать, затем на короткое время выключается, прежде чем снова включиться после остановки системы." Ничего подобного нет. При выключении питания миганий нет (светодиод был подключен). Похоже, это другое явление, хотя интересное. Другое предположение, высказанное в "этом" - неправильная система у моего raspberry . Резон есть. В /boot/config.txt есть интересная строка dtparameter=cs0_pin=16,cs0_spidev=disable Как понимать? Что такое? Замена на enable, а также простое вырезание строки не помогли Также хочу заметить, что несчастный 16 пин нормально работает на raspberry pi 3b+ и raspberry pi zero.
Попробуйте : Или закоментировать Код (Bash): dtparameter=cs0_pin=16,cs0_spidev=disable Или убрать первые тождества Код (Bash): cs0_spidev=disable Или Код (Bash): dtparameter=cs0_spidev=disable Или Код (Bash): dtparameter=cs0_pin=другой пин,cs0_spidev=disable Если после манипуляций raspberry не запускается, раздел boot виден на windows. Можно подправить.
@a0639, в config.txt в разделе dtoverlay что прописано (нет ли SPI устройств)? В дереве устройств для первых ревизий Raspberry к pin@p16 подключен светодиод, у Raspberry4 этого пина нет (или я не вижу) на его место для совместимости маппится какой-то другой.
Полезно понимать в каком режиме в определенный момент находится нужный Вам вывод процессора. Он может быть настроен на вход, на выход и на любую из нескольких альтернативных функций. Если с выводами 20 и 21 Вам повезло и их никакая программа не перехватила, то вывод 16 может быть настроен на какой-то не подходящий Вам режим. Это означает что выводы нужно настраивать для себя. Программы для этого в принципе имеются, найти можно. Думаю что справитесь.
Насколько помню, в последний раз я пользовался программой GPIO-ALT ( или как-то так, впрочем не особо успешно в моем случае ). Она скачивалась в исходнике, компилировалась и запускалась. Универсальности ( под разные платы ) в моем исходнике не было. Еще когда-то находил более универсальную программку, которая еще выдавала список режимов всех выводов процессора. Не помню насколько она была универсально, но точно более функциональна. Но проблема в том что названия ее не помню и найти не смог когда понадобилось. А среду, в которой эта программа была у меня установлена, уже уничтожил...
Смутно вспоминается тот факт, что та полезная программка была частью какого-то достаточно большого пакета для Малины. Пока нашел такую вещь: https://projects.drogon.net/raspberry-pi/wiringpi/the-gpio-utility/ там тоже вроде бы можно увидеть текущие режимы всех выводов и управлять ими. Попробуйте, вдруг получится. Я не пробовал, у меня немного другие способы были.