Índice:

Conectando dois OOBoards juntos usando I2C: 4 etapas
Conectando dois OOBoards juntos usando I2C: 4 etapas

Vídeo: Conectando dois OOBoards juntos usando I2C: 4 etapas

Vídeo: Conectando dois OOBoards juntos usando I2C: 4 etapas
Vídeo: How to flush your Yamaha outboard correctly! 2024, Julho
Anonim
Conectando dois OOBoards juntos usando I2C
Conectando dois OOBoards juntos usando I2C

Este instrutível cobre como conectar dois OOBoards usando I2C.

Etapa 1: Conectando ao barramento de rede I2C

Conectando ao barramento de rede I2C
Conectando ao barramento de rede I2C
Conectando ao barramento de rede I2C
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

Recomendado: