Mundarija:

I2C yordamida ikkita OOBoardni bir -biriga ulash: 4 qadam
I2C yordamida ikkita OOBoardni bir -biriga ulash: 4 qadam

Video: I2C yordamida ikkita OOBoardni bir -biriga ulash: 4 qadam

Video: I2C yordamida ikkita OOBoardni bir -biriga ulash: 4 qadam
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Noyabr
Anonim
I2C yordamida ikkita OOBoardni bir -biriga ulash
I2C yordamida ikkita OOBoardni bir -biriga ulash

Bu ko'rsatma I2C yordamida ikkita OOBoardni qanday ulashni o'z ichiga oladi.

1 -qadam: I2C tarmoq avtobusiga ulanish

I2C tarmoq avtobusiga ulanish
I2C tarmoq avtobusiga ulanish
I2C tarmoq avtobusiga ulanish
I2C tarmoq avtobusiga ulanish

OOBoards -da ikkita I2C avtobuslari, mahalliy avtobus va tarmoqli avtobus mavjud.

OOPIC kodi asosan talqin qilinadigan tildir, ya'ni "kod" EEPROMda saqlanadi va real vaqtda mikroprotsessor tomonidan o'qiladi/talqin qilinadi. EEPROM mikrokontroller bilan aloqa qilish uchun LOCAL I2C avtobusidan foydalanadi. Agar siz osiloskopda ushbu mahalliy avtobusga qarasangiz, doimiy suhbatni ko'rasiz. OOBoards taxtalarida I2C ulagichiga ulangan mahalliy avtobus, bu biz xohlagan narsa emas. NETWORK avtobusi odatda boshqa qurilmalar bilan aloqa qilish uchun ishlatiladigan avtobusdir, OOBoards -da bu avtobusda ulagich yo'q. Ushbu avtobusga kirish uchun siz simlarni mikrokontrollerning 42 va 37 -chi pinlariga lehimlashingiz kerak (sxemada N_SDA, N_SCL bilan belgilangan).

2 -qadam: tortishish rezistorlarini qo'shing

Har bir protsessorga SDA va SCL ulanishlari o'rnatilgandan so'ng, ikkita taxtani ulash mumkin

SDA -ni SDA -ga, SCL -ni SCL -ga ulash va taxtalar orasidagi umumiy topraklama simini ulash orqali bir -biriga bog'langan. Bundan tashqari, sizga har bir chiziqda tortish qarshiligi kerak bo'ladi (men 12k ishlatardim, lekin bu men yotgan joy). E'tibor bering, har bir satrda jami ikkita rezistor uchun bitta tortish qarshiligi kerak (4 emas).

3 -qadam: Qulni dasturlash

Endi jismoniy ulanishlar mavjud bo'lganda, siz qul mikrokontrollerni dasturlashingiz kerak bo'ladi. Men sizni boshlashingiz kerak bo'lgan ba'zi kodlarni qo'shdim.

Dim Qul yangi oDDELinkDim LED sifatida yangi oDIO1Sub Main () va I2C manzilimizni 2 ga aylantiring (esda tuting, bu biz bosh kodda o'rnatgan masofaviy va aposadressga mos kelishi kerak) ooPIC. Node = 2 & LED LED. IOLine = 5 LED yo'nalishi. = cvOutput & aposnow, DDELink ob'ektining chiqishini LEDga & aposthe ga ulang va uni yoqing … endi avtomatik tarzda LED SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

4 -qadam: Magistrni dasturlash

Nihoyat, asosiy mikrokontrollerni dasturlashtiring. DDELink. Location xususiyatini belgilaydigan satrlarga katta e'tibor bering: Agar bu to'g'ri sozlanmasa, bu ishlamaydi!

Dim Master yangi oDDELinkDim sim sifatida yangi oWireDim hz1 sifatida yangi oBitSub Main () & 1 soniya taymerini biz kira oladigan bir songa ulang & aposthis bit endi sekundiga bir marta o'tkaziladi. Link (hz1) tel. Operate = cvTrue & aposthis mahalliy mikrokontrolerimizning I2C manzilini o'rnatadi va manzilni o'rnatmaguncha I2C interfeysi aposthe faol emas, ooPIC. Bizda Master. Input. Link (hz1) va aposthis - bu masofaviy mikrokontrolderning I2C manzili, "qul kodini aposin qilish uchun biz 2 manzilga ega bo'lishni aytamiz." Master. Node = 2 & aposugh… bu yomon qism, bu DDELink va aposobjectning qul va boshqa xotira maydonidagi "manzili". Bu raqamni aniqlash uchun & aposwe qul kodini ochishi va kompilyatsiya qilishi kerak, keyin View-> Compiled Code-ga o'tish kerak. & aposlook kabi bir narsaga qarang: & aposL *. Construct. Begin; Dim yangi oDDELink & aposwhere * har qanday raqam bo'lib, bu sizning DDELink ob'ektingizning nomi va qul kodingizni aposin. Darhol quyidagi satrda shunday narsa yozilishi kerak: & aposC0020: 041; Bu … & aposning o'ng tomonidagi manzil va aposthe raqami: & apos - bu Master DDELink ob'ektining manzili Master. Location = 41 & aposthis biz yuboradigan ob'ektni bildiradi. Ma'lumotlar (ya'ni, ma'lumotlarni bizning. Input xususiyatidan ko'chirish va qullarga aposto. nusxa ko'chirish xususiyati = cvTrue Do & aposcheck biz hozirda ma'lumotlarni uzatayotganimizni bilish uchun agar Master. Transmitting = cvFalse Keyin & bu qiymatni 1 ga uzatish ustaga qiymatni qulga yuborishiga olib keladi va bu uzatish tugagandan so'ng avtomatik ravishda 0 ga qaytariladi. = LoopEnd Sub bo'lsa, 1 tugatish

Tavsiya: