विषयसूची:

बासकॉम एवीआर के साथ शुरुआत करना: 5 कदम
बासकॉम एवीआर के साथ शुरुआत करना: 5 कदम

वीडियो: बासकॉम एवीआर के साथ शुरुआत करना: 5 कदम

वीडियो: बासकॉम एवीआर के साथ शुरुआत करना: 5 कदम
वीडियो: Which is better BCOM OR BBA 2024, जुलाई
Anonim
बासकॉम एवीआर के साथ शुरुआत करना
बासकॉम एवीआर के साथ शुरुआत करना

यह आपको बासकॉम एवीआर के साथ अपने एवीआर माइक्रोकंट्रोलर को प्रोग्राम करने के लिए सिखाने के लिए एक श्रृंखला की शुरुआत है।

मैं ऐसा क्यों कर रहा हूं।

इस श्रृंखला के अधिकांश प्रोग्राम नमूने आप Arduino के साथ बना सकते हैं।

कुछ आसान और कुछ अधिक कठिन, लेकिन अंत में दोनों एक ही कंट्रोलर पर चलेंगे।

लेकिन हर विकास के माहौल में प्रोग्रामिंग का तरीका अलग होता है। Arduino को बुनियादी कार्यों को छोड़कर हर चीज के लिए एक पुस्तकालय की आवश्यकता होती है। बासकॉम पुस्तकालयों के साथ भी काम करता है, लेकिन मुझे शायद ही कभी एक को शामिल करना पड़ता है। Arduino के साथ, सभी हार्डवेयर-विशिष्ट सेटिंग्स पुस्तकालयों के माध्यम से बनाई जाती हैं। माइक्रोकंट्रोलर की वास्तविक शक्ति पर आपका बहुत कम प्रभाव पड़ता है। नियंत्रक के पास टाइमर से शुरू करना। Arduino के साथ आपको फिर से एक पुस्तकालय की आवश्यकता है। यदि आपके पास टाइमर काम करने तक है, तो हो सकता है कि कोई अन्य लाइब्रेरी आपकी सेटिंग से टकराए। बेसकॉम में आपके पास बूट सेक्टर सहित संपूर्ण हार्डवेयर तक मुफ्त पहुंच है, जिस पर arduino का कब्जा है। उदाहरण के लिए, बासकॉम के कुछ पुस्तकालय आपसे पूछते हैं कि आप किस टाइमर का उपयोग करना चाहते हैं। दूसरी ओर, चूंकि arduino स्वयं एक पुस्तकालय बनाना बहुत आसान बनाता है, यह स्वाभाविक रूप से इसे एक ऐसा मंच बनाता है जहाँ नए हार्डवेयर और सेंसर में आमतौर पर सीधे एक पुस्तकालय होता है। जो अक्सर बेसकॉम में बहुत सारे शोध से जुड़ा होता है और जो कार्य एक पुस्तकालय सामान्य रूप से करता है, उसे कार्यक्रम कोड में श्रमसाध्य रूप से शामिल किया जाना चाहिए। लेकिन अच्छी खबर है कि बासकॉम समुदाय भी बहुत बड़ा है, यही वजह है कि हर विचार का समाधान है।

तो यह आंशिक रूप से परियोजना पर निर्भर करता है कि विकास पर्यावरण के लिए क्या उपयोग किया जाता है और आंशिक रूप से प्रोग्रामिंग व्यक्ति के ज्ञान पर निर्भर करता है।

लेकिन मैं यह सीरीज क्यों कर रहा हूं। एक ओर यह बहुत पैसा बचाता है। मुझे हर प्रोजेक्ट के लिए एक arduino बोर्ड खरीदने की ज़रूरत नहीं है। उदाहरण के लिए: एक गैर-नाम Arduino uno की कीमत लगभग 12 € है, उस पर लगे नियंत्रक की कीमत केवल 2.5 € है, एक स्थिर फ़ंक्शन के लिए आवश्यक न्यूनतम सर्किटरी के साथ, इसकी लागत लगभग 4 € है। दूसरी ओर आपके पास उपलब्ध समर्थित avr चिप्स का पूरा चयन है। atmegas 8 से 256 और attiny 8 से 2313 और कई xmega प्रकार जिनके बारे में मुझे कोई अनुभव नहीं है। यदि आप केवल एक सर्वो और एक अल्ट्रासोनिक सेंसर का उपयोग करना चाहते हैं जो एक हाथ को पहचान सकता है, उदाहरण के लिए, और फिर कूड़ेदान का ढक्कन खोलें, तो आप सबसे छोटी संभव चिप का उपयोग कर सकते हैं। तो दूसरी भाषा सीखने के कई कारण हैं।

तो चलो शुरू हो जाओ

आपूर्ति

यह चिप और प्रोग्रामिंग के स्थिर संचालन के लिए न्यूनतम आवश्यक भागों की एक सूची है।

परीक्षण के लिए ब्रेडबोर्ड

Atmega 8-16PU (बेहतर होगा कि आप 2 या 3 खरीद लें यदि आप उन्हें गलती से मार देते हैं)

७८०५ ५वी वोल्टेज नियामक

10Kohm रोकनेवाला

100nF फिल्म संधारित्र

10μF इलेक्ट्रोलाइटिक कैपेसिटर

100μF इलेक्ट्रोलाइटिक कैपेसिटर

ब्रेडबोर्ड के लिए कुछ तार

विंडोज पीसी 7/8/8.1/10

आईएसपी प्रोग्रामर (मैं यहां यूएसबीएएसपी का उपयोग करूंगा जिसे आप अमेज़ॅन पर कम पैसे में खरीद सकते हैं)

बासकॉम एवीआर (आप यहां एक डेमो डाउनलोड कर सकते हैं। सभी फ़ंक्शन अनलॉक हैं, लेकिन आप केवल 4 केबी आकार तक कोड लिख सकते हैं जो बहुत सारे कोड के लिए पर्याप्त है)।

वैकल्पिक भाग:

प्रतिरोधों के साथ एलईडी

पुश स्विच

परियोजना-विशिष्ट भाग

चरण 1: बासकॉम और सेटअप की स्थापना

बासकॉम और सेटअप की स्थापना
बासकॉम और सेटअप की स्थापना
बासकॉम और सेटअप की स्थापना
बासकॉम और सेटअप की स्थापना
बासकॉम और सेटअप की स्थापना
बासकॉम और सेटअप की स्थापना

फ़ाइल डाउनलोड करें और बासकॉम एवीआर स्थापित करें। इंस्टॉल के बाद आखिरी चेकबॉक्स सहित इसके सभी हिस्सों को इंस्टॉल करें।

उसके बाद अपने पीसी को रीबूट करें अन्यथा बासकॉम शुरू नहीं होगा।

रिबूट के बाद bascom.

विकल्प -> प्रोग्रामर पर जाएं और सूची से USBasp चुनें, सेटिंग्स को सहेजें और बासकॉम को बंद करें।

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

स्टेट बासकॉम फिर से और एक नई फाइल बनाएं। इसे अपने पीसी में सेव करें और अपने कीबोर्ड पर F7 बटन दबाएं।

कंपाइलर खाली प्रोग्राम को शुरू और संकलित करता है। अब आप प्रोग्रामर की कार्यक्षमता का परीक्षण कर सकते हैं।

प्रोग्रामर विंडो शुरू करने के लिए अपने कीबोर्ड पर F4 बटन दबाएं। अब चिप पर जाएं -> इंटरेक्शन शुरू करने के लिए पहचानें। USBasp से LED`s को अब कम ब्लिंक करना चाहिए। आपको एक संदेश मिलना चाहिए जैसे चिप आईडी FFFFFF डिवाइस नहीं पढ़ सका। यह एक अच्छा संकेत है कि प्रोग्रामर काम कर रहा है लेकिन उसे कोई चिप नहीं मिली।

अब हम पहला सर्किट बनाना शुरू कर सकते हैं।

चरण 2: आइए चिप को करीब से देखें

आइए चिप पर करीब से नज़र डालें
आइए चिप पर करीब से नज़र डालें

यदि आप चिप के पिनआउट को देखते हैं तो ऐसा लगता है कि चिप में आर्डिनो बोर्ड की कोई समानता नहीं है। ज़रूर, हम एक Atmega8 का उपयोग करते हैं और Arduino uno पर एक Atmega328 है। लेकिन पिनआउट लगभग समान है लेकिन वह Arduino Uno बोर्ड के चिप में अधिक कार्य करता है। यहाँ पिनों के नाम हैं। बिजली आपूर्ति के लिए वीसीसी और जीएनडी पिन हैं।

एआरईएफ और एवीसीसी एनालॉग से डिजिटल कनवर्टर के लिए संदर्भ वोल्टेज और बिजली की आपूर्ति के लिए पिन हैं।

PB 0-7 PC 0-6 PD 0-7 मल्टीपल ऑक्यूपेंसी के साथ सामान्य प्रयोजन इनपुट आउटपुट पिन हैं।

रीसेट पिन नाम क्या कहता है। चिप को पुनः आरंभ करने के लिए। रीसेट नाम के ऊपर की रेखा का अर्थ निषेध है। इसका मतलब है, चिप को रीसेट करने के लिए आपको इसे 0V तक नीचे खींचना होगा।

निम्नलिखित पिनों के लिए जल्द ही आने वाले अलग-अलग निर्देश।

RXD TXD सीरियल संचार UART के लिए हार्डवेयर पिन हैं।

INT0 INT1 हार्डवेयर इंटरप्ट पिन हैं

XCK /T0 UART घड़ी स्रोत / टाइमर / काउंटर0 घड़ी स्रोत

XTAL /TOSC पिन एक बाहरी क्रिस्टल के लिए 16MHz (20MHz तक के विभिन्न मॉडल) / आंतरिक RTC के लिए क्रिस्टल पिन के लिए हैं

T1 T0. के समान है

AIN पिन एनालॉग तुलनित्र के लिए हैं

ICP1 T0/T1. के समान है

OC1A pwm टाइमर1 चैनल A के लिए हार्डवेयर आउटपुट पिन है

SS/OC2 चिप SPI के लिए पिन का चयन करें/जैसे OC1B लेकिन चैनल B

MOSI MISO SCK/OC2 हार्डवेयर SPI पिन और प्रोग्रामिंग के लिए पिन हैं/PWM आउटपुट टाइमर2

ADC0 से ADC5 एनालॉग इनपुट हैं

SDA SCL हार्डवेयर I2C के लिए पिन हैं

सामान्य चिप 4, 5V से 5, 5V तक काम कर सकती है, Atmega 8L बहुत कम वोल्टेज के साथ काम कर सकता है।

आप देखते हैं कि यह चिप भी एक Arduino Uno से अधिक कर सकती है, ऐसा नहीं लगता है। लेकिन Arduino इसे भी कर सकता है, आपको केवल इसे प्रोग्राम करना होगा।

चरण 3: पहला सर्किट

पहला सर्किट
पहला सर्किट
पहला सर्किट
पहला सर्किट

अब आपका पहला सर्किट बनाने का समय आ गया है।

आमतौर पर पहला सर्किट क्या होता है? सही! चलो एक एलईडी झपकाते हैं।

LED PB0 से जुड़ा है। चिप के बगल में रेसिस्टर में 10k ओम है।

एलईडी के बगल में रोकनेवाला में 470 ओम हैं।

अब आप USBasp को Atmega से जोड़ सकते हैं जैसा कि चित्र में दिखाया गया है।

लेकिन इससे पहले कि आप बिजली चालू करें, हम प्रोग्राम लिखते हैं।

चरण 4: पहला प्रोग्राम लिखें

पहला प्रोग्राम लिखें
पहला प्रोग्राम लिखें

बासकॉम में एक नई फाइल बनाएं और फॉलो टेक्स्ट टाइप करें।

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = आउटपुट do portb.0 = 1 प्रतीक्षा 1 portb.0 = 0 प्रतीक्षा 1 लूप

इसके बाद इसे अपने कीबोर्ड पर F7 मार कर कंपाइल करें।

अब हम F4 दबाकर चिप को प्रोग्राम कर सकते हैं। प्रोग्रामर विंडो प्रकट होती है। अब ब्रेडबोर्ड से बिजली चालू करने का समय आ गया है। आपको 6 से 12 वोल्ट के बीच कुछ लगाना चाहिए।

अब चिप -> ऑटोप्रोग्राम पर जाएं। यदि प्रोग्रामर विंडो अपने आप बंद हो जाती है तो प्रोग्रामिंग सफल रही।

एलईडी एक सेकंड की आवृत्ति में चमकती होनी चाहिए।

अब सिंटैक्स को समझने के लिए प्रोग्राम पर करीब से नज़र डालें।

$regfile "m8def.dat"

$ क्रिस्टल = 1000000

$regfile के साथ हम संकलक को बताते हैं कि प्रयुक्त चिप का प्रकार Arduino चिप का नाम "m328pdef.dat" होगा

$ क्रिस्टल के साथ हम उसे सीपीयू की गति लगभग 1 मेगाहर्ट्ज बताते हैं।

कॉन्फ़िगरेशन पोर्टब.0 = आउटपुट

इसका मतलब है कि PB0 को आउटपुट के रूप में कार्य करना चाहिए।

वैसे, संक्षिप्त नाम PB0 का अर्थ है पोर्ट B बिट 0। चिप को कई पोर्ट में विभाजित किया गया है। प्रत्येक बंदरगाह को स्पष्ट पहचान के लिए एक पत्र दिया जाता है। और प्रत्येक पोर्टपिन 0 से 7 तक थोड़ा सा। उदाहरण के लिए, मैं पोर्ट आउटपुट रजिस्टर में एक पूर्ण बाइट लिख सकता हूं, जो अलग-अलग पोर्ट पिन के माध्यम से आउटपुट होगा।

करना

कुंडली

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

पोर्टब.0 = 1

प्रतीक्षा करें 1 portb.0 = 0 प्रतीक्षा करें 1

यहां हम एलईडी की पलक झपकते हैं।

Portb.0 = 1 चिप को आउटपुट PB0 से 5V. पर स्विच करने के लिए कहता है

प्रतीक्षा 1 कमांड चिप को एक सेकंड के लिए प्रतीक्षा करने दें। यदि आप तेजी से एलईडी स्विच करना चाहते हैं तो आपको प्रतीक्षा कमांड को वेट्स के साथ बदलना होगा, अब आप मिलीसेकंड में कुछ समय दर्ज कर सकते हैं उदा। प्रतीक्षा 500. (वेटस का अर्थ है नैनोसेकंड में प्रतीक्षा करें)

Portb.0 = 0 चिप को आउटपुट PB0 से 0V पर स्विच करने के लिए कहता है।

चरण 5: इनपुट का उपयोग करने के लिए एक बटन जोड़ें

इनपुट का उपयोग करने के लिए एक बटन जोड़ें
इनपुट का उपयोग करने के लिए एक बटन जोड़ें

अब हम बटन दबाने पर एलईडी को जलाने के लिए एक बटन जोड़ते हैं।

चित्र में दिखाए अनुसार बटन डालें।

अब फॉलो प्रोग्राम टाइप करें।

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = आउटपुट config portd.7 = input Portd.7 = 1 do अगर pind.7 = 0 तो portb.0 = 1 और portb.0 = 0 लूप

यदि आप उस प्रोग्राम को चिप पर अपलोड करते हैं, तो एलईडी केवल बटन दबाए जाने पर ही जलती है। लेकिन क्यों?

कार्यक्रम पिछले वाले की तरह ही शुरू होता है

config portd.7 = input. इसका मतलब है, पिन पीडी7 जो बटन से जुड़ा है, एक इनपुट के रूप में कार्य करता है।

Portd.7 = 1 पिन को हाई पर स्विच नहीं करता है, लेकिन यह Atmega के आंतरिक पुल अप रेसिस्टर को सक्रिय करता है।

यदि आप arduino के अभ्यस्त हैं तो if Statemand थोड़ा अजीब लगता है।

यदि आप if कथन का उपयोग करते हैं तो आपको "तब" कथन का उपयोग करना होगा। इस नमूने में if स्टेटमेंट का उपयोग सिंगल कमांड ऑपरेशंस के लिए किया जाता है। यदि आप अधिक कमांड का उपयोग करना चाहते हैं तो आपको इसे इस तरह लिखना होगा।

अगर पिन.7=0 तो

portb.0=1 कुछ कोड कुछ कोड कुछ कोड और portb.0 = 0 end if

इफ स्टेटमेंट के इस उपयोग के लिए आपको अंत में "एंड इफ" स्टेटमेंट का उपयोग करना होगा।

अभी भी क्या महत्वपूर्ण है। शायद आप इसे पहले ही देख चुके हैं। इनपुट्स को portx.x से नहीं, बल्कि pinx.x. के साथ क्वेरी किया जाता है। आप इसे आसानी से याद रख सकते हैं। आउटपुट में शब्द में "ओ" (पोर्ट) होता है और इनपुट में "i" (पिन) होता है।

अब थोड़ा इधर-उधर खेलने की आपकी बारी है।

मेरा अगला इंस्ट्रक्शनल जल्द ही आने वाला है (मानक स्टेटमेंट जैसे जबकि, सेलेक्ट केस, फॉर, और वेरिएबल्स।)

अगर आपको मेरा निर्देश पसंद आया हो और मुझे टिप्पणियों में अधिक बताना हो।

सिफारिश की: