रास्पबेरी पाई बूट होने पर कुछ GPIO पिन उच्च क्यों हैं?


18

मेरे पास एक आसान सर्किट है, जो कि BOARD के संदर्भ में 18 पिन से जुड़ा हुआ है। मैं पिन 18 को हाई करने के लिए एक सरल प्रोग्राम चलाता हूं, जो एलईडी को चालू करता है, और फिर कुछ सेकंड बाद में, मैं पिन को 18 से कम पर सेट करता हूं, और आखिरकार मैं अपने प्रोग्राम को GPIO.cleanup () के साथ समाप्त करता हूं।

इस बिंदु पर एलईडी बंद है, जिसका अर्थ है कि पिन 18 बंद (LOW) है। अब मैं अपने रास्पबेरी पाई को रिबूट या पुनरारंभ करता हूं, और जब यह वापस बूट होता है, तो पिन 18 पर एलईडी फिर से चालू हो जाती है, भले ही मैं रास्पबेरी पाई को रिबूट करने से पहले पिन बंद हो गया था।

ऐसा क्यों हो रहा होगा? रास्पबेरी पाई बूट अप होने पर मैं एक विशिष्ट पिन को कैसे पिन 18 की तरह कॉन्फ़िगर कर सकता हूं? और मैं नहीं चाहता कि किसी भी GPIO पिन उच्च पर हो, जब रास्पबेरी पाई बूट हो।

मैं इस समस्या के बारे में चिंतित हूं, क्योंकि चलो कहते हैं कि पिन 18 एक रोबोट पर डीसी मोटर से जुड़ा है, और जब रास्पबेरी पाई बूट करती है, तो मोटर चालू हो जाएगा, और यह कुछ ऐसा नहीं है जो मैं चाहता हूं क्योंकि वह हस्तक्षेप करेगा रोबोट की पूरी संरचना, और कुछ मोटर्स शुरू हो सकते हैं और दूसरों को वे जिस पिन से जुड़े हैं, उसके आधार पर नहीं होगा। मैं सभी मोटर्स को एक सिंक्रनाइज़ तरीके से मैन्युअल रूप से चालू करना चाहता हूं।

एक और बात यह है कि सभी पिनों में यह समस्या नहीं है। कुछ रास्पबेरी पाई जूते बंद रहते हैं, लेकिन दूसरों को नहीं।


क्या यह उतना ही चमकीला है जितना कि यह तब होगा जब आप इसे उच्च सेट करते हैं, या यह केवल चमकता हुआ है?
गोल्डीलॉक्स

इस पर 3.3 वोल्ट लागू है।
विक्टर रास्पबेरी

इसलिए यदि आप /sys/class/gpioपिन 18 में जाते हैं और सिस्टम को निर्यात करते हैं , तो सिस्टम क्या कहता है यदि आप कुछ भी नहीं बदलते हैं तो यह है?
गोल्डीलॉक्स

जब मैं "/ sys / class / gpio" लिखता हूं, तो यह कहता है "-Bash: / sys / class / gpio: Is a directory"। मुझे यकीन नहीं है कि एक विशिष्ट पिन कैसे निर्यात किया जाए।
विक्टर रास्पबेरी

उस के स्पष्टीकरण के oodles हैं , इसलिए मैं पुन: सक्रिय करने के लिए परेशान नहीं करूंगा। यह उदाहरण उस पर भारी है echo, जो लिखता है, अर्थात, कुछ सेट करता है। निर्यात करने के बाद, आप उससे बचना चाहते हैं और catदिशा और मूल्य की जांच करने के लिए बस उपयोग करते हैं , जो पढ़ता है।
गोल्डीलॉक्स

जवाबों:


25

पावरअप में GPIO को आंतरिक प्रतिरोधों के माध्यम से या तो उच्च या निम्न खींचा जाता है। किसी विशेष GPIO के लिए पुल उच्च या निम्न है या नहीं यह BCM2835 ARM पेरीफेरल के पृष्ठ 102 पर विस्तृत है ।

चूंकि लिनक्स कर्नेल शुरू हो गया है और यदि डिवाइस ट्री सक्षम (संभावना) है तो यह डिवाइस ट्री सेटिंग्स के अनुसार GPIO को फिर से कॉन्फ़िगर करेगा। से लोड किए गए मॉड्यूल /etc/modulesGPIO स्थिति को भी अपडेट कर सकते हैं।

आपके द्वारा शुरू किया गया कोई भी अन्य सॉफ़्टवेयर डिवाइस ट्री सेटिंग्स और मॉड्यूल लोड के बाद GPIO को संभावित रूप से पुन: कॉन्फ़िगर कर सकता है।

यदि आपके पास हार्डवेयर है जो सिस्टम स्टार्टअप पर गलत तरीके से चालू किया जा सकता है, तो हार्डवेयर समाधान खोजना सबसे सुरक्षित है।


10

जब रास्पबेरी पाई बूट की जीपीओ लाइनों को चिप डिफ़ॉल्ट पर रीसेट कर दिया जाता है, तो ओएस लोड हो जाता है और उन्हें ओएस डिफ़ॉल्ट पर रीसेट करता है। रीबूट में सेटिंग्स को "याद" करने का कोई तरीका नहीं है। यह भी देखें कि जीपीआईओ की स्थिति क्या है? और बूट के बाद GPIO स्थिति


2

मुझे पता है कि यह बहुत देर हो चुकी है। जवाब देने के लिए। आप एक पाइथन स्क्रिप्ट या बैश स्क्रिप्ट लिख सकते हैं जो मैन्युअल रूप से पिन को कम पर सेट करता है और हर बूट पर चलाने के लिए क्रोन जॉब शेड्यूल करता है। आपको किसी भी सिस्टम / क्रिटिकल फाइल को संशोधित करने की आवश्यकता नहीं होगी। क्रोन के अलावा

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