- प्रोग्रामिंग के लिए तैयार होना:
- MPLAB-X का उपयोग करके एक नई परियोजना बनाना:
- कॉन्फ़िगरेशन रजिस्टरों को जानना
- MPLAB-X में कॉन्फ़िगरेशन बिट्स सेट करना:
- पलक झपकने के लिए प्रोग्रामिंग पीआईसी:
- सर्किट आरेख और प्रोटीन सिमुलेशन:
यह हमारी PIC ट्यूटोरियल श्रृंखला का दूसरा ट्यूटोरियल है। हमारे पिछले ट्यूटोरियल में PIC माइक्रोकंट्रोलर के साथ शुरुआत करना: PIC और MPLABX का परिचय, हमने अपने PIC माइक्रोकंट्रोलर के बारे में बुनियादी चीजें सीखीं, हमने आवश्यक सॉफ़्टवेयर भी स्थापित किया और एक नया PicKit 3 प्रोग्रामर खरीदा जिसे हम जल्द ही उपयोग करेंगे। अब हम PIC16F877A का उपयोग करके अपने पहले एलईडी ब्लिंकिंग प्रोग्राम के साथ आरंभ करने के लिए तैयार हैं । हम इस ट्यूटोरियल में कॉन्फ़िगरेशन रजिस्टर के बारे में भी जानेंगे।
यह ट्यूटोरियल उम्मीद करता है कि आपने अपने कंप्यूटर पर आवश्यक सॉफ़्टवेयर स्थापित किया है और आपको PIC MCU के बारे में कुछ अच्छे आधारभूत जानकारी हैं। यदि नहीं, तो कृपया पिछले ट्यूटोरियल में वापस जाएं और वहां से आरंभ करें।
प्रोग्रामिंग के लिए तैयार होना:
चूंकि हमने X168 कंपाइलर के साथ PIC16F877A का उपयोग करने का फैसला किया है, इसलिए हम उनकी डेटशीट के साथ शुरुआत करें। मैं सभी को PIC16F877A डेटशीट और XC8 कंपाइलर मैनुअल डाउनलोड करने की सलाह देता हूं, क्योंकि हम अपने ट्यूटोरियल के माध्यम से प्रगति करते हुए इनका अक्सर उल्लेख करेंगे। वास्तव में इसके साथ प्रोग्रामिंग शुरू करने से पहले किसी भी MCU की पूरी डेटशीट को पढ़ना हमेशा एक अच्छा अभ्यास है।
अब, इससे पहले कि हम अपना MPLAB-X खोलते हैं और प्रोग्रामिंग शुरू करते हैं, कुछ बुनियादी चीजें हैं जिनके बारे में किसी को पता होना चाहिए। वैसे भी, चूंकि यह हमारा पहला कार्यक्रम है, इसलिए मैं आप लोगों के साथ बहुत सारे सिद्धांत नहीं रखना चाहता हूं, लेकिन हम यहां और वहां रुकेंगे क्योंकि हम कार्यक्रम करते हैं और मैं आपको इस तरह से चीजों को समझाऊंगा। यदि आपके पास इन सभी के माध्यम से पढ़ने के लिए पर्याप्त समय नहीं है, तो बस एक झलक है और पृष्ठ के निचले भाग में वीडियो में कूदें ।
MPLAB-X का उपयोग करके एक नई परियोजना बनाना:
चरण 1: एमपीलैब-एक्स आईडीई लॉन्च करें जिसे हमने पिछली कक्षा में स्थापित किया था, एक बार लोड होने पर इसे कुछ इस तरह से देखना चाहिए।
चरण 2: फ़ाइलों पर क्लिक करें -> नई परियोजना, या हॉटकी Ctrl + Shift + N का उपयोग करें। आपको निम्न POP-UP मिलेंगे, जिसमें से आपको स्टैंडअलोन प्रोजेक्ट का चयन करना है और Next पर क्लिक करना है।
चरण 3: अब हमें प्रोजेक्ट के लिए अपना डिवाइस चुनना होगा। तो डिवाइस ड्रॉपडाउन सेक्शन पर PIC16F877A टाइप करें । एक बार यह इस तरह होना चाहिए और फिर Next पर क्लिक करें।
चरण 4: अगला पृष्ठ हमें अपनी परियोजना के लिए उपकरण का चयन करने की अनुमति देगा। यह हमारे प्रोजेक्ट के लिए PicKit 3 होगा। PicKit 3 का चयन करें और अगले पर क्लिक करें
चरण 5: अगला पृष्ठ संकलक का चयन करने के लिए कहेगा, XC8 संकलक का चयन करें और अगले पर क्लिक करें।
चरण 6: इस पृष्ठ में हमें अपनी परियोजना का नाम देना होगा और उस स्थान का चयन करना होगा जहां परियोजना को बचाया जाना है। मैंने इस प्रोजेक्ट को ब्लिंक नाम दिया है और इसे अपने डेस्कटॉप पर सहेजा है। आप इसे अपने पसंदीदा तरीके से नाम और सहेज सकते हैं। हमारा प्रोजेक्ट एक्सटेंशन .X के साथ एक फ़ोल्डर के रूप में सहेजा जाएगा, जिसे MAPLB-X द्वारा सीधे लॉन्च किया जा सकता है। एक बार पूर्ण होने पर क्लिक करें।
चरण 7: यह बात है !!! हमारा प्रोजेक्ट बनाया गया है। बाईं सबसे विंडो में प्रोजेक्ट का नाम (हियर ब्लिंक) दिखाई देगा, इस पर क्लिक करें ताकि हम इसके अंदर की सभी डायरेक्टरी देख सकें।
प्रोग्रामिंग शुरू करने के लिए हमें अपनी स्रोत फ़ाइल निर्देशिका के अंदर C मुख्य फ़ाइल जोड़ने की आवश्यकता है। ऐसा करने के लिए बस स्रोत फ़ाइल पर राइट क्लिक करें और नीचे दिए गए चित्र में दिखाए अनुसार नया -> सी मुख्य फ़ाइल चुनें।
चरण 8: निम्नलिखित संवाद बॉक्स दिखाई देगा जिसमें सी-फाइल का नाम उल्लेख करना होगा। मैंने ब्लिंक में फिर से नाम दिया है, लेकिन चुनाव आपके लिए बचा है। इसे फाइल नेम कॉलम में नाम दें और फिनिश पर क्लिक करें।
चरण 9: C मुख्य फ़ाइल बन जाने के बाद, IDE इसे हमारे लिए कुछ डिफ़ॉल्ट कोड के साथ खोलेगा, जैसा कि नीचे दिखाया गया है।
चरण 10: अब यह है कि हम अपने कोड को C-Main फ़ाइल में प्रोग्रामिंग शुरू कर सकते हैं। हमारे ट्यूटोरियल में डिफ़ॉल्ट कोड का उपयोग नहीं किया जाएगा। तो चलो उन्हें पूरी तरह से हटा दें।
कॉन्फ़िगरेशन रजिस्टरों को जानना
किसी भी माइक्रोकंट्रोलर को प्रोग्राम करने से पहले हमें इसके कॉन्फ़िगरेशन रजिस्टर के बारे में जानना होगा।
तो ये कॉन्फ़िगरेशन रजिस्टर क्या हैं, हमें इन्हें कैसे और क्यों सेट करना चाहिए?
PIC उपकरणों में कई स्थान होते हैं जिनमें कॉन्फ़िगरेशन बिट्स या फ़्यूज़ होते हैं। ये बिट्स मौलिक उपकरण संचालन को निर्दिष्ट करते हैं, जैसे कि ऑसिलेटर मोड, वॉचडॉग टाइमर, प्रोग्रामिंग मोड और कोड सुरक्षा। कोड को चलाने के लिए इन बिट्स को सही ढंग से सेट किया जाना चाहिए अन्यथा हमारे पास नॉन-रनिंग डिवाइस है । इसलिए हमारे ब्लिंक प्रोग्राम के साथ शुरू करने से पहले इन कॉन्फ़िगरेशन रजिस्टर के बारे में जानना बहुत महत्वपूर्ण है।
इन कॉन्फ़िगरेशन रजिस्टर का उपयोग करने के लिए हमें डेटशीट के माध्यम से पढ़ना होगा और समझना होगा कि विभिन्न प्रकार के कॉन्फ़िगरेशन बिट्स उपलब्ध हैं और उनके कार्य क्या हैं। इन बिट्स को एक कॉन्फ़िगरेशन प्रैगमा का उपयोग करके हमारी प्रोग्रामिंग आवश्यकताओं के आधार पर सेट या रीसेट किया जा सकता है।
प्रज्ञा के निम्नलिखित रूप हैं।
#pragma config सेटिंग = राज्य-मूल्य #pragma config register = value
जहाँ सेटिंग एक विन्यास सेटिंग डिस्क्रिप्टर है, उदाहरण के लिए, WDT, और राज्य वांछित राज्य का एक शाब्दिक विवरण है, जैसे, OFF। निम्नलिखित उदाहरणों पर विचार करें।
#pragma config WDT = ON // वॉचडॉग टाइमर चालू करें #pragma config WDTPS = 0x1A // टाइमर पोस्टस्केल मान निर्दिष्ट करें
आराम करें!!….. RELAX !!…. RELAX !!…...
मुझे पता है कि यह हमारे सिर में बहुत अधिक चला गया है और इन कॉन्फ़िगरेशन बिट्स को सेट करना एक नौसिखिया के लिए थोड़ा मुश्किल लग सकता है !! लेकिन, यह हमारे एमपीलैब-एक्स के साथ नहीं है।
MPLAB-X में कॉन्फ़िगरेशन बिट्स सेट करना:
माइक्रोचिप ने विभिन्न प्रकार के कॉन्फ़िगरेशन बिट्स के चित्रमय प्रतिनिधित्व का उपयोग करके इस थका देने वाली प्रक्रिया को बहुत आसान बना दिया है। तो अब उन्हें सेट करने के लिए हमें बस नीचे दिए गए चरणों का पालन करना होगा।
चरण 1: विंडो पर क्लिक करें -> पीआईसी मेमोरी व्यू -> कॉन्फ़िगरेशन बिट्स। जैसा की नीचे दिखाया गया।
चरण 2: यह हमारे आईडीई के निचले भाग में कॉन्फ़िगरेशन बिट्स विंडो खोलना चाहिए जैसा कि नीचे दिखाया गया है। यह वह स्थान है जहां हम अपनी आवश्यकताओं के अनुसार प्रत्येक कॉन्फ़िगरेशन बिट सेट कर सकते हैं। जैसा कि हम चरणों के माध्यम से आगे बढ़ते हैं, मैं प्रत्येक बिट और उसके उद्देश्य की व्याख्या करूंगा।
चरण 3: पहला बिट ऑसिलेटर चयन बिट है।
PIC16F87XA को चार अलग-अलग थरथरानवाला मोड में संचालित किया जा सकता है। इन चार मोड को दो कॉन्फ़िगरेशन बिट्स (FOSC1 और FOSC0) प्रोग्रामिंग के द्वारा चुना जा सकता है:
- एलपी लो-पावर क्रिस्टल
- एक्सटी क्रिस्टल / गुंजयमान यंत्र
- एचएस हाई-स्पीड क्रिस्टल / गुंजयमान यंत्र
- आरसी रेसिस्टर / कैपेसिटर
हमारी परियोजनाओं के लिए हम 20Mhz ऑस्क का उपयोग कर रहे हैं इसलिए हमें ड्रॉपडाउन बॉक्स से एचएस का चयन करना होगा ।
चरण 4: अगला बिट हमारे वॉचडॉग टाइमर इनेबल बिट होगा।
वॉचडॉग टाइमर एक फ्री रनिंग, ऑन-चिप आरसी थरथरानवाला है जिसे किसी भी बाहरी घटकों की आवश्यकता नहीं है। यह RC थरथरानवाला OSC1 / CLKI पिन के RC दोलक से अलग है। इसका मतलब है कि अगर डिवाइस के OSC1 / CLKI और OSC2 / CLKO पिन पर घड़ी रोक दी गई है तो भी WDT चलेगा। सामान्य ऑपरेशन के दौरान, एक WDT टाइम-आउट एक डिवाइस रीसेट (वॉचडॉग टाइमर रीसेट) उत्पन्न करता है। स्थिति रजिस्टर में TO बिट एक वॉचडॉग टाइमर टाइम-आउट पर साफ हो जाएगा। अगर हमारे सॉफ्टवेयर कोडिंग में टाइमर क्लियर नहीं होता है तो पूरा MCU हर WDT टाइमर ओवरफ्लो पर रीसेट हो जाएगा। WDT विन्यास बिट को समाशोधन करके स्थायी रूप से अक्षम किया जा सकता है।
हम अपने प्रोग्राम में WDT का उपयोग नहीं कर रहे हैं इसलिए ड्रॉपडाउन बॉक्स से OFF को चुनकर हमें इसे क्लियर कर दें ।
चरण 5: अगला बिट पावर-अप टाइमर बिट होगा।
पावर-अप टाइमर केवल POR से पावर-अप पर एक निश्चित 72 एमएस नाममात्र समय-आउट प्रदान करता है। पॉवरअप टाइमर आंतरिक आरसी थरथरानवाला पर संचालित होता है। जब तक PWRT सक्रिय है चिप को रीसेट में रखा जाता है। PWRT का समय विलंब वीडीडी को स्वीकार्य स्तर तक बढ़ने की अनुमति देता है। PWRT को सक्षम या अक्षम करने के लिए एक कॉन्फ़िगरेशन बिट प्रदान किया जाता है।
हमें अपने कार्यक्रम में इस तरह की देरी की आवश्यकता नहीं होगी, इसलिए हम उसे भी बंद कर देंगे।
चरण 6: अगला बिट लो-वोल्टेज प्रोग्रामिंग होगा।
कॉन्फ़िगरेशन शब्द का LVP बिट कम वोल्टेज ICSP प्रोग्रामिंग को सक्षम करता है। यह मोड ऑपरेटिंग वोल्टेज रेंज में VDD स्रोत का उपयोग करके ICSP के माध्यम से माइक्रोकंट्रोलर को प्रोग्राम करने की अनुमति देता है। इसका मतलब केवल यह है कि वीपीपी को VIHH में नहीं लाया जाना चाहिए, बल्कि सामान्य ऑपरेटिंग वोल्टेज पर छोड़ा जा सकता है। इस मोड में, RB3 / PGM पिन प्रोग्रामिंग फ़ंक्शन को समर्पित है और एक सामान्य उद्देश्य I / O पिन होना बंद कर देता है। प्रोग्रामिंग के दौरान, VDD को MCLR पिन पर लागू किया जाता है। प्रोग्रामिंग मोड में प्रवेश करने के लिए, VDD को RB3 / PGM पर लागू किया जाना चाहिए बशर्ते LVP बिट सेट हो।
आइए हम LVP को बंद करें ताकि हम RB3 को I / O पिन के रूप में उपयोग कर सकें। ऐसा करने के लिए, बस ड्रॉपडाउन बॉक्स का उपयोग करके इसे बंद करें।
चरण 7: अगले बिट्स EEPROM और प्रोग्राम मेमोरी प्रोटेक्शन बिट्स होंगे। यदि इस बिट को चालू किया जाता है, तो एक बार एमसीयू प्रोग्राम किए जाने के बाद कोई भी हार्डवेयर से हमारे प्रोग्राम को पुनः प्राप्त नहीं करेगा। लेकिन अभी के लिए हम तीनों को बंद कर दें।
एक बार सेटिंग्स के निर्देशानुसार डायलॉग बॉक्स को कुछ इस तरह देखना चाहिए।
Step 8: अब Generate Source Code to Output पर क्लिक करें, हमारा कोड अब जेनरेट हो जाएगा, बस इसे हेडर फाइल के साथ कॉपी करें और हमारे Blink.c C-File पर पेस्ट करें, जैसा कि नीचे दिखाया गया है।
वह यह है कि हमारा कॉन्फ़िगरेशन कार्य किया गया है। हमारे सभी प्रोजेक्ट्स के लिए यह कॉन्फ़िगरेशन हो सकता है। लेकिन अगर आप रुचि रखते हैं तो आप बाद में उनके साथ गड़बड़ कर सकते हैं।
पलक झपकने के लिए प्रोग्रामिंग पीआईसी:
इस कार्यक्रम में हम एक I / O पिन से जुड़ी एक एलईडी को ब्लिंक करने के लिए हमारे PIC माइक्रोकंट्रोलर का उपयोग करने जा रहे हैं । आइए हमारे PIC16F877A पर उपलब्ध विभिन्न I / O पिनों पर एक नज़र डालें ।
जैसा कि ऊपर दिखाया गया है PIC16F877 में 5 बुनियादी इनपुट / आउटपुट पोर्ट हैं । इन्हें आमतौर पर PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) और PORT E (RE) द्वारा दर्शाया जाता है। इन पोर्ट का उपयोग इनपुट / आउटपुट इंटरफेसिंग के लिए किया जाता है। इस नियंत्रक में, "PORT A" केवल 6 बिट्स चौड़ा (RA-0 से RA-5), "PORT B", "PORT C", "PORT D" केवल 8 बिट्स चौड़ा है (RB-0 से RB-7, RC-0 से RC-7, RD-0 से RD-7), "PORT E" केवल 3 बिट चौड़ा (RE-0 से RE-2) है।
ये सभी बंदरगाह द्वि-दिशात्मक हैं। पोर्ट की दिशा टीआरआईएस (एक्स) रजिस्टरों (टीआरआईएस ए का उपयोग पोर्ट-ए की दिशा निर्धारित करने के लिए उपयोग किया जाता है, टीआरआईएस बी, पोर्ट-बी, आदि के लिए दिशा निर्धारित करने के लिए उपयोग किया जाता है) द्वारा नियंत्रित किया जाता है। TRIS (X) बिट '1' सेट करने से संबंधित PORT (X) बिट इनपुट के रूप में सेट हो जाएगा। TRIS (X) बिट '0' को साफ़ करने से संबंधित PORT (X) बिट आउटपुट के रूप में सेट हो जाएगा।
हमारे प्रोजेक्ट के लिए हमें PORT B के पिन RB3 को आउटपुट के रूप में बनाना होगा ताकि हमारी LED इससे कनेक्ट हो सके। यहाँ PIC माइक्रोकंट्रोलर के साथ एलईडी ब्लिंकिंग के लिए कोड है:
#शामिल
पहले हमने #define _XTAL_FREQ 20000000 का उपयोग करके बाहरी क्रिस्टल आवृत्ति निर्दिष्ट की है। फिर शून्य मुख्य () फ़ंक्शन में, हमने अपने MCU को निर्देश दिया कि हम RB3 का उपयोग आउटपुट (TRISB - 0X00;) पिन के रूप में करने जा रहे हैं । फिर अंत में एक अनंत जबकि लूप का उपयोग किया जाता है ताकि एलईडी ब्लिंकिंग हमेशा के लिए चले। एलईडी को ब्लिंक करने के लिए हमें बस इसे बंद करना होगा और ध्यान देने योग्य देरी के साथ बंद करना होगा।
कोडिंग पूरी हो जाने के बाद, रन -> बिल्ड मेन प्रोजेक्ट कमांड का उपयोग करके प्रोजेक्ट का निर्माण करें। यह आपके कार्यक्रम को संकलित करना चाहिए। यदि सब कुछ ठीक है (जैसा कि यह होना चाहिए) स्क्रीन के निचले भाग में एक आउटपुट कंसोल एक BUILD SUCCESSFUL संदेश दिखाएगा, जैसा कि नीचे दी गई तस्वीर में दिखाया गया है।
सर्किट आरेख और प्रोटीन सिमुलेशन:
एक बार जब हम एक परियोजना का निर्माण करते हैं और यदि बिल्ड सफल होता है, तो हमारे आईडीई की पृष्ठभूमि में एक एचईएक्स फ़ाइल उत्पन्न हुई होगी। यह HEX फाइल नीचे डायरेक्टरी के अंदर मिल सकती है
यदि आप किसी अन्य स्थान पर सेव कर चुके हैं तो यह आपके लिए अलग-अलग हो सकता है।
अब, जल्दी से प्रोटीज खोलें जो हमने पहले स्थापित किया है और इस परियोजना के लिए योजनाबद्ध बनायें। हम इसे इस परियोजना के दायरे से बाहर करने के तरीके के बारे में नहीं बताने जा रहे हैं। लेकिन चिंता करने की नहीं, यह नीचे दिए गए वीडियो में बताया गया है। एक बार जब आप अनुदेश का पालन करते हैं और योजनाबद्ध का निर्माण करते हैं तो इसे कुछ इस तरह देखना चाहिए
आउटपुट का अनुकरण करने के लिए, हेक्स फ़ाइल लोड करने के बाद स्क्रीन के निचले बाएँ कोने पर स्थित प्ले बटन पर क्लिक करें। इसे MCU के RB3 से जुड़ी एलईडी को ब्लिंक करना चाहिए। यदि आपको इसमें कोई समस्या है, तो कृपया वीडियो देखें, यदि अभी भी हल नहीं हुआ है तो सहायता के लिए टिप्पणी अनुभाग का उपयोग करें।
अब हमने PIC माइक्रोकंट्रोलर के साथ अपनी पहली परियोजना बनाई है और सिमुलेशन सॉफ्टवेयर का उपयोग करके आउटपुट को सत्यापित किया है। जाओ और कार्यक्रम के साथ चारों ओर मोड़ो और परिणामों का निरीक्षण करो। जब तक हम अपने अगले प्रोजेक्ट पर मिलते हैं।
ओह इंतजार !!
हमारी अगली परियोजना में हम सीखेंगे कि वास्तविक हार्डवेयर पर यह काम कैसे किया जाए। उसके लिए हमें निम्नलिखित उपकरणों की आवश्यकता होगी ताकि वे तैयार रहें। तब तक HAPPY LEARNING !!
- PicKit 3
- PIC16F877A आईसी
- 40 - पिन आईसी धारक
- परफ़ेक्ट बोर्ड
- 20Mhz क्रिस्टल OSC
- महिला और पुरुष बर्गस्टिक पिंस
- 33pf कैपेसिटर - 2Nos
- 680 ओम रेसिस्टर
- किसी भी रंग का एलईडी
- सोल्डरिंग किट।