Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Este instrutível cobre como conectar dois OOBoards usando I2C.
Etapa 1: Conectando ao barramento de rede I2C
Existem dois barramentos I2C nos OOBoards, um barramento local e um barramento de rede.
O código OOPIC é essencialmente uma linguagem interpretada, ou seja, o "código" é armazenado na EEPROM e lido / interpretado pelo microprocessador em tempo real. A EEPROM usa o barramento I2C LOCAL para se comunicar com o microcontrolador. Se você olhasse para esse barramento local no osciloscópio, veria conversas constantes. Nas placas OOBoards, o barramento local é o que está conectado ao conector I2C, não é necessariamente o que queremos. O bus NETWORK é normalmente o bus que é usado para comunicar com outros dispositivos / opics, nos OOBoards este bus não tem um conector. Para acessar este barramento, você deve soldar os fios aos pinos 42 e 37 do microcontrolador (marcados com N_SDA, N_SCL no esquema, respectivamente).
Etapa 2: adicionar os resistores pullup
Uma vez que as conexões SDA e SCL são feitas em cada processador, as duas placas podem
ser interligados conectando SDA a SDA, SCL a SCL e conectando um fio terra comum entre as placas. Você também precisará de um resistor pull-up em cada linha (usei 12k, mas era exatamente o que eu tinha por aí). Observe que você só precisa de um resistor pullup por linha para um total de dois resistores (não 4).
Etapa 3: programar o escravo
Agora que as conexões físicas estão lá, você precisará programar o microcontrolador escravo. Eu adicionei um código abaixo que deve ajudá-lo a começar.
Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main () & aposset nosso endereço I2C para 2 (note, isso deve corresponder ao remoto & apaddress que definimos no código mestre) ooPIC. Node = 2 & apossetup an LED. IOLine = 5 LED. Direction = cvOutput & aposnow, vincule a saída de nosso objeto DDELink ao LED e ligue-o … agora automaticamente, o LED piscará SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub
Etapa 4: programe o mestre
Finalmente, programe o microcontrolador mestre. Preste muita atenção às linhas que definem a propriedade. Location do DDELink: A menos que seja definido corretamente, isso NÃO funcionará!
Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main () & aposlink o 1 segundo temporizador para o bit que podemos acessar & apos este bit irá agora alternar uma vez por segundo fio. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & aposthis define o endereço I2C de nosso microcontrolador local & apos a interface I2C não está ativa até que um endereço seja definido ooPIC. Node = 1 & apos agora que configuramos nosso objeto DDELink, nossa entrada é o bit hz1 & apos note que o objeto também tem uma propriedade. Output que é usada & aposquando estamos no modo de recebimento Master. Input. Link (hz1) & aposthis é o endereço I2C do microcontrolador remoto, observe que & aposin no código escravo, dizemos que ele tem um endereço 2 Master. Node = 2 & aposugh… esta é a parte ruim, este é o "endereço" do DDELink & aposobject no espaço de memória do slave & aposs. Para descobrir esse número, & apos, precisamos abrir e compilar o código escravo e ir para Exibir-> Código Compilado. & aposprocure algo como: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * é qualquer número e é o nome do seu objeto DDELink & aposin seu código escravo. A linha imediatamente abaixo deve ser algo como: & aposC0020: 041; This.. Address & aposthe número à direita do & apos: & apos é o endereço do objeto DDELink escravo Master. Location = 41 & aposthis diz ao objeto que iremos enviar dados (ou seja, copie os dados de nossa propriedade. Input & aposto para a propriedade.output dos escravos (note, se você definir isso para receber, é o oposto) Master. Direction = cvSend & aposturn on, mas nada está acontecendo ainda … Master. Operate = cvTrue Faça & aposcheck para ver se estamos atualmente transmitindo dados If Master. Transmitting = cvFalse Então & aposdefinir este valor para 1 fará com que o mestre envie o valor para o escravo & aposnote, isto é automaticamente redefinido para 0 após a conclusão da transmissão Master. Sync = 1 End If LoopEnd Sub