विषयसूची:

एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें: 5 कदम
एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें: 5 कदम

वीडियो: एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें: 5 कदम

वीडियो: एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें: 5 कदम
वीडियो: देखें कैसे इस दुनिया में सांपों की प्रजातियां विलुप्त हो रही है 😰| Snake in Rail Line #Shorts 2024, जुलाई
Anonim
एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें
एक तस्वीर के साथ एक डिजिटल रोटरी स्विच से रोटेशन की दिशा की व्याख्या कैसे करें

इस निर्देश का उद्देश्य यह वर्णन करना है कि एक माइक्रोकंट्रोलर के साथ एक डिजिटल (चतुर्भुज कोडित) रोटरी स्विच को कैसे इंटरफ़ेस किया जाए। चिंता न करें, मैं समझाता हूँ कि हमारे लिए क्वाडरेचर कोडेड का क्या अर्थ है। यह इंटरफ़ेस और इसके साथ आने वाला सॉफ़्टवेयर माइक्रोकंट्रोलर को एक डिटेंट से दूसरे में प्रत्येक चाल के लिए रोटेशन की दिशा को पहचानने की अनुमति देगा। मैंने हाल ही में एक माइक्रोकंट्रोलर प्रोजेक्ट में इस प्रकार के स्विच का उपयोग किया है जिसमें 16 के साथ एक नॉब का उपयोग करके एक दबाव सेट बिंदु दर्ज करने की आवश्यकता होती है। अप/डाउन बटन के बजाय डिटेंट्स। विचार उपयोगकर्ता को वांछित दबाव में "डायल इन" करने की अनुमति देना था। नतीजतन, हमें स्विच से स्थिति की जानकारी प्राप्त करने के लिए एक सॉफ्टवेयर रूटीन विकसित करना पड़ा और मुख्य सिस्टम के लिए दबाव सेट बिंदु को बढ़ाने या घटाने के लिए रोटेशन की दिशा में कटौती की। इस निर्देश में, मैं भौतिक इंटरफ़ेस को कवर करूँगा माइक्रोकंट्रोलर के लिए, रोटरी स्विच के लिए संचालन का सिद्धांत, सॉफ्टवेयर के संचालन के सिद्धांत के साथ-साथ कटौती दिनचर्या। अंत में, मैं आपको कटौती दिनचर्या का अपना आवेदन दिखाऊंगा। जैसे-जैसे हम आगे बढ़ेंगे, मैं चीजों को कुछ सामान्य रखने की कोशिश करूंगा ताकि इस विचार को अधिक से अधिक प्लेटफॉर्म पर लागू किया जा सके लेकिन मैंने जो किया वह भी साझा करूंगा ताकि आप एक विशिष्ट एप्लिकेशन देख सकें।

चरण 1: भाग

पार्ट्स
पार्ट्स

इसे लागू करने के लिए, आपको आवश्यकता होगी: एक रोटरी स्विच (चतुर्भुज कोडित) पुल अप रेसिस्टर्स उपयुक्त माइक्रोकंट्रोलर प्लेटफॉर्म मेरी परियोजना के लिए, मैंने ग्रेहिल 61C22-01-04-02 ऑप्टिकल एनकोडर का उपयोग किया। रोटरी स्विच के लिए डेटा शीट स्विच से आने वाली दो डेटा लाइनों पर 8.2k ओम पुल अप रेसिस्टर्स के लिए कॉल करती है। आप जिस एन्कोडर का उपयोग करना चाहते हैं, उसके लिए आप डेटा शीट की जांच करना चाहेंगे। मेरे द्वारा उपयोग किए जाने वाले रोटरी स्विच को अक्षीय पुश बटन स्विच के साथ भी ऑर्डर किया जा सकता है। यह चयन करने के लिए एक उपयोगी विशेषता है जिसे डायल किया गया है, आदि। लेकिन मैं यहां इसके इंटरफ़ेस पर चर्चा नहीं करूंगा। मेरे पास एक "उपयुक्त माइक्रोकंट्रोलर प्लेटफॉर्म" सूचीबद्ध है क्योंकि (मुझे लगता है) इसे एक से अधिक प्लेटफॉर्म पर लागू किया जा सकता है। मैंने बहुत से लोगों को इंस्ट्रक्शंस के लिए अन्य माइक्रोकंट्रोलर का उपयोग करते देखा है इसलिए मैं सामान्य दृष्टिकोण भी दिखाना चाहता हूं। मैंने माइक्रोचिप PIC16F877A के साथ उपयोग के लिए PIC बेसिक प्रो में सभी कोड लिखे हैं। वास्तव में, माइक्रोकंट्रोलर पर आपको जिस महत्वपूर्ण चीज की आवश्यकता होती है, वह है दो पिनों में से किसी एक पर तर्क परिवर्तन होने पर बाधित करने की क्षमता। PIC16F877A पर, इसे PORTB चेंज इंटरप्ट कहा जाता है। अन्य नियंत्रकों पर इसके लिए अन्य नाम हो सकते हैं। यह माइक्रोकंट्रोलर इंटरप्ट फीचर इस कार्यान्वयन को इतना सुरुचिपूर्ण बनाता है।

चरण 2: हार्डवेयर इंटरफ़ेस

हार्डवेयर इंटरफ़ेस
हार्डवेयर इंटरफ़ेस

एक "सरल" समाधान के लिए माइक्रोकंट्रोलर से 16 कनेक्शन के साथ "सिंगल पोल-16 थ्रो" स्विच होना चाहिए। प्रत्येक स्विच आउटपुट को माइक्रोकंट्रोलर पर एक पिन से जोड़ा जाएगा ताकि प्रत्येक डायल स्थिति को माइक्रोकंट्रोलर द्वारा जांचा जा सके। यह I/O पिन का अत्यधिक उपयोग है। हालात और भी बदतर हो जाते हैं अगर हम स्विच पर हमारे लिए 16 से अधिक पदों (डिटेंट्स) को उपलब्ध कराना चाहते हैं। स्विच पर प्रत्येक अतिरिक्त स्थिति के लिए माइक्रोकंट्रोलर को एक अतिरिक्त इनपुट की आवश्यकता होगी। यह जल्दी से एक माइक्रोकंट्रोलर पर इनपुट का एक बहुत ही अक्षम उपयोग बन जाता है। रोटरी स्विच की सुंदरता दर्ज करें। रोटरी स्विच में डेटा शीट पर ए और बी के रूप में सूचीबद्ध माइक्रोकंट्रोलर के लिए केवल दो आउटपुट हैं। केवल चार संभावित तर्क स्तर हैं जो ये पंक्तियाँ ले सकते हैं: AB = 00, 01, 10 और 11। यह स्विच को माइक्रोकंट्रोलर से जोड़ने में आपके द्वारा उपयोग की जाने वाली इनपुट लाइनों की संख्या को बहुत कम कर देता है। इसलिए, हमने इनपुट लाइनों की संख्या को घटाकर केवल दो कर दिया है। अब क्या? ऐसा लगता है कि हमें वास्तव में 16 अलग-अलग राज्यों की आवश्यकता है लेकिन इस नए स्विच में केवल चार हैं। क्या हमने खुद को पैर में गोली मार ली है? नहीं। पढ़ते रहिये। हम समझाने के लिए रोटरी स्विच ऑपरेशन के पीछे के सिद्धांत को थोड़ा कवर करेंगे।

चरण 3: ऑपरेशन का हार्डवेयर सिद्धांत

ऑपरेशन का हार्डवेयर सिद्धांत
ऑपरेशन का हार्डवेयर सिद्धांत
ऑपरेशन का हार्डवेयर सिद्धांत
ऑपरेशन का हार्डवेयर सिद्धांत
ऑपरेशन का हार्डवेयर सिद्धांत
ऑपरेशन का हार्डवेयर सिद्धांत

उपरोक्त "सिंगल पोल-16 थ्रो" स्विच का उपयोग करके रोटेशन डायरेक्शन सेंसिंग संभव है, लेकिन यह माइक्रोकंट्रोलर पर बहुत सारे इनपुट का उपयोग करता है। रोटरी स्विच का उपयोग करने से माइक्रोकंट्रोलर में इनपुट की संख्या कम हो जाती है लेकिन अब हमें स्विच से आने वाले संकेतों की व्याख्या करने और उन्हें एक रोटेशन दिशा में अनुवाद करने की आवश्यकता है। मैंने पहले उल्लेख किया था कि स्विच क्वाडरेचर कोडित था। यह भी इस समाधान में प्रमुख लालित्यों में से एक है। इसका मतलब यह है कि एक 2-बिट कोड है जो स्विच देता है जो स्विच की स्थिति से मेल खाता है। आप सोच रहे होंगे: "यदि माइक्रोकंट्रोलर में दो बिट इनपुट है, तो हम सभी 16 स्थितियों का प्रतिनिधित्व कैसे करते हैं?" यह एक अच्छा सवाल है। हम उन सभी का प्रतिनिधित्व नहीं करते हैं। हमें केवल घुंडी की सापेक्ष स्थिति जानने की जरूरत है ताकि हम घूर्णन की दिशा निर्धारित कर सकें। घुंडी की पूर्ण स्थिति अप्रासंगिक है। दक्षिणावर्त घुमाने के लिए, वह कोड जो स्विच देता है वह हर चार अवरोधों को दोहराता है और ग्रे कोडित होता है। ग्रे कोडेड का अर्थ है कि प्रत्येक स्थिति परिवर्तन के लिए केवल एक बिट परिवर्तन होता है। एबी इनपुट के बजाय इस तरह बाइनरी में दक्षिणावर्त रोटेशन के लिए गिनती: 00, 01, 10, 11, यह इस तरह बदलता है: 00, 10, 11, 01। ध्यान दें कि बाद वाले पैटर्न के लिए, केवल एक इनपुट बदल रहा है सेट। माइक्रोकंट्रोलर में AB इनपुट के लिए वामावर्त मान इस तरह दिखाई देंगे: 00, 01, 11, 10. यह केवल AB = 00 के साथ पहले सूचीबद्ध किए गए दक्षिणावर्त पैटर्न के विपरीत है। अधिक दृश्य स्पष्टीकरण के लिए आरेखों पर एक नज़र डालें।.

चरण 4: संचालन का सॉफ्टवेयर सिद्धांत

संचालन का सॉफ्टवेयर सिद्धांत
संचालन का सॉफ्टवेयर सिद्धांत

रोटेशन की दिशा को कम करने वाली दिनचर्या बाधित होती है। आपके द्वारा चुने गए माइक्रोकंट्रोलर को किसी भी समय इंटरप्ट सक्षम होने पर (कम से कम) दो पिनों में से किसी एक पर परिवर्तन करने में सक्षम होना चाहिए। इसे PIC16F877A पर PORTB चेंज इंटरप्ट कहा जाता है। जब भी स्विच घुमाया जाता है, माइक्रोकंट्रोलर बाधित हो जाएगा और प्रोग्राम निष्पादन इंटरप्ट सर्विस रूटीन (आईएसआर) को भेज दिया जाएगा। ISR जल्दी से पता लगा लेगा कि स्विच किस तरह घुमाया गया था, उचित रूप से एक ध्वज सेट करें और जल्दी से मुख्य कार्यक्रम पर वापस आएं। यदि उपयोगकर्ता स्विच को बहुत तेज़ी से घुमाता है तो हमें यह जल्दी से होने की आवश्यकता है। हम जानते हैं कि ग्रे कोडेड एबी पैटर्न हर चार पदों पर दोहराता है, इसलिए यदि हम उन चार पदों के बीच संक्रमण के लिए नियमित कार्य करते हैं तो यह अन्य सभी के लिए काम करेगा। ध्यान दें कि एक चार स्थिति चक्र में, चार किनारे होते हैं। ए इनपुट के साथ-साथ बी इनपुट के लिए एक बढ़ती हुई बढ़त और एक गिरती हुई धार। माइक्रोप्रोसेसर हर बार एक किनारा होने पर बाधित हो जाएगा जिसका अर्थ है कि जब भी नॉब घुमाया जाता है तो माइक्रोकंट्रोलर बाधित हो जाएगा। नतीजतन, ISR को यह पता लगाने की जरूरत है कि घुंडी किस तरह से घुमाई गई थी। यह कैसे करना है, यह जानने में हमारी मदद करने के लिए, हम घड़ी की दिशा में घुमाने के लिए तरंग की ओर मुड़ते हैं। ध्यान दें कि किसी भी समय A का किनारा होता है, उसका नया मान हमेशा B से भिन्न होता है। जब घुंडी स्थिति 1 से 2 तक जाती है, A तर्क-० से तर्क-१ में परिवर्तित होता है। इस संक्रमण के लिए B अभी भी 0 है और A के नए मान से मेल नहीं खाता है। जब घुंडी स्थिति 3 से 4 तक जाती है, तो A में गिरावट होती है जबकि B तर्क -1 पर रहता है। फिर से ध्यान दें, कि B और A का नया मान भिन्न हैं। अभी, हम देख सकते हैं कि किसी भी समय A दक्षिणावर्त घुमाने के दौरान रुकावट का कारण बनता है, इसका नया मान B से भिन्न होता है। आइए देखें कि क्या होता है। स्थिति 2 से 3 में स्विच के संक्रमण होने पर B का उदय होता है। यहाँ, B का नया मान A के समान है। दक्षिणावर्त घुमाने के लिए अंतिम शेष किनारे को देखते हुए, B की स्थिति 4 से 5 तक गिरती हुई बढ़त है। (स्थिति ५ स्थिति १ के समान है।) B का नया मान यहाँ भी A के समान ही है! अब हम कुछ कटौती कर सकते हैं! यदि A रुकावट का कारण बनता है और A का नया मान B से भिन्न है, तो रोटेशन दक्षिणावर्त था। इसके अलावा, यदि बी रुकावट का कारण बनता है और बी का नया मान ए के समान है, तो रोटेशन दक्षिणावर्त था। आइए जल्दी से वामावर्त रोटेशन के मामले की जांच करें। दक्षिणावर्त घुमाने की तरह, वामावर्त घुमाने से एक चक्र में चार व्यवधान उत्पन्न होंगे: इनपुट A के लिए दो और इनपुट B के लिए दो। इनपुट A में एक बढ़ती हुई बढ़त होती है जब घुंडी स्थिति 4 से 3 तक चलती है और एक गिरती हुई धार स्थिति 2 से 1 तक चलती है। जब घुंडी स्थिति 4 से 3 पर जाती है, तो A का नया मान B के मान के समान होता है। ध्यान दें कि जब A स्थिति 2 से 1 पर जाता है तो उसका नया मान भी वही होता है जो B का होता है। अब, हम देख सकते हैं कि जब A रुकावट का कारण बनता है और इसका नया मान B से मेल खाता है, तो रोटेशन वामावर्त था। जल्दी से, हम सब कुछ सत्यापित करने के लिए इनपुट B को देखेंगे। जब घुंडी स्थिति ५ (जो १ के समान है) से ४ तक चलती है और जब घुंडी स्थिति ३ से २ तक चलती है तो B एक रुकावट पैदा करेगा। इन दोनों मामलों में, B का नया मान मौजूदा मान से मेल नहीं खाता है। ए का जो उन मामलों के विपरीत है जब बी दक्षिणावर्त घुमाने के लिए रुकावट का कारण बनता है। यह अच्छी खबर है। सब कुछ वैसा ही दिखता है जैसा उसे होना चाहिए। संक्षेप में, यदि A रुकावट का कारण बनता है और इसका नया मान B के मान से मेल नहीं खाता है या यदि B रुकावट का कारण बनता है और B का नया मान A के मान से मेल खाता है तो हम जानते हैं कि दक्षिणावर्त रोटेशन था। हम सॉफ्टवेयर में वामावर्त रोटेशन के लिए अन्य मामलों की जांच कर सकते हैं या हम यह मान सकते हैं कि क्योंकि यह दक्षिणावर्त रोटेशन नहीं था, यह वामावर्त था। मेरी दिनचर्या ने बस धारणा बना ली।

चरण 5: सॉफ्टवेयर

सॉफ्टवेयर
सॉफ्टवेयर
सॉफ्टवेयर
सॉफ्टवेयर

मैंने PIC बेसिक प्रो में बिल्ट इन इंटरप्ट का उपयोग नहीं किया। मैंने रूटीन चलाने के लिए डैरेल टेलर से अपने कोड में शामिल कुछ फाइलों का उपयोग किया। यह वह जगह है जहाँ डैरेल का बहुत बड़ा श्रेय है! फाइलें मुफ्त हैं। अधिक जानकारी, अन्य एप्लिकेशन और फाइलों को डाउनलोड करने के लिए बस उनकी वेबसाइट पर जाएं। यदि आप डैरेल टेलर इंटरप्ट के साथ PIC का उपयोग नहीं कर रहे हैं तो आप इस भाग को छोड़ सकते हैं। आप जिस प्लेटफ़ॉर्म का उपयोग कर रहे हैं, उस पर बस इंटरप्ट्स को आवश्यक रूप से सेट करें। डैरेल टेलर (डीटी) इंटरप्ट को स्थापित करने के लिए दो काम करने हैं: १।) अपने में DT_INTS-14.bas और ReEnterPBP.bas फ़ाइलें शामिल करें। code.2.) इसे अपने कोड में कॉपी और पेस्ट करें।ASMINT_LIST मैक्रो; इंटसोर्स, लेबल, टाइप, रीसेटफ्लैग? INT_Handler RBC_INT, _ISR, PBP, yes endm INT_CREATEENDASMIनिर्देश के अंत में ग्राफिक की तरह टैब और रिक्त स्थान डालें ताकि आप अपने कोड में चीजों को थोड़ा आसान देख सकें। आपको अपनी आवश्यकताओं के अनुरूप इसे थोड़ा संशोधित करने की आवश्यकता होगी। लेबल के अंतर्गत, ISR को उस सबरूटीन के नाम से बदलें जो आपका ISR है। अंडरस्कोर मत भूलना! आपको इसकी आवश्यकता है!इंटरप्ट को काम करने के लिए, दो और काम करने हैं:1.) ISR लिखें। आप इसे वैसे ही लिखेंगे जैसे आप PBP सबरूटीन लिखने जा रहे थे, सिवाय इसके कि आपको RETURN के बजाय सबरूटीन के अंत में @ INT_RETURN डालने की आवश्यकता होगी। यह इंटरप्ट को स्वीकार करेगा और प्रोग्राम के निष्पादन को वहीं पर लौटाएगा जहां इसे मुख्य लूप में छोड़ा गया था। ISR के अंदर, आपको इंटरप्ट फ्लैग को साफ करने की आवश्यकता है ताकि आपका प्रोग्राम पुनरावर्ती रुकावट में न फंस जाए। PIC16F877A पर इंटरप्ट फ्लैग को साफ करने के लिए केवल PORTB को पढ़ना ही आवश्यक है। प्रत्येक अलग माइक्रोकंट्रोलर के पास इंटरप्ट फ़्लैग को साफ़ करने का एक अलग तरीका होता है। अपने माइक्रोकंट्रोलर के लिए डेटा शीट की जाँच करें। 2.) जब आप अपने कोड में उस बिंदु पर पहुँच जाते हैं जहाँ आप इंटरप्ट को सक्षम करना चाहते हैं, तो कोड की इस पंक्ति का उपयोग करें:@ INT_ENABLE RBC_INTजब आप इंटरप्ट को अक्षम करना चाहते हैं तो बस उपयोग करें:@ INT_DISABLE RBC_INTबहुत कुछ है जो मैंने अभी कवर किया है उसमें पैक किए गए सामानों का मैं संक्षेप में संक्षेप में बताऊंगा। अब तक, आपका प्रोग्राम कुछ इस तरह दिखना चाहिए:; कोई भी आवश्यक सेट अप या कोडINCLUDE "DT_INTS-14.bas"INCLUDE "ReEnterPBP.bas"ASMINT_LIST मैक्रो; IntSource, लेबल, प्रकार, ResetFlag? INT_Handler RBC_INT, _myISR, PBP, Yes endm INT_CREATEENDASM; कोई अन्य आवश्यक सेट अप या कोड @ INT_ENABLE RBC_INT; कोड जिसे यह जानने की जरूरत है कि घुंडी किस तरह से घूम रही है @ INT_DISABLE RBC_INT; अन्य कोडEND; प्रोग्राम का अंतISR:;ISR कोड यहाँ @ INT_RETURN (इंटरप्ट हैंडलर सेट अप टेबल) मुझे लगता है कि यह वह जगह है जहाँ कोई भी व्यक्ति जो PIC या DT इंटरप्ट का उपयोग नहीं कर रहा है, वह फिर से जुड़ सकता है। अब, हमें वास्तव में ISR लिखने की आवश्यकता है ताकि माइक्रोकंट्रोलर यह जान सके कि नॉब किस दिशा में घूम रहा है। सॉफ्टवेयर थ्योरी सेक्शन से याद करें कि हम रोटेशन की दिशा को घटा सकते हैं यदि हम उस इनपुट को जानते हैं जो रुकावट का कारण बनता है, इसका नया मूल्य और अन्य इनपुट का मूल्य। यहां स्यूडोकोड है: इंटरप्ट फ्लैग को साफ करने के लिए PORTB को स्क्रैच वेरिएबल में पढ़ें चेक करें कि क्या A ने इंटरप्ट किया है। यदि सत्य है, तो A और B की तुलना करें। जाँच करें कि क्या अलग है, यदि भिन्न है, तो यह दक्षिणावर्त घुमाव था अन्यथा, यह वामावर्त था Endifचेक करें कि क्या B रुकावट का कारण है। यदि सत्य है, तो A और B की तुलना करें, यदि भिन्न है, तो जाँचें, यदि समान है, तो यह दक्षिणावर्त घुमाव था, अन्यथा, यह वामावर्त था, Endif इंटरप्ट से वापसी कैसे पता चलेगा कि A या B में परिवर्तन के कारण रुकावट आई है? परिवर्तित इनपुट और अन्य (अपरिवर्तित) इनपुट के नए मूल्य की खोज करना आसान है क्योंकि हम उन्हें ISR के अंदर पढ़ सकते हैं। हमें यह जानने की जरूरत है कि निष्पादन ISR को भेजे जाने से पहले प्रत्येक की स्थिति क्या थी। यह मुख्य दिनचर्या में होता है। मुख्य दिनचर्या एक बाइट चर के लिए बैठती है और प्रतीक्षा करती है जिसे हमने CWflag को 1 पर सेट करने या ISR द्वारा 0 पर साफ़ करने के लिए कहा है। घुंडी के प्रत्येक स्वीकृत परिवर्तन के बाद या यदि कोई घुंडी गतिविधि नहीं है, तो निष्क्रिय स्थिति को इंगित करने के लिए चर को 5 पर सेट किया जाता है। यदि ध्वज सेट हो जाता है या साफ़ हो जाता है, तो मुख्य दिनचर्या तुरंत रोटेशन के आधार पर सेट बिंदु दबाव को उचित रूप से बढ़ाती या घटाती है और फिर CWflag चर को 5 पर सेट करती है क्योंकि नॉब अब फिर से निष्क्रिय है। चूंकि मुख्य दिनचर्या CWflag की जाँच कर रही है, यह A और B रोटरी स्विच मानों की स्थिति का भी दस्तावेजीकरण कर रही है। यह वास्तव में सरल है और इस तरह दिखता है: OldA = AoldB = Bयहाँ वास्तव में कुछ भी सुपर फैंसी नहीं है। लूप की शुरुआत में बस उन दो पंक्तियों को शामिल करें जो रोटेशन के लिए CWflag की जांच करती हैं। हम मुख्य रूटीन में वृद्धि/कमी लूप के अंदर रोटरी नॉब से इनपुट के लॉजिक वैल्यू को अपडेट कर रहे हैं ताकि हम देख सकें कि आईएसआर निष्पादित होने पर किस इनपुट ने बाधा उत्पन्न की। यहाँ ISR कोड है: ABchange: स्क्रैच = PORTB 'इंटरप्ट फ़्लैग को साफ़ करने के लिए PORTB पढ़ें' यदि A रुकावट का कारण बनता है, तो B को रोटेशन की दिशा के लिए जाँचें यदि पुराना है != A तब 'यदि A और B भिन्न हैं, तो यह दक्षिणावर्त रोटेशन था यदि A!= B तब GOTO CW 'अन्यथा, यह वामावर्त रोटेशन था अन्यथा GOTO CCW ENDIF ENDIF' यदि B रुकावट का कारण बनता है, तो रोटेशन की दिशा के लिए A की जाँच करें यदि पुराना है != B तब 'यदि A और B समान हैं, तो यह क्लॉकवाइज रोटेशन था IF A == B फिर GOTO CW ' अन्यथा, यह काउंटर क्लॉकवाइज रोटेशन था ELSE GOTO CCW ENDIF ENDIFCW: CWflag = 1@ INT_RETURNCCW: CWflag = 0@ INT_RETURNI ने AB_ISR.bas फ़ाइल में ISR कोड शामिल किया है क्योंकि कोड में टैब उस तरह से नहीं दिख रहे हैं जिस तरह से उन्हें दिखाना चाहिए। अब, क्योंकि ISR में इनपुट A और B के पुराने मान हैं, यह निर्धारित कर सकता है कि किस इनपुट ने रुकावट पैदा की, इसकी तुलना दूसरे (अपरिवर्तित) इनपुट से करें और दिशा निर्धारित करें रोटेशन का। सभी मुख्य रूटीन को सीडब्ल्यूफ्लैग की जांच करना है कि घुंडी किस दिशा में मुड़ी है (यदि यह है) और काउंटर, सेट पॉइंट या जो कुछ भी आपको पसंद है या जरूरत है उसे बढ़ाना या घटाना है। मुझे आशा है कि यह मदद करता है और बहुत नहीं किया गया है भ्रमित करने वाला। इस प्रकार का इंटरफ़ेस विशेष रूप से उपयोगी है यदि आपका सिस्टम पहले से ही इंटरप्ट का उपयोग कर रहा है क्योंकि यह जोड़ने के लिए केवल एक और इंटरप्ट है। आनंद लेना!

सिफारिश की: