Innholdsfortegnelse:

Koble to OOBoards sammen ved hjelp av I2C: 4 trinn
Koble to OOBoards sammen ved hjelp av I2C: 4 trinn

Video: Koble to OOBoards sammen ved hjelp av I2C: 4 trinn

Video: Koble to OOBoards sammen ved hjelp av I2C: 4 trinn
Video: Управление 16 серводвигателями с использованием модуля PCA9685 и Arduino V2 2024, November
Anonim
Koble to OOBoards sammen ved hjelp av I2C
Koble to OOBoards sammen ved hjelp av I2C

Denne instruksen dekker hvordan du kobler til to OOBoards ved hjelp av I2C.

Trinn 1: Koble til I2C Network Bus

Koble til I2C Network Bus
Koble til I2C Network Bus
Koble til I2C Network Bus
Koble til I2C Network Bus

Det er to I2C -busser på OOBoards, en lokalbuss og en nettverksbuss.

OOPIC -koden er i hovedsak et tolket språk, det vil si at "koden" lagres i EEPROM, og leses/tolkes av mikroprosessoren i sanntid. EEPROM bruker LOCAL I2C -bussen til å kommunisere med mikrokontrolleren. Hvis du skulle se på denne lokale bussen på oscilloskopet, ville du se konstant skravling. På OOBoards -kortene er lokalbussen det som er koblet til I2C -kontakten, dette er ikke nødvendigvis det vi ønsker. NETTVERK -bussen er vanligvis bussen som brukes til å kommunisere med andre enheter/oopics, på OOBoards har denne bussen ikke en kontakt. For å få tilgang til denne bussen må du lodde ledninger til pinne 42 og 37 på mikrokontrolleren (merket henholdsvis N_SDA, N_SCL på skjematisk).

Trinn 2: Legg til pullup -motstandene

Når SDA- og SCL -tilkoblinger er gjort på hver prosessor, kan de to kortene

kobles sammen ved å koble SDA til SDA, SCL til SCL og koble en felles jordledning mellom kortene. Du trenger også en pull-up-motstand på hver linje (jeg brukte 12k, men det var akkurat det jeg hadde liggende). Vær oppmerksom på at du bare trenger en pullup -motstand per linje for totalt to motstander (ikke 4).

Trinn 3: Programmer slaven

Nå som de fysiske tilkoblingene er der, må du programmere slave -mikrokontrolleren. Jeg la til en kode nedenfor som skulle komme i gang.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main () & aposset our I2C address to 2 (note, this must match the remote & aposaddress we set in the master code) ooPIC. Node = 2 & apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, koble utgangen fra vårt DDELink -objekt til & aposthe LED, og slå den på … nå automatisk, vil LED -en blinke SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Trinn 4: Programmer Master

Til slutt programmerer du hovedmikrokontrolleren. Vær nøye med linjene som angir DDELinkens. Location -egenskap: Med mindre dette er riktig angitt, vil dette IKKE fungere!

Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main () & aposlink the 1 second timer to the bit we can access & aposthis bit will no switch one per second wire. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & aposthis angir I2C -adressen til vår lokale mikrokontroller og apostel I2C -grensesnittet er ikke aktivt før en adresse er angitt ooPIC. Node = 1 & aposnow vi konfigurerer vårt DDELink -objekt, vår innspill er biten hz1 & aposnote som objektet har også en. Output -egenskap som brukes & apos når vi er i mottaksmodus Master. Input. Link (hz1) & aposthis er I2C -adressen til den eksterne mikrokontrolleren, merk at & aposin i slavekoden, forteller vi den å ha en adresse på 2 Master. Node = 2 & aposugh … dette er den skitne delen, dette er "adressen" til DDELink & aposobjectet i slave- og aposs -minneplassen. For å finne ut dette nummeret, må vi åpne og kompilere slavekoden, og deretter gå til View-> Compiled Code. & aposleter etter noe slikt: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * er et hvilket som helst tall, og er navnet på DDELink -objektet ditt & aposin din slavekode. Linjen rett under den skal lese noe slikt: & aposC0020: 041; Dette.. Adresse & apostenummeret til høyre for & apos: & apos er adressen til slaven DDELink -objektet Master. Location = 41 & aposthis forteller objektet som vi skal sende data (dvs. kopier data fra vår. Input -egenskap og aposto til slaverne.output -egenskapen (merk at hvis du setter dette til å motta, er det motsatt) Master. Direction = cvSend & aposturn it on, men ingenting skjer ennå … Master. Operate = cvTrue Do & aposcheck for å se om vi for øyeblikket overfører data Hvis Master. Transmitting = cvFalse Da & hvis du setter denne verdien til 1 vil føre til at masteren sender verdien til slaven og aposnoten, blir denne automatisk tilbakestilt til 0 når overføring Master. Sync er fullført = 1 End If LoopEnd Sub

Anbefalt: