Eu tenho um circuito fácil conectado, com um LED conectado ao pino 18 na referência BOARD. Executo um programa simples para colocar o pino 18 em ALTO, que acende o LED e, alguns segundos depois, coloco o pino 18 em BAIXO e, finalmente, encerro meu programa com GPIO.cleanup ().
Neste ponto, o LED está apagado, o que significa que o pino 18 está apagado (LOW). Agora, reinicializo ou reinicio meu Raspberry Pi e, quando ele inicializa, o LED no pino 18 acende novamente, mesmo que o pino estivesse desligado antes de eu reiniciar o Raspberry Pi.
Por que isso pode estar acontecendo? Como posso configurar um pino específico, como o pino 18, para ser desativado quando o Raspberry Pi é inicializado? E eu não quero que nenhum pino GPIO esteja em ALTO quando o Raspberry Pi inicializar.
Estou preocupado com esse problema, porque digamos que o pino 18 esteja conectado a um motor DC em um robô e, quando o Raspberry Pi inicializar, o motor será ligado, e isso não é o que eu quero, porque isso interfere no toda a estrutura do robô, e alguns motores podem iniciar e outros não, dependendo dos pinos aos quais estão conectados. Quero ligar manualmente todos os motores de maneira sincronizada.
Outra coisa é que nem todos os pinos têm esse problema. Alguns ficam de fora quando o Raspberry Pi é inicializado, mas outros não.
/sys/class/gpio
e exportar o pino 18, em que estado o sistema diz que está se você não alterar nada?echo
, que escreve, ou seja, define algo. Depois de exportá-lo, você deseja abster-se disso e usar apenas ocat
que lê para verificar a direção e o valor.Respostas:
Na energização, os GPIOs são puxados para cima ou para baixo através dos resistores internos. Se a atração é alta ou baixa para um GPIO específico, é detalhado na página 102 dos Periféricos BCM2835 ARM .
Quando o kernel do Linux é iniciado e se a árvore de dispositivos estiver ativada (provável), ele reconfigurará os GPIOs de acordo com as configurações da árvore de dispositivos. Os módulos carregados de
/etc/modules
também podem atualizar o estado GPIO.Qualquer outro software que você esteja executando na inicialização pode reconfigurar os GPIOs subsequentemente às configurações da árvore de dispositivos e às cargas do módulo.
É mais seguro encontrar uma solução de hardware se você tiver um hardware que pode ser acionado incorretamente na inicialização do sistema.
fonte
Quando o Raspberry Pi inicializa, as linhas GPIO são redefinidas para o padrão do chip, o sistema operacional é carregado e as redefine para o padrão do sistema operacional. Não há como "lembrar" as configurações durante uma reinicialização. Consulte também Qual é o estado de energia dos GPIOs? e estado GPIO após a inicialização .
fonte
Eu sei que é muito tarde. Para responder. Você pode escrever um script python ou um script bash que defina manualmente o pino para baixo e agende um trabalho cron para ser executado a cada inicialização. Você não precisará modificar nenhum arquivo crítico / do sistema. Além do cron
fonte