Cuprins:

Conectarea a două OOBoards împreună folosind I2C: 4 pași
Conectarea a două OOBoards împreună folosind I2C: 4 pași

Video: Conectarea a două OOBoards împreună folosind I2C: 4 pași

Video: Conectarea a două OOBoards împreună folosind I2C: 4 pași
Video: Cum se utilizează SSD1306 128x32 OLED Display I2C cu cod Arduino 2024, Noiembrie
Anonim
Conectarea a două OOBoards împreună folosind I2C
Conectarea a două OOBoards împreună folosind I2C

Acest instructable descrie cum să conectați două OOBoards folosind I2C.

Pasul 1: Conectarea la magistrala de rețea I2C

Conectarea la magistrala de rețea I2C
Conectarea la magistrala de rețea I2C
Conectarea la magistrala de rețea I2C
Conectarea la magistrala de rețea I2C

Există două autobuze I2C pe OOBoards, un autobuz local și un autobuz de rețea.

Codul OOPIC este în esență un limbaj interpretat, adică „codul” este stocat în EEPROM și citit / interpretat de microprocesor în timp real. EEPROM utilizează magistrala LOCAL I2C pentru a comunica cu microcontrolerul. Dacă ar fi să te uiți la acest autobuz local pe osciloscop, ai vedea o conversație constantă. Pe plăcile OOBoards, magistrala locală este ceea ce este conectat la conectorul I2C, nu este neapărat ceea ce ne dorim. Autobuzul de rețea este de obicei autobuzul care este utilizat pentru a comunica cu alte dispozitive / oopics, pe OOBoards acest autobuz nu are un conector. Pentru a accesa această magistrală, trebuie să lipiți firele la pinii 42 și 37 ai microcontrolerului (marcat respectiv N_SDA, N_SCL pe schemă).

Pasul 2: Adăugați rezistențele Pullup

Odată ce conexiunile SDA și SCL sunt realizate pe fiecare procesor, cele două plăci pot

să fie conectate împreună prin conectarea SDA la SDA, SCL la SCL și conectarea unui fir comun de masă între plăci. Veți avea nevoie, de asemenea, de un rezistor pull-up pe fiecare linie (am folosit 12k, dar asta este exact ceea ce aveam în jur). Rețineți că aveți nevoie doar de un rezistor de tragere pe linie pentru un total de două rezistențe (nu 4).

Pasul 3: Programați Slave

Acum că conexiunile fizice sunt acolo, va trebui să programați microcontrolerul slave. Am adăugat mai jos un cod care ar trebui să vă ajute să începeți.

Dim SLAVE as New oDDELinkDim LED as New oDIO1Sub Main () & apasă adresa noastră I2C la 2 (rețineți, aceasta trebuie să se potrivească cu adresa de la distanță și adresa pe care o setăm în codul master) ooPIC. Node = 2 & apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, conectați ieșirea obiectului nostru DDELink la LED-ul & aposthe și porniți-l … acum automat, LED-ul va clipi SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Pasul 4: Programați Masterul

În cele din urmă, programați microcontrolerul principal. Acordați o atenție deosebită liniilor care setează proprietatea DDELink. Localizare: dacă nu este setat corect, acest lucru NU va funcționa!

Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main () & aposlink cronometrul de 1 secundă la un bit pe care îl putem accesa și bitul aposthis va comuta acum o dată pe secundă wire. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & aposthis setează adresa I2C a microcontrolerului nostru local și interfața aposthe I2C nu este activă până când nu este setată o adresă ooPIC. Node = 1 & aposnow ne configurăm obiectul DDELink, intrarea noastră este bitul hz1 și aposnote că obiectul are, de asemenea, o proprietate. Output care este utilizată și când suntem în modul de primire Master. Input. Link (hz1) & aposthis este adresa I2C a microcontrolerului la distanță, rețineți că & aposin codul slave, îi spunem să aibă o adresă de 2 Master. Node = 2 & aposugh … aceasta este partea mizerabilă, aceasta este „adresa” DDELink & aposobject în spațiul de memorie slave & aposs. Pentru a afla acest număr, trebuie să deschideți și să compilați codul sclav, apoi să mergeți la Vizualizare-> Cod compilat. & Aposlook pentru ceva de genul: & aposL *. Construct. Begin; Dim ca nou oDDELink & aposwhere * este orice număr și este numele obiectului DDELink & Aposin codul sclav. Rândul imediat dedesubt ar trebui să citească ceva de genul: & aposC0020: 041; Acesta.. Adresa și numărul aposthei din dreapta & apos: & apos este adresa obiectului slave DDELink Master. Location = 41 & aposthis spune obiectului că vom fi trimis date (adică, copiați datele din proprietatea noastră. Input & aposto the slave.output property (notă, dacă setați acest lucru pentru a primi, este opusul) Master. Direction = cvTrimiteți și apelați-l, dar încă nu se întâmplă nimic … Master. Operate = cvToate Do & aposcheck pentru a vedea dacă în prezent transmitem date Dacă Master. Transmitting = cvFalse Apoi & apossetting această valoare la 1 va face ca masterul să trimită valoarea către slave și aposnote, aceasta este resetată automat la 0 la finalizarea transmisiei Master. Sync = 1 End If LoopEnd Sub

Recomandat: