Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Denne instruksen dekker hvordan du kobler til to OOBoards ved hjelp av I2C.
Trinn 1: 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