Talaan ng mga Nilalaman:

Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C: 4 na Hakbang
Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C: 4 na Hakbang

Video: Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C: 4 na Hakbang

Video: Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C: 4 na Hakbang
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Nobyembre
Anonim
Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C
Pagkonekta ng Dalawang OOBoards na Magkasama Gamit ang I2C

Saklaw ng itinuturo na ito kung paano ikonekta ang dalawang OOBoards gamit ang I2C.

Hakbang 1: Kumokonekta sa I2C Network Bus

Kumokonekta sa I2C Network Bus
Kumokonekta sa I2C Network Bus
Kumokonekta sa I2C Network Bus
Kumokonekta sa I2C Network Bus

Mayroong dalawang mga bus na I2C sa OOBoards, isang lokal na bus, at isang network bus.

Ang OOPIC code ay mahalagang isang interpretadong wika, ibig sabihin ang "code" ay nakaimbak sa EEPROM, at binasa / binibigyang kahulugan ng microprocessor sa real time. Gumagamit ang EEPROM ng LOCAL I2C bus upang makipag-usap sa microcontroller. Kung titingnan mo ang lokal na bus na ito sa oscilloscope, makikita mo ang patuloy na pag-uusap. Sa mga board ng OOBoards, ang lokal na bus ang konektado sa konektor ng I2C, hindi ito kinakailangan kung ano ang gusto natin. Ang NETWORK bus ay karaniwang bus na ginagamit upang makipag-usap sa ibang mga aparato / oopics, sa OOBoards ang bus na ito ay walang konektor. Upang ma-access ang bus na ito, dapat kang maghinang ng mga wire sa mga pin na 42 at 37 ng microcontroller (minarkahan ang N_SDA, N_SCL sa eskematiko ayon sa pagkakabanggit).

Hakbang 2: Idagdag ang Mga Pullup Resistor

Kapag ang mga koneksyon sa SDA at SCL ay ginawa sa bawat processor, magagawa ng dalawang board

maiugnay sa pamamagitan ng pagkonekta ng SDA sa SDA, SCL sa SCL, at pagkonekta ng isang karaniwang ground wire sa pagitan ng mga board. Kakailanganin mo rin ang isang pull-up risistor sa bawat linya (gumamit ako ng 12k, ngunit iyon lamang ang kung ano ang nakahiga ako sa paligid). Tandaan na kailangan mo lamang ng isang pullup risistor bawat linya para sa isang kabuuang dalawang resistors (hindi 4).

Hakbang 3: Programa ang Alipin

Ngayon na ang mga pisikal na koneksyon ay naroon, kakailanganin mong i-program ang microcontroller ng alipin. Nagdagdag ako ng ilang code sa ibaba na dapat magsimula ka.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main () & aposset ang aming I2C address sa 2 (tandaan, dapat itong tumugma sa remote at aposaddress na itinakda namin sa master code) ooPIC. Node = 2 & apossetup isang LED LED. IOLine = 5 LED. = cvOutput & aposnow, i-link ang output ng aming object na DDELink sa & aposthe LED, at i-on ito … ngayon nang awtomatiko, ang LED ay magpapikit ng SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Hakbang 4: Programa ang Guro

Panghuli, programa ang master microcontroller. Bigyang pansin ang mga linya na nagtakda sa DDELink's. Pag-aari ng lokasyon: Maliban kung maitakda ito nang maayos, HINDI ito gagana!

Dim Master Bilang Bagong oDDELinkDim wire Bilang Bagong oWireDim hz1 Bilang Bagong oBitSub Main () at i-aposlink ang 1 segundo na timer sa kaunting maaari nating ma-access at ang aposthis na bit ay magpapalipat-lipat ng isang beses bawat segundo wire. Input. Link (ooPIC. Hz1) wire. Output. Ang link (hz1) wire. Operate = cvTrue & aposthis ay nagtatakda ng I2C address ng aming lokal na microcontroller at aposthe I2C interface ay hindi aktibo hanggang sa maitakda ang isang address ooPIC. Node = 1 & aposnow na-set up namin ang aming DDELink object, ang aming input ay medyo hz1 at aposnote na ang ang object ay mayroon ding. Output na pag-aari na ginagamit at apos kapag nasa recieve mode kami ng Master. Input. Link (hz1) at aposthis ay ang I2C address ng remote microcontroller, tandaan na & aposin ang code ng alipin, sinabi namin sa ito na magkaroon ng isang address ng 2 Master. Node = 2 & aposugh … ito ang malaswang bahagi, ito ang "address" ng DDELink at aposobject sa puwang ng alipin at aposs memory. Upang malaman ang numerong ito, & aposwe kailangang buksan at ipagsama ang code ng alipin, pagkatapos ay tingnan ang goto-> Compiled Code. & aposlook para sa isang bagay tulad ng: & aposL *. Construct. Begin; Dim bilang bagong oDDELink & aposwhere * ay anumang numero, at ito ang pangalan ng iyong DDELink object at aposin ang iyong code ng alipin. Ang linya kaagad sa ibaba nito ay dapat basahin ang isang bagay tulad ng: & aposC0020: 041; Ito.. Address & aposthe number sa kanan ng & apos: & apos ay ang address ng alipin na DDELink object Master. Ang lokasyon = 41 & aposthis ay nagsasabi sa bagay na ipadadala namin data (ibig sabihin, kopyahin ang data mula sa aming. Pag-aari ng pag-input at aposto ang mga alipin. pag-aari ng output (tala, kung itinakda mo ito upang matanggap, ito ay ang kabaligtaran) = cvTrue Do & aposcheck upang makita kung kasalukuyang nagpapadala kami ng data Kung Master. Transmitting = cvFalse Pagkatapos & apossetting ang halagang ito sa 1 ay magdudulot sa master na ipadala ang halaga sa alipin at aposnote, awtomatiko itong mai-reset sa 0 sa pagkumpleto ng paghahatid ng Master. Sync = 1 Wakas Kung LoopEnd Sub

Inirerekumendang: