- हार्डवेयर सेटअप और आवश्यकता
- Nuvoton N76E003 के साथ एलईडी इंटरफेसिंग के लिए सर्किट आरेख
- नुवोटन N76E003 पर टाइमर पिन
- नुवोटन N76E003 में टाइमर रजिस्टर
- Nuvoton N76E003 में टाइम्स के प्रकार
- टाइमर के लिए प्रोग्रामिंग Nuvoton N76E003 माइक्रोकंट्रोलर
- चमकती कोड और टाइमर कार्यक्षमता के लिए आउटपुट का सत्यापन
हमारे पिछले नुवोतन माइक्रोकंट्रोलर ट्यूटोरियल में, हमने एक आरंभिक गाइड के रूप में एक बुनियादी एलईडी ब्लिंकिंग प्रोग्राम का उपयोग किया और एक स्पर्श स्विच को जोड़ने के लिए इनपुट के रूप में जीपीआईओ को भी बाधित किया। उस ट्यूटोरियल के साथ, हम पूरी तरह से जानते हैं कि केइल परियोजना को कैसे कॉन्फ़िगर किया जाए और प्रोग्रामिंग के लिए पर्यावरण को N76E003 Nuvoton माइक्रोकंट्रोलर में सेट किया जाए। यह माइक्रोकंट्रोलर यूनिट के आंतरिक परिधीय का उपयोग करने और N76E003 के इनबिल्ट टाइमर का उपयोग करके थोड़ा आगे बढ़ने का समय है ।
हमारे पिछले ट्यूटोरियल में, हमने केवल एक एलईडी ब्लिंक करने के लिए एक सॉफ्टवेयर देरी का उपयोग किया था, इसलिए इस ट्यूटोरियल में, हम सीखेंगे कि टाइमर देरी फ़ंक्शन और साथ ही टाइमर ISR (इंटरप्ट सर्विस रूटीन) का उपयोग कैसे करें और दो अलग-अलग एलईडी को ब्लिंक करें। आप अन्य माइक्रोकंट्रोलर के साथ टाइमर का उपयोग कैसे करें, यह जांचने के लिए आप Arduino टाइमर ट्यूटोरियल और PIC टाइमर ट्यूटोरियल भी देख सकते हैं। ज्यादा समय बर्बाद किए बिना आइए मूल्यांकन करें कि हमें किस तरह के हार्डवेयर सेटअप की आवश्यकता है।
हार्डवेयर सेटअप और आवश्यकता
जैसा कि इस परियोजना की आवश्यकता टाइमर ISR और टाइमर देरी फ़ंक्शन को सीखने के लिए है, हम दो एल ई डी का उपयोग करेंगे, जिसमें से एक को लूप में टाइमर की देरी का उपयोग करके ब्लिंक किया जाएगा और दूसरे को ISR फ़ंक्शन के अंदर ब्लिंक किया जाएगा।
चूंकि N76E003 विकास बोर्ड में एक एलईडी उपलब्ध है, इसलिए इस परियोजना को एलईडी वर्तमान को सीमित करने के लिए एक अतिरिक्त एलईडी और वर्तमान सीमित अवरोधक की आवश्यकता होती है। जिन घटकों की हमें आवश्यकता है -
- एलईडी का कोई भी रंग
- 100R रोकनेवाला
उल्लेख करने के लिए नहीं, उपरोक्त घटकों के अलावा, हमें N76E003 माइक्रोकंट्रोलर आधारित विकास बोर्ड के साथ-साथ न्यू-लिंक प्रोग्रामर की आवश्यकता है । इसके अतिरिक्त, सभी घटकों को जोड़ने के लिए ब्रेडबोर्ड और हुकअप तारों की भी आवश्यकता होती है।
Nuvoton N76E003 के साथ एलईडी इंटरफेसिंग के लिए सर्किट आरेख
जैसा कि हम नीचे योजनाबद्ध में देख सकते हैं, टेस्ट एलईडी विकास बोर्ड के अंदर उपलब्ध है और यह पोर्ट 1.4 पर जुड़ा हुआ है। एक अतिरिक्त एलईडी पोर्ट 1.5 से जुड़ा है। प्रतिरोधक R3 का उपयोग एलईडी करंट को सीमित करने के लिए किया जाता है। चरम बाईं ओर, प्रोग्रामिंग इंटरफ़ेस कनेक्शन दिखाया गया है।
नुवोटन N76E003 पर टाइमर पिन
N76E003 का पिन आरेख नीचे चित्र में देखा जा सकता है-
जैसा कि हम देख सकते हैं, प्रत्येक पिन के अलग-अलग विनिर्देश हैं और प्रत्येक पिन का उपयोग कई उद्देश्यों के लिए किया जा सकता है। हालांकि, पिन 1.5 जो एक एलईडी आउटपुट पिन के रूप में उपयोग किया जाता है, यह PWM और अन्य कार्यक्षमता खो देगा। लेकिन, यह एक समस्या नहीं है क्योंकि इस परियोजना के लिए एक और कार्यक्षमता की आवश्यकता नहीं है।
पिन 1.5 को आउटपुट के रूप में और इनपुट के रूप में पिन 1.6 को चुनने के पीछे कारण यह है कि आसान कनेक्शन के लिए GND और VDD पिन की निकटतम उपलब्धता है। हालाँकि, 20 पिनों में से इस माइक्रोकंट्रोलर में, 18 पिनों का उपयोग GPIO पिन के रूप में किया जा सकता है और किसी भी अन्य GPIO पिन का उपयोग आउटपुट और इनपुट संबंधी उद्देश्यों के लिए किया जा सकता है, पिन 2.0 को छोड़कर जो रीसेट इनपुट के लिए समर्पित रूप से उपयोग किया जाता है और इसका उपयोग नहीं किया जा सकता है आउटपुट। सभी GPIO पिन को नीचे वर्णित मोड में कॉन्फ़िगर किया जा सकता है।
डेटशीट के अनुसार, PxM1.n, और PxM2.n दो रजिस्टर हैं जिनका उपयोग I / O पोर्ट के नियंत्रण संचालन को निर्धारित करने के लिए किया जाता है। चूँकि हम LED का उपयोग कर रहे हैं और हमें सामान्य आउटपुट पिन के रूप में पिन की आवश्यकता है, इसलिए हम पिन के लिए Quasi-bidirectional मोड का उपयोग करेंगे।
नुवोटन N76E003 में टाइमर रजिस्टर
किसी भी माइक्रोकंट्रोलर यूनिट के लिए टाइमर एक महत्वपूर्ण चीज है। माइक्रोकंट्रोलर एक अंतर्निर्मित टाइमर परिधीय के साथ आता है। Nuvoton N76E003 भी 16-बिट टाइमर बाह्य उपकरणों के साथ आता है । हालांकि, प्रत्येक टाइमर का उपयोग विभिन्न उद्देश्यों के लिए किया जाता है, और किसी भी टाइमर इंटरफ़ेस का उपयोग करने से पहले टाइमर के बारे में जानना महत्वपूर्ण है।
Nuvoton N76E003 में टाइम्स के प्रकार
टाइमर 0 और 1:
ये दो टाइमर टाइमर 0 और टाइमर 1 8051 टाइमर के साथ समान हैं। इन दो टाइमर का उपयोग सामान्य टाइमर या काउंटर के रूप में किया जा सकता है। ये दो टाइमर चार मोड में काम करते हैं। में मोड 0, उन टाइमर 13 बिट टाइमर / काउंटर मोड में संचालित होगा। में मोड 1, संकल्प उन दो टाइमर का थोड़ा 16-बिट किया जाएगा। में मोड 2, टाइमर एक 8 बिट संकल्प के साथ एक स्वत: पुनः लोड मोड के रूप में विन्यस्त कर रहे हैं। में मोड 3, टाइमर 1 रुका है और टाइमर 0 एक ही समय में एक काउंटर और टाइमर के रूप में इस्तेमाल किया जा सकता।
इन चार मोड में से, ज्यादातर मामलों में मोड 1 का उपयोग किया जाता है। ये दो टाइमर फिक्स्ड या प्रीस्कूल मोड (Fys / 12) में Fsys (सिस्टम फ्रीक्वेंसी) का उपयोग कर सकते हैं। इसे बाहरी घड़ी स्रोत से भी देखा जा सकता है।
टाइमर 2:
टाइमर 2 भी एक 16-बिट टाइमर है जो मुख्य रूप से तरंग कैप्चर के लिए उपयोग किया जाता है। यह सिस्टम घड़ी का भी उपयोग करता है और 8 अलग-अलग पैमानों का उपयोग करके घड़ी की आवृत्ति को विभाजित करके विभिन्न अनुप्रयोगों में उपयोग किया जा सकता है। इसका उपयोग तुलना मोड में या पीडब्लूएम उत्पन्न करने के लिए भी किया जा सकता है।
टाइमर 0 और टाइमर 1 की तरह ही, टाइमर 2 को ऑटो-रीलोड मोड में उपयोग किया जा सकता है।
टाइमर 3:
टाइमर 3 का उपयोग 16-बिट टाइमर के रूप में भी किया जाता है और इसका उपयोग UART के लिए बॉड रेट क्लॉक स्रोत के लिए किया जाता है। इसमें एक ऑटो-रीलोड सुविधा भी है। इस टाइमर का उपयोग केवल सीरियल संचार (UART) के लिए करना महत्वपूर्ण है यदि एप्लिकेशन को UART संचार की आवश्यकता है। यह सलाह दी जाती है कि टाइमर सेटअप में परस्पर विरोधी प्रक्रिया के कारण इस टाइमर को अन्य प्रयोजनों के लिए उपयोग न करें।
निगरानी घड़ी:
वॉचडॉग टाइमर को मानक 6-बिट टाइमर के रूप में उपयोग किया जा सकता है लेकिन इसका उपयोग इस उद्देश्य के लिए नहीं किया जाता है। सामान्य प्रयोजन टाइमर के रूप में वॉचडॉग टाइमर का उपयोग कम बिजली की खपत वाले अनुप्रयोगों के लिए लागू होता है, जहां माइक्रोकंट्रोलर अधिकतर निष्क्रिय मोड में रहता है।
वॉचडॉग टाइमर, जैसा कि नाम से पता चलता है, हमेशा जांचता है कि माइक्रोकंट्रोलर ठीक से काम कर रहा है या नहीं। लटके हुए या रुके हुए माइक्रोकंट्रोलर के मामले में, WDT (वॉचडॉग टाइमर) स्वचालित रूप से माइक्रोकंट्रोलर को रीसेट करता है जो यह सुनिश्चित करता है कि माइक्रोकंट्रोलर स्थिर कोड में बिना रुके, लटके हुए या रुके हुए स्थितियों में चलता है।
स्व वेक-अप टाइमर:
यह एक और टाइमर परिधीय है जो एक वॉचडॉग टाइमर के समान समर्पित समय प्रक्रिया को पूरा करता है। यह टाइमर, समय-समय पर सिस्टम को जगाता है जब माइक्रोकंट्रोलर कम पावर मोड में चल रहा होता है।
स्लीप मोड से माइक्रोकंट्रोलर को जगाने के लिए इस टाइमर परिधीय का उपयोग आंतरिक रूप से या बाह्य बाह्य उपकरणों का उपयोग किया जा सकता है। इस परियोजना के लिए, हम टाइमर 1 और टाइमर 2 का उपयोग करेंगे।
टाइमर के लिए प्रोग्रामिंग Nuvoton N76E003 माइक्रोकंट्रोलर
पिंस को आउटपुट के रूप में सेट करना:
चलिए सबसे पहले आउटपुट सेक्शन से शुरू करते हैं। हम दो एलईडी का उपयोग कर रहे हैं, एक ऑनबोर्ड एलईडी है, जिसका नाम टेस्ट है, और पोर्ट P1.4 के साथ जुड़ा हुआ है और एक बाहरी एलईडी पिन P1.5 के साथ जुड़ा हुआ है।
इसलिए, इन दो पिनों को नीचे दिए गए कोड स्निपेट का उपयोग करके उन दो एलईडी को जोड़ने के लिए आउटपुट पिन के रूप में कॉन्फ़िगर किया गया है।
#define Test_LED P14 #define LED1 P15
ये दो पिन सेटअप फ़ंक्शन में अर्ध-द्विदिश पिन के रूप में सेट किए गए हैं।
शून्य सेटअप (शून्य) {P14_Quasi_Mode; P15_Quasi_Mode; }
टाइमर फ़ंक्शन सेट करना:
सेटअप फ़ंक्शन में, टाइमर 2 को वांछित आउटपुट प्राप्त करने के लिए कॉन्फ़िगर करने की आवश्यकता है। इसके लिए, हम T2MOD रजिस्टर को 1/128 क्लॉक डिवाइडिंग फैक्टर के साथ सेट करेंगे और इसे ऑटो-रीलोड देरी मोड में उपयोग करेंगे। यहां देखें T2MOD रजिस्टर का अवलोकन-
T2MOD रजिस्टर के 4,5, और 6-बिट टाइमर 2 घड़ी डिवाइडर और 7-बिट सेट ऑटो-रीलोड मोड सेट करते हैं। यह नीचे पंक्ति का उपयोग करके किया जाता है -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
ये दो पंक्तियाँ Function_define.h फ़ाइल में परिभाषित की गई हैं
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
अब, ये पंक्तियाँ टाइमर 2 ISR के लिए आवश्यक समय मान निर्धारित करती हैं।
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
जिसे आगे Function_define.h फ़ाइल के रूप में परिभाषित किया गया है-
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 एमएस
तो, 16000000 16 मेगाहर्ट्ज की क्रिस्टल आवृत्ति है जो 100 एमएस समय विलंब की स्थापना कर रही है।
नीचे दो लाइनें टाइमर 2 लो और हाई बाइट्स को खाली कर देंगी।
टीएल 2 = 0; TH2 = 0;
अंत में नीचे दिया गया कोड टाइमर 2 को बाधित करेगा और टाइमर 2 को शुरू करेगा।
set_ET2; // Timer2 इंटरप्ट set_EA सक्षम करें; set_TR2; // टाइमर 2 रन
पूरा सेटअप फ़ंक्शन नीचे दिए गए कोड में देखा जा सकता है-
शून्य सेटअप (शून्य) { P14_Quasi_Mode; P15_Quasi_Mode; TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode; RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8; टीएल 2 = 0; TH2 = 0; set_ET2; // Timer2 इंटरप्ट set_EA सक्षम करें ; set_TR2; // टाइमर 2 }
टाइमर 2 ISR फ़ंक्शन:
टाइमर 2 ISR फ़ंक्शन को नीचे दिए गए कोड में देखा जा सकता है।
शून्य टाइमर 2_ISR (शून्य) व्यवधान 5 { clr_TF2; // क्लियर टाइमर 2 इंटरप्ट फ्लैग LED1 = ~ LED1; // LED1 टॉगल, P1.5 में जुड़ा; }
चमकती कोड और टाइमर कार्यक्षमता के लिए आउटपुट का सत्यापन
कोड (नीचे दिया गया) जब संकलित किया गया था 0 चेतावनी और 0 त्रुटियां और मैंने इसे Keil में डिफ़ॉल्ट चमकती विधि का उपयोग करके फ्लैश किया था। चमकती के बाद एल ई डी एक परिभाषित टाइमर देरी में निमिष के रूप में क्रमादेशित थे।
इस कोड के लिए बोर्ड कैसे काम करता है, इसके पूर्ण प्रदर्शन के लिए नीचे दिए गए वीडियो को देखें। आशा है कि आपने ट्यूटोरियल का आनंद लिया और कुछ उपयोगी सीखा यदि आपके कोई प्रश्न हैं तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें। अन्य तकनीकी प्रश्नों को पोस्ट करने के लिए आप हमारे मंचों का भी उपयोग कर सकते हैं।