Mündəricat:

I2C istifadə edərək iki OOBoard -ı bir -birinə bağlamaq: 4 addım
I2C istifadə edərək iki OOBoard -ı bir -birinə bağlamaq: 4 addım

Video: I2C istifadə edərək iki OOBoard -ı bir -birinə bağlamaq: 4 addım

Video: I2C istifadə edərək iki OOBoard -ı bir -birinə bağlamaq: 4 addım
Video: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, Iyul
Anonim
I2C istifadə edərək iki OOBoard -ı birlikdə birləşdirmək
I2C istifadə edərək iki OOBoard -ı birlikdə birləşdirmək

Bu təlimat I2C istifadə edərək iki OOBoardın necə bağlanacağını əhatə edir.

Addım 1: I2C Şəbəkə Avtobusuna qoşulma

I2C Şəbəkə Avtobusuna qoşulmaq
I2C Şəbəkə Avtobusuna qoşulmaq
I2C Şəbəkə Avtobusuna qoşulmaq
I2C Şəbəkə Avtobusuna qoşulmaq

OOBoards -da iki I2C avtobusu, yerli avtobus və şəbəkə avtobusu var.

OOPIC kodu mahiyyətcə təfsir olunan bir dildir, yəni "kod" EEPROM -da saxlanılır və mikroprosessor tərəfindən real vaxtda oxunur/şərh olunur. EEPROM mikrokontrolörlə əlaqə yaratmaq üçün LOCAL I2C avtobusundan istifadə edir. Bu yerli avtobusa osiloskopda baxsaydınız, davamlı söhbətlər görərdiniz. OOBoards lövhələrində, yerli avtobus I2C konnektoru ilə əlaqəlidir, bu mütləq istədiyimiz şey deyil. NETWORK avtobusu ümumiyyətlə digər cihazlarla/oopiklərlə ünsiyyət qurmaq üçün istifadə olunan avtobusdur, OOBoards -da bu avtobusun konnektoru yoxdur. Bu avtobusa daxil olmaq üçün mikrokontrolörün 42 və 37 sancaqlarına telləri lehimləməlisiniz (müvafiq olaraq sxemdə N_SDA, N_SCL ilə işarələnmişdir).

Addım 2: Pullup Resistors əlavə edin

Hər bir prosessorda SDA və SCL əlaqələri qurulduqdan sonra iki lövhə işləyə bilər

SDA -nı SDA -ya, SCL -ni SCL -yə və lövhələr arasında ortaq bir torpaq telini bağlayaraq bir -birinə bağlanır. Hər bir xəttdə bir çəkmə müqavimətinə də ehtiyacınız olacaq (12k istifadə etdim, ancaq ətrafımda yatdığım budur). Diqqət yetirin ki, cəmi iki müqavimət üçün hər bir xətt üçün yalnız bir çəkmə rezistoruna ehtiyacınız var (4 deyil).

Addım 3: Qulu Proqramlaşdırın

İndi fiziki əlaqələr olduğu üçün, qul mikrokontrolörünü proqramlaşdırmalısınız. Başlamağınız üçün aşağıda bir neçə kod əlavə etdim.

Yeni ODDELinkDim LED olaraq Yeni Qulluq Yeni ODIO1Sub Main () olaraq I2C ünvanınızı 2 -ə qoyun (qeyd edin, bu, master kodunda təyin etdiyimiz uzaqdan və aposadresinə uyğun olmalıdır) ooPIC. Node = 2 & bir LED LED -i yıxın. IOLine = 5 LED. = cvOutput & aposnow, DDELink obyektimizin çıxışını LED -ə bağlayın və yandırın … indi avtomatik olaraq LED SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Addım 4: Master proqramlaşdırın

Nəhayət, əsas mikro nəzarətçini proqramlaşdırın. DDELink's. Location xüsusiyyətini təyin edən sətirlərə diqqət yetirin: Bu düzgün qurulmadıqda bu işləməyəcək!

Dim Master Yeni ODDELinkDim tel kimi Yeni oWireDim hz1 Yeni OBitSub Main () olaraq 1 saniyəlik taymeri əldə edə biləcəyimiz bir qədər aposlinklə bağlayırıq və bu bit indi saniyədə bir dəfə keçəcək. Link (hz1) tel. Operate = cvTrue & aposthis, yerli mikrokontrolörümüzün I2C ünvanını təyin edir və ooPIC. Node = 1 ünvan təyin olunana qədər I2C interfeysi aktiv deyildir. Obyektin də. Master. Input. Link (hz1) & aposthis qəbul rejimində olduğumuzda istifadə edilən & Çıxış xüsusiyyətinə malikdir. Master. Node = 2 & aposugh… bu bədbəxt hissədir, bu DDELink & aposobjectin qul və aposs yaddaş məkanındakı "ünvanı" dır. Bu nömrəni anlamaq üçün & aposwe kölə kodunu açmalı və tərtib etməliyik, sonra View-> Kompilyasiya edilmiş Koda getməliyik. & aposL kimi bir şey üçün & aposlook: Qurun. Başlayın; Yeni oDDELink kimi söndür & aposwhere * hər hansı bir rəqəmdir və DDELink obyektinizin adıdır və qul kodunuzu aposin edir. Aşağıdakı sətir belə bir şey oxumalıdır: & aposC0020: 041; Bu … & apos -un sağ tərəfindəki ünvan & aposthe: & apos, Master DDELink obyektinin ünvanıdır. Lokasiya = 41 & aposthis göndərəcəyimiz obyekti bildirir. məlumatları (yəni, məlumatları kopyalayın. Mülkiyyətimizi daxil edin və qullardan aposto edin. çıxarılan mülkiyyət (qeyd edin, əgər bunu qəbul etməyi təyin etsəniz, əksinədir) = cvTrue Do & aposcheck, əgər hazırda Master. Transmitting = cvFalse Sonra & bu dəyəri 1 -ə aposset etmək masterin kölə & aposnote -ə dəyər göndərməsinə səbəb olarsa, məlumatların ötürülüb -verilmədiyini yoxlayırıq, bu halda Master. Sync ötürülməsi başa çatdıqdan sonra avtomatik olaraq sıfırlanır. = LoopEnd Sub varsa 1 Bitir

Tövsiyə: