भागो समय
मेरी जानकारी के लिए आप बोर्ड प्रकार का पता नहीं लगा सकते, लेकिन आप ATmega डिवाइस आईडी पढ़ सकते हैं। इस प्रश्न की जांच करें कि यह कैसे किया जा सकता है: क्या एक ATmega या ATtiny डिवाइस हस्ताक्षर को चलाते समय पढ़ा जा सकता है? ध्यान दें कि इस पद्धति का उपयोग करते समय, कई रजिस्टर असाइनमेंट बदल जाएंगे, न कि केवल पिनआउट। इसलिए आपका कोड काफी अधिक जटिल हो सकता है। लाभ यह है कि यदि आप सभी बदलते रजिस्टर असाइनमेंट और अन्य हार्डवेयर निर्भरताओं के आसपास काम करना चाहते हैं, तो आप सीधे अपने उपकरणों को प्रोग्राम करने के लिए एक .hex फ़ाइल का उपयोग कर सकते हैं avrdude
।
संकलन समय
बोर्ड / नियंत्रक प्रकार का पता लगाने का एक अन्य तरीका संकलन समय पर है। मूल रूप से आप कोड के भागों को संकलित करते हैं या Arduino IDE में कॉन्फ़िगर किए गए डिवाइस प्रकार के आधार पर मैक्रोज़ सेट करते हैं। एक उदाहरण के लिए इस कोड स्निपलेट की जाँच करें:
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define DEBUG_CAPTURE_SIZE 7168
#define CAPTURE_SIZE 7168
#elif defined(__AVR_ATmega328P__)
#define DEBUG_CAPTURE_SIZE 1024
#define CAPTURE_SIZE 1024
#else
#define DEBUG_CAPTURE_SIZE 532
#define CAPTURE_SIZE 532
#endif
कोड स्निपलेट को बेशर्मी से https://github.com/gillham/logic_analyzer/wiki से कॉपी किया गया था ताकि कुछ और डिवाइस विशिष्ट ट्रिकरी के लिए उस कोड की जाँच करें।
आपके मेजबान के ऑपरेटिंग सिस्टम के आधार पर, निम्न फ़ाइल में समर्थित नियंत्रक प्रकार पाए जा सकते हैं:
- लिनक्स:
/usr/lib/avr/include/avr/io.h
- खिड़कियाँ:
...\Arduino\hardware\tools\avr\avr\include\avr\io.h
सी-प्रीप्रोसेसर (जिसके द्वारा उपरोक्त कोड को संभाला जाता है) का उपयोग संभवतः इस साइट के दायरे से बाहर है। http://stackoverflow.com विस्तृत प्रश्नों के लिए बेहतर स्थान होगा।
यदि आप लिनक्स पर हैं, तो आप आसानी से टाइप करके सभी समर्थित नियंत्रक प्रकार पा सकते हैं:
grep 'defined (__AVR' /usr/lib/avr/include/avr/io.h | sed 's/^[^(]*(\([^)]*\))/\1/'