- हार्डवेयर सेटअप और आवश्यकता
- N76E003 एलईडी और पुश बटन इंटरफ़ेस सर्किट
- N76E003 पिन-आउट आरेख
- N76E003 के लिए सरल GPIO नियंत्रण कार्यक्रम
- प्रोग्रामिंग N76E003 और आउटपुट का सत्यापन
हमारे पिछले ट्यूटोरियल में, हमने N76E003 गाइड के साथ शुरू होने के रूप में एक बुनियादी एलईडी ब्लिंकिंग प्रोग्राम का उपयोग किया, हमने पहले से ही सीख लिया कि केइल आईडीई को कैसे कॉन्फ़िगर किया जाए और एनवोटन माइक्रोकंट्रोलर यूनिट N76E003 की प्रोग्रामिंग के लिए वातावरण सेट किया जाए। यह समय थोड़ा आगे बढ़ने और अतिरिक्त हार्डवेयर को नियंत्रित करने के लिए बुनियादी GPIO इंटरफ़ेस का उपयोग करने का है । यदि आप रुचि रखते हैं तो आप नीचे सूचीबद्ध अन्य माइक्रोकंट्रोलर GPIO ट्यूटोरियल भी देख सकते हैं-
- CMMx और TrueSTUDIO के साथ STM32 Nucleo64 - एलईडी नियंत्रण
- STM8S कॉस्मिक सी GPIO कंट्रोल के साथ
- MPLABX एलईडी ब्लिंक ट्यूटोरियल के साथ तस्वीर
- कोड कम्पोज़र स्टूडियो के साथ MSP430 - सरल एलईडी नियंत्रण
चूंकि हमारे पिछले ट्यूटोरियल में, हमने केवल आउटपुट के रूप में IO पिन का उपयोग करके ब्लिंक करने के लिए एक एलईडी का उपयोग किया था । इस ट्यूटोरियल में, हम सीखेंगे कि इनपुट के रूप में एक और IO पिन का उपयोग कैसे करें और एक अतिरिक्त एलईडी को नियंत्रित करें। ज्यादा समय बर्बाद किए बिना, आइए मूल्यांकन करें कि हमें किस तरह के हार्डवेयर सेटअप की आवश्यकता है।
हार्डवेयर सेटअप और आवश्यकता
चूंकि एक स्विच को इनपुट के रूप में उपयोग करने की आवश्यकता होती है, पहली चीज जो हमें चाहिए वह एक पुश बटन है। हमें उस पुश बटन द्वारा नियंत्रित करने के लिए एक अतिरिक्त एलईडी की भी आवश्यकता होती है। इन दोनों से इतर, हमें एलईडी करंट को सीमित करने के लिए एक अवरोधक की भी आवश्यकता होती है और पुशबटन के दौरान पुल-डाउन उद्देश्यों के लिए एक अतिरिक्त अवरोधक की। इसे आगे योजनाबद्ध खंड में प्रदर्शित किया जाएगा। जिन घटकों की हमें आवश्यकता है -
- एक पुश-बटन (किसी भी प्रकार का क्षणिक स्विच विशेष रूप से - स्पर्शक स्विच)
- एलईडी का कोई भी रंग
- 4.7k पुल-डाउन उद्देश्यों के लिए रोकनेवाला
- 100R रोकनेवाला
उल्लेख करने के लिए नहीं, उपरोक्त घटकों के अलावा, हमें N76E003 माइक्रोकंट्रोलर- आधारित विकास बोर्ड के साथ-साथ न्यू-लिंक प्रोग्रामर की आवश्यकता है । इसके अलावा, ब्रेडबोर्ड और हुकअप तारों को सभी घटकों को जोड़ने के लिए भी आवश्यक है जैसा कि नीचे दिखाया गया है।
N76E003 एलईडी और पुश बटन इंटरफ़ेस सर्किट
जैसा कि हम नीचे योजनाबद्ध में देख सकते हैं, विकास बोर्ड के अंदर जो टेस्ट एलईडी है वह पोर्ट 1.4 पर और अतिरिक्त एलईडी पोर्ट 1.5 पर जुड़ा हुआ है । प्रतिरोधक R3 का उपयोग एलईडी करंट को सीमित करने के लिए किया जाता है।
पिन 1.6 में, SW नामक एक पुश-बटन जुड़ा हुआ है। जब भी बटन दबाया जाएगा, पिन उच्च हो जाएगा। अन्यथा, यह 4.7K पुल-डाउन रोकनेवाला R1 द्वारा कम हो जाएगा । यदि आप इस अवधारणा के लिए नए हैं तो आप पुल-अप और पुल-डाउन प्रतिरोधों के बारे में अधिक जान सकते हैं।
पिन एक प्रोग्राम से संबंधित पिन भी है जिसे प्रोग्रामर द्वारा एक्सेस किया जाता है। इसका उपयोग प्रोग्राम डेटा भेजने के लिए किया जाता है। हालाँकि, हम उन पिनों को चुनने के पीछे के कारण के साथ-साथ N76E003 के पिन मैपिंग के बारे में उचित जानकारी प्राप्त करेंगे ।
N76E003 पिन-आउट आरेख
N76E003 का पिन आरेख नीचे चित्र में देखा जा सकता है-
जैसा कि हम देख सकते हैं, प्रत्येक पिन के कई कार्य हैं और विभिन्न प्रयोजनों के लिए इसका उपयोग किया जा सकता है। एक उदाहरण लेते हैं। पिन 1.7 को एक रुकावट, या एनालॉग इनपुट के रूप में या एक सामान्य-उद्देश्य इनपुट-आउटपुट ऑपरेशन के रूप में उपयोग किया जा सकता है। इस प्रकार, यदि कोई पिन I / O पिन के रूप में उपयोग किया जाता है, तो संबंधित कार्यक्षमता उपलब्ध नहीं होगी।
इसके कारण, पिन 1.5 जिसका उपयोग एलईडी आउटपुट पिन के रूप में किया जाता है, यह PWM और अन्य कार्यक्षमता खो देगा। लेकिन यह एक समस्या नहीं है क्योंकि इस परियोजना के लिए एक और कार्यक्षमता की आवश्यकता नहीं है। जीएनडी और वीडीडी पिन की निकटतम उपलब्धता के कारण इनपुट के रूप में पिन 1.5 को आउटपुट के रूप में और पिन 1.6 को इनपुट के रूप में चुनने के पीछे कारण है ।
हालाँकि, 20 पिनों में से इस माइक्रोकंट्रोलर में, 18 पिनों को GPIO पिन के रूप में उपयोग किया जा सकता है। पिन 2.0 को रीसेट इनपुट के लिए समर्पित रूप से उपयोग किया जाता है और इसे आउटपुट के रूप में उपयोग नहीं किया जा सकता है। इस पिन के अलावा, सभी पिनों को नीचे वर्णित मोड में कॉन्फ़िगर किया जा सकता है।
डेटशीट के अनुसार, PxM1.n, और PxM2.n दो रजिस्टर हैं जिनका उपयोग I / O पोर्ट के नियंत्रण संचालन को निर्धारित करने के लिए किया जाता है। अब, GPIO पोर्ट लिखना और पढ़ना पूरी तरह से अलग बात है। क्योंकि पोर्ट कंट्रोल रजिस्टर में लिखने से पोर्ट की लैचिंग अवस्था बदल जाती है, जबकि पोर्ट को पढ़ने से लॉजिक स्टेट की स्थिति प्राप्त होती है। लेकिन एक बंदरगाह को पढ़ने के लिए, इसे एक इनपुट मोड में सेट किया जाना चाहिए।
N76E003 के लिए सरल GPIO नियंत्रण कार्यक्रम
इस ट्यूटोरियल में उपयोग किया गया पूरा प्रोग्राम इस पेज के नीचे पाया जा सकता है, कोड की व्याख्या निम्नानुसार है।
इनपुट के रूप में पिन सेट करना
चलिए पहले इनपुट से शुरू करते हैं। जैसा कि पहले चर्चा की गई थी, पोर्ट की स्थिति को पढ़ने के लिए, इसे इनपुट के रूप में सेट करना होगा। इसलिए, जैसा कि हमने P1.6 को हमारे इनपुट स्विच पिन के रूप में चुना है, हमने इसे कोड स्निपेट की निचली पंक्ति के माध्यम से निरूपित किया है।
# डेफिन एसडब्ल्यू पी 16
इसी पिन को इनपुट के रूप में सेट करना होगा। इस प्रकार, सेटअप फ़ंक्शन पर, पिन नीचे पंक्ति का उपयोग करके इनपुट के रूप में सेट किया गया है।
शून्य सेटअप (शून्य) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
यह पंक्ति P16_Input_Mode; में परिभाषित किया गया है Function_define.h में हेडर फाइल है कि के रूप में पिन बिट सेट "बसपा पुस्तकालय में शामिल हैं" P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 । SET_BIT6 भी एक ही हेडर फाइल में परिभाषित किया गया है जैसे-
#define SET_BIT6 0x40
पिंस को आउटपुट के रूप में सेट करना
इनपुट पिन के समान, आउटपुट पिन जो ऑनबोर्ड टेस्ट एलईडी द्वारा उपयोग किया जाता है और बाहरी LED1 को संबंधित पिन के साथ कोड के पहले खंड में भी परिभाषित किया जाता है।
#define Test_LED P14 #define LED1 P15
उन पिनों को नीचे की रेखाओं का उपयोग करके सेटअप फ़ंक्शन में आउटपुट के रूप में सेट किया गया है।
शून्य सेटअप (शून्य) { P14_Quasi_Mode; // आउटपुट P15_Quasi_Mode; // आउटपुट P16_Input_Mode; }
ये लाइनें भी परिभाषित किया गया है Function_define.h हेडर फाइल जहां यह रूप में पिन बिट सेट P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 । SET_BIT6 भी एक ही हेडर फाइल में परिभाषित किया गया है जैसे-
#define SET_BIT4 0x10
अनंत जबकि पाश
एक हार्डवेयर, अगर बिजली से जुड़ा है और पूरी तरह से काम कर रहा है जो लगातार आउटपुट देना चाहिए, तो एप्लिकेशन कभी भी बंद नहीं होता है। यह अनंत समय के लिए एक ही काम करता है। यहाँ लूप होते हुए अनंत का कार्य आता है । लूप के अंदर का एप्लिकेशन असीम रूप से चलता है।
जबकि (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } और {LED1 = 1; }}}
ऊपर जबकि लूप sw_delay मान के अनुसार एलईडी ब्लिंक करता है और SW की स्थिति भी जांचता है। यदि स्विच दबाया जाता है, तो P1.6 उच्च होगा, और इस प्रकार जब इसे दबाया जाता है, तो रीड की स्थिति 1 होगी। इस स्थिति में, समय के लिए, स्विच दबाया जाता है और पोर्ट P1.6 उच्च रहता है, LED1 चमक जाएगा।
प्रोग्रामिंग N76E003 और आउटपुट का सत्यापन
हमारे N76E003 ट्यूटोरियल के साथ शुरू होने में, हमने सीखा कि N76E003 को पहले से ही कैसे प्रोग्राम किया जाए, इसलिए हम अपने बोर्ड को प्रोग्राम करने के लिए यहां केवल उन्हीं चरणों को दोहराएंगे। कोड सफलतापूर्वक संकलित किया गया और 0 चेतावनी और 0 त्रुटियां लौटा दी गई और केइल द्वारा डिफ़ॉल्ट चमकती विधि का उपयोग करके फ्लैश किया गया।
जैसा कि आप ऊपर की छवि में देख सकते हैं, जब मैं पुश बटन दबाता हूं तो हमारा बाहरी एलईडी चालू होता है। परियोजना का पूरा काम नीचे दिए गए वीडियो में पाया जा सकता है। आशा है कि आपने ट्यूटोरियल का आनंद लिया है और कुछ उपयोगी सीखा है यदि आपके कोई प्रश्न हैं, तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें। अन्य तकनीकी प्रश्न पूछने के लिए आप हमारे मंचों का भी उपयोग कर सकते हैं।