Съдържание:

Свързване на две OOBoards заедно чрез I2C: 4 стъпки
Свързване на две OOBoards заедно чрез I2C: 4 стъпки

Видео: Свързване на две OOBoards заедно чрез I2C: 4 стъпки

Видео: Свързване на две OOBoards заедно чрез I2C: 4 стъпки
Видео: Automatic Start-Stop Controller with DS3231 Real-Time Clock 2024, Ноември
Anonim
Свързване на две OOBoards заедно чрез I2C
Свързване на две OOBoards заедно чрез I2C

Тази инструкция обхваща как да свържете две OOBoards, използвайки I2C.

Стъпка 1: Свързване към I2C мрежова шина

Свързване към мрежова шина I2C
Свързване към мрежова шина I2C
Свързване към мрежова шина I2C
Свързване към мрежова шина I2C

На OOBoards има два I2C автобуса, локална шина и мрежова шина.

OOPIC кодът по същество е интерпретиран език, т.е. "кодът" се съхранява в EEPROM и се чете/интерпретира от микропроцесора в реално време. EEPROM използва LOCAL I2C шина за комуникация с микроконтролера. Ако погледнете този местен автобус на осцилоскопа, ще видите постоянно бърборене. На дъските OOBoards локалната шина е това, което е свързано към I2C конектора, това не е непременно това, което искаме. Шината NETWORK обикновено е шината, която се използва за комуникация с други устройства/oopics, на OOBoards тази шина няма конектор. За да получите достъп до тази шина, трябва да запоите проводници към пинове 42 и 37 на микроконтролера (маркирани съответно N_SDA, N_SCL на схемата).

Стъпка 2: Добавете издърпващите резистори

След като SDA и SCL връзки са направени на всеки процесор, двете платки могат

да бъдат свързани заедно чрез свързване на SDA към SDA, SCL към SCL и свързване на общ заземен проводник между дъските. Ще ви трябва и издърпващ резистор на всяка линия (използвах 12k, но точно това имах наоколо). Имайте предвид, че имате нужда само от един издърпващ резистор на линия за общо два резистора (не 4).

Стъпка 3: Програмирайте Slave

Сега, когато физическите връзки са налице, ще трябва да програмирате подчинения микроконтролер. Добавих по -долу код, който трябва да ви помогне да започнете.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main () & постави нашия I2C адрес на 2 (имайте предвид, че това трябва да съвпада с дистанционния & aposaddress, който сме задали в главния код) ooPIC. Node = 2 & apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, свържете изхода на нашия обект DDELink към & aposthe LED и го включете … сега автоматично LED ще мига SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Стъпка 4: Програмирайте Master

И накрая, програмирайте главния микроконтролер. Обърнете специално внимание на редовете, които задават свойството. Location на DDELink: Освен ако това не е настроено правилно, това НЕ работи!

Dim Master As New oDDELinkDim проводник като нов oWireDim hz1 As New oBitSub Main () & aposlink 1 секунден таймер към бита, до който можем да получим достъп & aposthis бита ще превключва веднъж в секунда проводник. Link (hz1) wire. Operate = cvTrue & aposthis задава I2C адреса на локалния ни микроконтролер & aposthe I2C интерфейсът не е активен, докато не бъде зададен адрес ooPIC. Node = 1 & aposnow ние настройваме нашия обект DDELink, нашият вход е битът hz1 & aposnote, че обектът също има свойство. Output, което се използва & apos, когато сме в режим получаване Master. Input. Link (hz1) & aposthis е I2C адресът на отдалечения микроконтролер, имайте предвид, че & aposin подчинения код, ние му казваме да има адрес от 2 Master. Node = 2 & aposugh … това е глупавата част, това е "адресът" на DDELink & aposobject в паметта на slave & aposs. За да разберете този номер, & aposwe трябва да отворите и компилирате подчинения код, след това да отидете на View-> Compiled Code. & aposlook за нещо като: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * е произволно число и е името на вашия обект DDELink & aposin вашия подчинен код. Редът непосредствено под него трябва да чете нещо като: & aposC0020: 041; Това..адрес & апостолен номер вдясно от & apos: & apos е адресът на подчинения обект DDELink Master. Location = 41 & aposthis казва на обекта, който ще изпращаме данни (т.е. копиране на данни от нашето. Input свойство и апосто на подчинените.output свойство (забележете, ако сте настроили това да получава, това е обратното) Master. Direction = cvSend & aposturn it on, but nothing is still yet… Master. Operate = cvTrue Направете & aposcheck, за да видите дали в момента предаваме данни. = 1 Край Ако LoopEnd Sub

Препоръчано: