Sadržaj:

Povezivanje dvije OOBard ploče zajedno pomoću I2C: 4 koraka
Povezivanje dvije OOBard ploče zajedno pomoću I2C: 4 koraka

Video: Povezivanje dvije OOBard ploče zajedno pomoću I2C: 4 koraka

Video: Povezivanje dvije OOBard ploče zajedno pomoću I2C: 4 koraka
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, Juli
Anonim
Povezivanje dvije OOBard ploče zajedno pomoću I2C
Povezivanje dvije OOBard ploče zajedno pomoću I2C

Ovo uputstvo pokriva kako spojiti dvije OOBard kartice pomoću I2C.

Korak 1: Povezivanje na I2C mrežnu sabirnicu

Povezivanje na I2C mrežnu sabirnicu
Povezivanje na I2C mrežnu sabirnicu
Povezivanje na I2C mrežnu sabirnicu
Povezivanje na I2C mrežnu sabirnicu

Postoje dva I2C autobusa na OOBoards, lokalna magistrala i mrežna sabirnica.

OOPIC kôd je u osnovi interpretirani jezik, tj. "Kôd" je pohranjen u EEPROM -u i čita ga/tumači mikroprocesor u stvarnom vremenu. EEPROM koristi LOCAL I2C sabirnicu za komunikaciju s mikrokontrolerom. Ako pogledate ovaj lokalni autobus na osciloskopu, vidjeli biste neprestano brbljanje. Na OOBoards pločama lokalna sabirnica je ono što je spojeno na I2C konektor, to nije nužno ono što želimo. NETWORK sabirnica je obično sabirnica koja se koristi za komunikaciju s drugim uređajima/oopicima, na OOBoardovima ova sabirnica nema konektor. Da biste pristupili ovoj sabirnici, morate lemiti žice na pinove 42 i 37 mikrokontrolera (označeni N_SDA, N_SCL na shemi, respektivno).

Korak 2: Dodajte otpornike za izvlačenje

Nakon što se povežu SDA i SCL veze na svakom procesoru, dvije ploče to mogu

spojiti spajanjem SDA na SDA, SCL na SCL i spajanjem zajedničke žice za uzemljenje između ploča. Također će vam trebati pull-up otpornik na svakoj liniji (koristio sam 12 k, ali to je ono što sam imao okolo). Imajte na umu da vam je potreban samo jedan pullup otpornik po liniji za ukupno dva otpornika (ne 4).

Korak 3: Programirajte Slave

Sada kada postoje fizičke veze, morat ćete programirati pomoćni mikrokontroler. Dolje sam dodao neki kod koji bi trebao započeti.

Priguši SLAVE kao novo oDDELinkDim LED kao novo oDIO1Sub Main () & postavi našu I2C adresu na 2 (imajte na umu da ovo mora odgovarati udaljenoj & adresnoj adresi koju smo postavili u glavnom kodu) ooPIC. Node = 2 & postavi LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, povežite izlaz našeg DDELink objekta sa & aposthe LED, i uključite ga … sada automatski, LED će treperiti SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Korak 4: Programirajte Master

Na kraju, programirajte glavni mikrokontroler. Obratite posebnu pažnju na redove koji postavljaju svojstvo. Location DDELinka: Ako ovo nije pravilno postavljeno, ovo NEĆE uspjeti!

Dim Master kao nova oDDELinkDim žica kao nova oWireDim hz1 kao nova oBitSub Main () & aposinkrira tajmer od 1 sekunde do bita kojem možemo pristupiti & aposthis bit će se sada mijenjati jednom u sekundi žice. Link (hz1) wire. Operate = cvTrue & aposthis postavlja I2C adresu našeg lokalnog mikrokontrolera & aposthe I2C sučelje nije aktivno dok se ne postavi adresa ooPIC. Node = 1 & aposnow postavimo naš objekt DDELink, naš ulaz je bit hz1 & aposno napominjemo da Objekt također ima svojstvo. Output koje se koristi & apos kada smo u načinu primanja Master. Input. Link (hz1) & aposthis je I2C adresa udaljenog mikrokontrolera, imajte na umu da & aposin slave koda, kažemo mu da ima adresu 2 Master. Node = 2 & aposugh … ovo je sranje, ovo je "adresa" DDELink & aposobject u memorijskom prostoru slave & aposs. Da bismo shvatili ovaj broj, & aposwe moramo otvoriti i kompajlirati slave kôd, a zatim otići na View-> Compiled Code. & aposlook za nešto poput: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * je bilo koji broj, i to je naziv vašeg DDELink objekta & aposin vašeg slave koda. Redak ispod njega trebao bi glasiti nešto poput: & aposC0020: 041; This.. Address & aposthe number desno od & apos: & apos je adresa slave DDELink objekta Master. Location = 41 & aposthis govori objektu koji ćemo poslati data (tj. kopirajte podatke iz našeg. Input svojstva i aposto slaves.output svojstva (imajte na umu, ako ovo postavite da prima, to je suprotno) Master. Direction = cvSend & aposturn on, ali ništa se još ne događa … Master. Operate = cvTrue Uradite & aposcheck da vidite da li trenutno prenosimo podatke. Ako Master. Transmitting = cvFalse Tada & postavljanje ove vrijednosti na 1 uzrokuje da master pošalje vrijednost na slave & aposnote, to se automatski poništava na 0 po završetku prijenosa Master. Sync = 1 End If LoopEnd Sub

Preporučuje se: