विषयसूची:

I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना: 4 कदम
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना: 4 कदम

वीडियो: I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना: 4 कदम

वीडियो: I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना: 4 कदम
वीडियो: I2C Part 1 - Using 2 Arduinos 2024, नवंबर
Anonim
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना

यह निर्देश योग्य कवर करता है कि I2C का उपयोग करके दो OOBoards को कैसे जोड़ा जाए।

चरण 1: I2C नेटवर्क बस से कनेक्ट करना

I2C नेटवर्क बस से कनेक्ट करना
I2C नेटवर्क बस से कनेक्ट करना
I2C नेटवर्क बस से कनेक्ट करना
I2C नेटवर्क बस से कनेक्ट करना

OOBoards पर दो I2C बसें हैं, एक स्थानीय बस और एक नेटवर्क बस।

OOPIC कोड अनिवार्य रूप से एक व्याख्या की गई भाषा है, अर्थात "कोड" EEPROM में संग्रहीत होता है, और वास्तविक समय में माइक्रोप्रोसेसर द्वारा पढ़ा / व्याख्या किया जाता है। EEPROM माइक्रोकंट्रोलर के साथ संचार करने के लिए LOCAL I2C बस का उपयोग करता है। यदि आप आस्टसीलस्कप पर इस स्थानीय बस को देखते हैं, तो आप लगातार बकबक देखेंगे। OOBoards बोर्डों पर, स्थानीय बस वही है जो I2C कनेक्टर से जुड़ी है, यह जरूरी नहीं कि हम क्या चाहते हैं। NETWORK बस आमतौर पर वह बस होती है जिसका उपयोग अन्य उपकरणों/ओपिक्स के साथ संचार करने के लिए किया जाता है, OOBoards पर इस बस में कनेक्टर नहीं होता है। इस बस तक पहुंचने के लिए, आपको माइक्रोकंट्रोलर के पिन 42 और 37 (क्रमशः योजनाबद्ध पर N_SDA, N_SCL चिह्नित) के लिए तारों को मिलाप करना होगा।

चरण 2: पुलअप रेसिस्टर्स जोड़ें

एक बार प्रत्येक प्रोसेसर पर एसडीए और एससीएल कनेक्शन बन जाने के बाद, दो बोर्ड कर सकते हैं

एसडीए को एसडीए, एससीएल को एससीएल से जोड़कर, और बोर्डों के बीच एक आम जमीन के तार को जोड़कर एक साथ जोड़ा जा सकता है। आपको प्रत्येक पंक्ति पर एक पुल-अप रोकनेवाला की भी आवश्यकता होगी (मैंने 12k का उपयोग किया था, लेकिन बस वही जो मैं लेटा हुआ था)। ध्यान दें कि कुल दो प्रतिरोधों (4 नहीं) के लिए आपको प्रति पंक्ति केवल एक पुलअप रोकनेवाला चाहिए।

चरण 3: गुलाम को प्रोग्राम करें

अब जब भौतिक कनेक्शन हैं, तो आपको स्लेव माइक्रोकंट्रोलर को प्रोग्राम करना होगा। मैंने नीचे कुछ कोड जोड़ा है जो आपको शुरू करना चाहिए।

नए oDDELinkDim LED के रूप में डिम स्लेव नए oDIO1Sub Main() के रूप में एलईडी और हमारे I2C पते को 2 पर सेट करें (ध्यान दें, यह हमारे द्वारा मास्टर कोड में सेट किए गए रिमोट और एपोसड्रेस से मेल खाना चाहिए) ooPIC. Node = 2 और एक LED LED को सेट करें। IOLine = 5 LED.दिशा = cvOutput &aposnow, हमारे DDELink ऑब्जेक्ट के आउटपुट को &aposthe LED से लिंक करें, और इसे चालू करें…अब स्वचालित रूप से, LED SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub को ब्लिंक करेगी।

चरण 4: मास्टर को प्रोग्राम करें

अंत में, मास्टर माइक्रोकंट्रोलर प्रोग्राम करें। DDELink की. Location प्रॉपर्टी को सेट करने वाली पंक्तियों पर पूरा ध्यान दें: जब तक इसे ठीक से सेट नहीं किया जाता, यह काम नहीं करेगा!

डिम मास्टर नए oDDELinkDim वायर के रूप में नए oWireDim hz1 के रूप में नए oBitSub Main() के रूप में और 1 सेकंड के टाइमर को उस बिट से लिंक करें जिसे हम एक्सेस कर सकते हैं और aposthis बिट अब प्रति सेकंड वायर में एक बार टॉगल करेगा। Input. Link(ooPIC. Hz1) wire. Output। Link(hz1) wire. Operate = cvTrue और aposthis हमारे स्थानीय माइक्रोकंट्रोलर का I2C पता सेट करता है और I2C इंटरफ़ेस तब तक सक्रिय नहीं होता जब तक कि कोई पता सेट नहीं हो जाता ooPIC. Node = 1 और अब हम अपना DDELink ऑब्जेक्ट सेटअप करते हैं, हमारा इनपुट बिट hz1 है और ध्यान दें कि ऑब्जेक्ट में एक. Output प्रॉपर्टी भी होती है जिसका उपयोग किया जाता है और जब हम रिसीव मोड में होते हैं Master. Input. Link (hz1) और aposthis रिमोट माइक्रोकंट्रोलर का I2C पता होता है, ध्यान दें कि स्लेव कोड में और aposin, हम इसे 2 का पता रखने के लिए कहते हैं Master. Node = 2 &aposugh…यह भद्दा हिस्सा है, यह DDELink का "पता" है और स्लेव और एपॉस मेमोरी स्पेस में aposobject। इस संख्या का पता लगाने के लिए, &aposwe को स्लेव कोड को खोलने और संकलित करने की आवश्यकता है, फिर गोटो व्यू-> कंपाइल कोड। कुछ इस तरह की तलाश करें: &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * कोई भी संख्या है, और यह आपके DDELink ऑब्जेक्ट का नाम है और आपके स्लेव कोड को aposin करता है। इसके ठीक नीचे की रेखा कुछ इस तरह पढ़नी चाहिए: &aposC0020:041;यह..&apos:&apos के दाईं ओर का पता & aposthe नंबर स्लेव DDELink ऑब्जेक्ट मास्टर का पता है। स्थान = ४१ और उस ऑब्जेक्ट को बताता है जिसे हम भेज रहे हैं डेटा (यानी, हमारे.इनपुट प्रॉपर्टी से डेटा कॉपी करें और दासों को एपोस्टो करें। आउटपुट प्रॉपर्टी (ध्यान दें, यदि आप इसे प्राप्त करने के लिए सेट करते हैं, तो यह विपरीत है) मास्टर। डायरेक्शन = cvइसे भेजें और इसे चालू करें, लेकिन अभी तक कुछ भी नहीं हो रहा है… मास्टर। संचालित करें = cvTrue यह देखने के लिए जांचें कि क्या हम वर्तमान में डेटा संचारित कर रहे हैं यदि Master. Transmitting = cvFalse तो इस मान को 1 पर सेट करने से मास्टर स्लेव को मान भेज देगा और यह स्वचालित रूप से ट्रांसमिशन मास्टर के पूरा होने पर 0 पर रीसेट हो जाएगा। = 1 अंत अगर लूपएंड सब

सिफारिश की: