माइक्रोकंट्रोलर - क्या आउटपुट स्टेट्स स्थिर या मल्टीप्लेक्स हैं?


14

PWM को स्पष्ट रूप से कंप्यूटिंग संसाधनों की आवश्यकता होती है (और इस प्रकार अन्य प्रक्रियाओं के साथ एक साथ नहीं किया जा सकता है), लेकिन अगर मुझे आउटपुट 5V या 0V के रूप में एक पिन सेट करना है, तो क्या ये राज्य स्थिर रहते हैं या वे बार-बार "ताज़ा" होते हैं क्योंकि अन्य प्रक्रियाओं पर माइक्रोकंट्रोलर काम करता है ?

यह पाठ में व्याख्या करना कठिन है, इसलिए मैंने अपने प्रश्न के लिए एक सादृश्य के बारे में सोचा। कल्पना कीजिए कि मेरे हाथ में एक ग्लास है और इसे टेबल पर रखने का निर्देश है। फिर मुझे एक कुर्सी पर बैठने का निर्देश दिया जाता है।

मेज पर ग्लास एक राज्य है। क्या मैं गिलास को मेज पर छोड़ता हूं, या क्या मैं इसे वापस उठाता हूं और बैठ जाता हूं और बहुत जल्दी दोहराता हूं ताकि आपको यह एहसास न हो कि कांच कभी मेज से हटा दिया गया था?


या शायद अधिक बस, क्या माइक्रोकंट्रोलर "भूल जाते हैं," यदि आप अपने पिंस के राज्यों के बारे में करेंगे, जब तक कि आप स्पष्ट रूप से एक राज्य परिवर्तन नहीं करते हैं?

उम्मीद है कि मैंने इसे संभव के रूप में भ्रमित किया।


4
+1 दिलचस्प सवाल हालांकि आपका पहला बयान गलत है और हार्डवेयर पीडब्लूएम का विचार इतना है कि प्रोसेसर को पूरे समय शामिल नहीं होना है। लेकिन इसे इस तरह से छोड़ दें और मुझे यकीन है कि किसी को यह कैसे काम करता है इसकी अच्छी व्याख्या होगी।
पीटर जे

मैंने सोचा कि पीडब्लूएम ऐसा है कि प्रोसेसर हाई / लो साइकिल समय बदल रहा है। इस तरह, ऐसा लगता है कि प्रोसेसर सीधे शामिल है - कम से कम समय जिसमें राज्य को बदल दिया जाता है।
sherrellbc

1
कर्तव्य चक्र को 10% से 20% तक बदलने के लिए सीपीयू को शामिल करना पड़ता है, लेकिन केवल कुछ चक्रों के लिए एक रजिस्टर को बदलना पड़ता है। हार्डवेयर पीडब्लूएम के लिए यह कहें कि एक बार यह 20% तक बदल जाए, भले ही हार्डवेयर पीडब्लूएम आवृत्ति 1MHz हो, यह अब प्रोसेसर को प्रभावित नहीं करता है।
पीटर जे।

क्या आपके पास प्रलेखन के लिए कोई अच्छा लिंक है कि माइक्रोकंट्रोलर निचले स्तर पर कैसे काम करता है? मैं रजिस्टर के आपके संदर्भों को नहीं समझता, इसलिए इन उत्तरों की पूरी तरह से सराहना नहीं कर सकता।
sherrellbc

1
बहुत भ्रामक नहीं है। और कोशिश करो!
रेडगैस्ट

जवाबों:


16

जिस तरह से मैं प्रश्न की व्याख्या करता हूं उसका पीडब्लूएम से कोई लेना-देना नहीं है, माफ करना अगर मैं बेस ऑफ हूं, लेकिन ऐसा लगता है कि आपने इसे सिर्फ एक उदाहरण के रूप में इस्तेमाल किया है।

बहुत अधिक हर प्रकार के माइक्रोकंट्रोलर और I / O वाले उपकरण अपने आउटपुट सर्किट्री को चलाने के लिए एक कुंडी / FF का उपयोग करते हैं। इसका मतलब क्या है, जब आप एक राज्य निर्धारित करते हैं, तो यह उस स्थिति में रहता है। यह DRAM की तरह नहीं है जहाँ आउटपुट स्टेट्स को अपने राज्य में बने रहने के लिए लगातार "रिफ्रेश" होना पड़ता है।

आपके ग्लास उदाहरण के साथ, मैंने कभी ऐसा कोई हार्डवेयर नहीं देखा है जो बार-बार टेबल पर गिलास को उठाता हो। यह केवल ग्लास को कभी-कभी मेज पर रखता है, और इसे तब तक छोड़ देता है जब तक कि राज्य परिवर्तन का अनुरोध नहीं किया जाता है।

PWM में वापस जा रहे हैं (बस मामले में आप वास्तव में PWM के बारे में पूछ रहे थे)। चाहे आप इसे बिटबैंग करते हैं या आपके माइक्रोकंट्रोलर ने हार्डवेयर को अन्य पदों के रूप में समर्पित किया है, I / O ब्लॉक केवल एक्सेस किया गया है और संशोधित किया गया है यदि कोई राज्य परिवर्तन कोड या PWM परिधीय द्वारा अनुरोध किया जाता है।


यह वास्तव में मेरा सवाल है, हालांकि ऐसा प्रतीत होता है कि माइक्रोकंट्रोलर के लिए बहुत कुछ है जो मुझे एहसास नहीं है कि मुझे समझ में नहीं आता है।
sherrellbc

3
बस अपनी नाक को डेटशीट में रखें, प्रयोग करें और प्रश्न पूछें। आप इसे लटका देंगे।
क्रिस बानसेन

11

माइक्रोकंट्रोलर को आउटपुट को रिफ्रेश करने की जरूरत नहीं है। एक बार जब वे सेट हो जाते हैं तो वे अपने राज्य को अनिश्चित काल के लिए रख देते हैं (जब तक कि सत्ता नहीं हटा दी जाती)। जबकि पुराने प्रोसेसर में प्रोसेसर की स्थिति को बनाए रखने के लिए घड़ी की आवश्यकता होती थी, आज के प्रोसेसर वही हैं जिन्हें पूरी तरह से स्थिर कहा जाता है। इसका मतलब है कि घड़ी को वास्तव में रोका जा सकता है और सब कुछ अपनी वर्तमान स्थिति में रहेगा। ऐसा इसलिए है क्योंकि सभी रजिस्टर (I / O सहित) फ्लिप-फ्लॉप का उपयोग करके बनाए गए हैं।


और हम प्रगति कर रहे हैं! धन्यवाद अब और अधिक समझ में आता है। धन्यवाद!
sherrellbc

10

अधिकांश आधुनिक माइक्रोकंट्रोलरों में एक समर्पित हार्डवेयर पीडब्लूएम परिधीय होता है जो पीडब्लूएम की देखभाल करता है, एक बहुत ही मोटा सादृश्य हो सकता है:

प्रोसेसर कोर परिधीय को बताता है: "जब तक मैं आपको अन्यथा नहीं बताता तब तक इस पिन को 10kHz और 50% ड्यूटी चक्र पर टॉगल करें"। फिर कोर अन्य सामान करने के लिए स्वतंत्र है। यह एक रुकावट सेट कर सकता है, यानी परिधीय से यह बताने के लिए कह सकता है कि जब कुछ ब्याज होता है।
आप शायद "बॉस" के रूप में कोर और विशेषज्ञ श्रमिकों के रूप में बाह्य उपकरणों के बारे में सोच सकते हैं। कोर पूरे कार्यक्रम का प्रबंधन करता है (प्रत्येक निर्देश को पढ़ता है और उस पर कार्य करता है) और विभिन्न कार्यों को करने के लिए बाह्य उपकरणों को "पूछता है" और जब वे उन्हें पूरा कर लेते हैं तो उसे सूचित करते हैं।

आपके सादृश्य में, यह ऐसा होगा जैसे कोई दूसरा व्यक्ति कांच पकड़ रहा है, आप उन्हें कुर्सी पर बैठने के लिए स्वतंत्र होने पर इसे टेबल पर रखने का निर्देश देते हैं।

यदि माइक्रो के पास एक समर्पित परिधीय नहीं था, तो उसे "मैन्युअल रूप से" (यानी स्वयं) करना होगा और पिंस राज्य और टॉगल के बीच समय का ध्यान रखना होगा। इसका मतलब होगा कि बहुत सारे साइकिल, जो बहुत ही सामान्य सामान के लिए समर्पित हैं, जो एक सरल परिधीय द्वारा आसानी से नियंत्रित किया जाता है।

यहाँ एक लोकप्रिय 8-बिट माइक्रोकंट्रोलर, PIC16F690 के लेआउट का आरेख है । नीचे की ओर दिए गए बाह्य उपकरणों पर ध्यान दें:

यहाँ छवि विवरण दर्ज करें


मुझे महसूस नहीं हुआ कि ऐसे परिधीय घटक मौजूद हैं। तो क्या ये घटक नहीं बल्कि छोटे प्रोसेसर हैं? यह बहुत समझ में आता है कि ऐसी चीजें मौजूद हैं।
sherrellbc

प्रोसेसर नहीं, नहीं - बाह्य उपकरणों को समर्पित हार्डवेयर ब्लॉक अधिक पसंद हैं जो विशेष रूप से एक निश्चित कार्य करने के लिए डिज़ाइन किए गए हैं। उदाहरण के लिए, एक विशिष्ट माइक्रो में बोर्ड बाह्य उपकरणों जैसे ADC, PWM, टाइमर, UART, SPI आदि होंगे
Oli Glaser

मैं निश्चित रूप से इस विषय में गहराई से तल्लीन करूंगा, हालांकि इन प्रणालियों की मेरी समझ अगर निश्चित रूप से पक्षपाती है। मैं इस धारणा के तहत था कि यूसी सभी प्रसंस्करण कर रहा होगा। परिधीयों को दिए गए "निर्देशों" की व्याख्या की जानी चाहिए। मुझे लगता है कि यह वह जगह है जहां मैं पूरी तरह से समझ में नहीं आ रहा है।
sherrellbc

2
मैंने एक विशिष्ट माइक्रो का आरेख जोड़ा - पढ़ना शुरू करने के लिए एक अच्छी जगह डेटाशीट है, जिसे मैंने भी लिंक किया है।
ओली ग्लेसर

@sherrellbc, वह जगह है जहां एक प्रोसेसर और एक माइक्रोप्रोसेसर अलग है। एक ROMC में, आप देख सकते हैं कि जैसे RAM, ROM, ALU, सीरियल पोर्ट आदि सभी एक ही चिप में एकीकृत हैं। एक पीसी में, आप जानते हैं कि प्रोसेसर ऐसे सर्किट से बाहरी रूप से जुड़ा हुआ है।
chwi

5

आप कुछ ऐसी धारणाएँ बना रहे हैं जो बिल्कुल मान्य नहीं हैं। इसके अलावा, हाँ, आपने प्रश्न को यथासंभव भ्रमित किया है। गंभीरता से।

PWM अन्य प्रक्रियाओं के साथ एक साथ किया जा सकता है। यदि सॉफ़्टवेयर में किया जाता है, तो आप GPIO पिन पर PWM सिग्नल उत्पन्न करने के लिए टाइमर इंटरप्ट का उपयोग करते हैं। अन्य व्यवधान चल सकते हैं, और मुख्य प्रक्रिया असंबंधित चीजें कर रही हैं। इसके अलावा, कई MCUs टाइमर परिधीय में सीधे PWM कर सकते हैं, MCU को अन्य चीजों को करने के लिए मुक्त कर सकते हैं।

I / O पिंस के लिए, वे बहुसंकेतन हैं। लेकिन आप इस बात के नियंत्रण में हैं कि वे कैसे बहुविकल्पीय हैं, इसलिए यह वास्तव में कोई मुद्दा नहीं है।


मैं PWM टाइमर के बारे में आपकी टिप्पणी को समझता हूं - जो समझ में आता है। इस तरह से प्रोसेसर केवल उस समय शामिल होता है जब वह आउटपुट स्थिति को बदलता है। हालाँकि, आप कहते हैं कि I / O पिन मल्टीप्लेक्स किए गए हैं - इसलिए यह कहना है कि क्या मैं नियंत्रक को एक पिन हाई आउटपुट करने के लिए प्रोग्राम करता हूं और फिर कुछ अन्य असंबंधित गणना करता हूं, तो पिन पल-पल कम हो जाती है जबकि ऐसी प्रक्रियाएं होती हैं?
sherrellbc

@sherrellbc आप इस बात के नियंत्रण में हैं कि पिन कैसे बहुसंकेतन हैं। आम तौर पर आप उन्हें बूट समय पर कॉन्फ़िगर करते हैं और उसके बाद उन्हें नहीं बदलते हैं। इसलिए यह "क्षणिक रूप से कम" नहीं होगा, जब तक कि आप विशेष रूप से ऐसा करने के लिए नहीं कहते हैं।

मैं पीडब्लूएम उदाहरण जोड़कर क्षमा करता हूं कि मैंने पाठकों को भ्रमित किया। इस प्रश्न का आशय यह निर्धारित करना था कि क्या उच्च को निर्धारित I / O पिन निर्देश नियंत्रक द्वारा गुणा किया गया है या नहीं (क्योंकि यह पिन राज्यों को लगातार "ताज़ा" करना चाहिए और एक समय में केवल एक ही काम करना चाहिए)। हालांकि, अब मुझे पता है कि माइक्रोकंट्रोलर के पास बहुत कुछ है जो मुझे (बाह्य उपकरणों) को नहीं समझता है। इसलिए इसने मुझे उत्तर दिया कि उत्तर नहीं है, आउटपुट पिंस एक राज्य में सेट किए जाते हैं और उस स्थिति में बने रहते हैं जब तक कि हमेशा के लिए बदल नहीं जाते।
sherrellbc

1

माइक्रोकंट्रोलर पर अधिकांश I / O पिन बहु-कार्य हैं, लेकिन मैं उन्हें मल्टीप्लेक्स नहीं कहूंगा।

उदाहरण के लिए, AVR पर कई पिनों का उपयोग डिजिटल इनपुट, डिजिटल आउटपुट या एनालॉग इनपुट के रूप में किया जा सकता है। आप सामान्य रूप से प्रोग्राम आरंभीकरण के भाग के रूप में वांछित फ़ंक्शन का चयन करेंगे, और बाद में इसे नहीं बदलेंगे (हालांकि मैं एक ही संकेत देखने के लिए एनालॉग इनपुट को डिजिटल इनपुट में बदलने का कुछ कारण देख सकता हूं।)

डिजिटल आउटपुट के लिए, एक बार पिन को आउटपुट के लिए सेट किया जाता है, तो वे प्रोसेसर को उनके द्वारा लिखे गए अंतिम मूल्य को पकड़ लेंगे - उन्हें समय-समय पर "ताज़ा" करने की कोई आवश्यकता नहीं है।


यदि प्रोसेसर मूल्य निर्धारित करता है, तो उस मूल्य को हटा दिया जाता है, उन्हें बहुसंकेतन किया जाता है, अन्य निर्देशों को निष्पादित किया जाता है और फिर चारों ओर लूप किया जाता है और फिर से मूल मान सेट करता है। यह मेरे प्रश्न का सार है। हालांकि, उपरोक्त उत्तरों से विभिन्न विकृतियां हैं जो इन कार्यों को सुधारती हैं और प्रोसेसर को इसके साथ कुछ भी नहीं करना है जब तक कि अन्यथा करने का निर्देश नहीं दिया जाता है; मुझे इस बारे में कोई अंदाजा नहीं था। बहुत कुछ सीखने के लिए। जवाब के लिए धन्यवाद।
sherrellbc

1

एक माइक्रोकंट्रोलर हार्डवेयर PWM परिधीय के एक सरल उदाहरण में, एक 8 बिट काउंटर 8 बिट डिजिटल तुलनित्र से जुड़ा हो सकता है। माइक्रोकंट्रोलर एक संख्या को तुलनित्र में लोड करेगा और सिस्टम घड़ी या इसके कुछ प्रीस्केल विभाजित संस्करण के साथ काउंटर को बढ़ाएगा। काउंटर फिर फ्री-रन होगा, 0 से 255 तक और बार-बार शून्य पर वापस। तुलनित्र में एक आउटपुट होता है जो यह दर्शाता है कि काउंटर मूल्य तुलनित्र मान से अधिक या कम है। यह PWM आउटपुट बन जाएगा। पीडब्लूएम की अवधि यह होगी कि एक काउंटर चक्र को पूरा करने में काउंटर को कितना समय लगता है और ड्यूटी चक्र ऐसा होता है कि कुल गणना के किस हिस्से को तुलनित्र मान द्वारा दर्शाया जाता है। माइक्रोकंट्रोलर कोड में हार्डवेयर को शुरू में सेट करने के अलावा कुछ भी करने के लिए नहीं होगा और जब एक pwm परिवर्तन वांछित होता है तो तुलनित्र डेटा को बदल देता है। PWM प्रोसेसर ध्यान के बिना PWM दालों की एक सतत स्ट्रीम का उत्पादन करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.