Assembly language programming for AVR

विषयाची ओळख

या लेखातील माहिती स्वतंत्ररित्या लिहिली गेली आहे. कोणत्याही विशिष्ट इंग्रजी वा इतर भाषेतील लेखाचे ते भाषांतर नाही. ज्या वाचकांना इंग्रजीतून याच विषयी वाचायचे असेल, त्यांच्यासाठी पुढील लिंक उपयोगी ठरेल- Assembly language tutorials in English and German.

AVR सारखा शक्तिशाली मायक्रोकंट्रोलर असेंब्ली लँग्वेज वापरून प्रोग्राम करता येतो. त्यासाठी अगदी कमी संगणकीय अवजारांची गरज असते. ती अवजारे पुढील प्रमाणे…

  1. एडिटरः एडिटर म्हणजे वर्ड प्रोसेसर (उदा. abiword,word, libre-office writer) नव्हे. एडिटर मधे लेखन ठळक करणे, तिरके करणे, अंडरलाइन करणे अशा सोयी सहसा नसतात. केवळ शब्द व वाक्ये टाइप करता येणे महत्वाचे. मात्र प्रोग्रामिंग करण्यासाठी ज्या सोयी असतात त्या मात्र असतात. उदा. कंस पूर्ण केल्यास कंसाचे दोन्ही भाग  लेखना पेक्षा वेगळ्या रंगात दिसतात. अशा काही एडिटरची उदाहरणे अशी देता येतीलः इमॅक्स, नोटपॅड, व्हीआय, ज्यूपिटर इत्यादी.
  2. असेंब्लर प्रणालीः असेंब्लर ही एक प्रणाली (सॉफ्टवेअर) आहे. ती तुम्ही लिहिलेला असेंब्ली भाषेतील प्रोग्राम कंट्रोलरला समजणाऱ्या hex रूपात रूपांतरित करते. विज्ञान केंद्रात पुढील मुक्त एव्हीआर असेंब्लर प्रणाली वापरल्या जातात.
    1. Gavrasmः सर्व एव्हीआर सीपीयू करिता उपयुक्त
    2. avra ः थोड्या जुन्या ८ बिट एव्हीआर सीपीयू करिता.
  3. चिप प्रोग्रामरः एकदा hex रूपात तुमचा प्रोग्राम आला की तो एव्हीआर चिपमधे टाकता येतो. त्यासाठी तुमच्या संगणकावरून चिप प्रोग्रामिंग प्रणाली वापरावी लागते. विज्ञान केंद्रात पिंगीप्रॉग हा चिप प्रोग्रामर वापरला जातो. तो avrdude या मुक्त संगणकीय प्रणालीवर  आणि usbasp या मुक्त हार्डवेअर वर आधारित आहे.

असेंब्ली लँग्वेज का वापरायची?

मायक्रोकंट्रोलरच्या क्षेत्रात काम करणारे लोक हल्ली असेंब्ली भाषेत क्वचितच प्रोग्रामिंग करतात. त्याची कारणे अशी सांगितली जातातः

  • Avr-gcc सारखे कंपायलर्स मुक्त प्रणाली म्हणून उपलब्ध आहेत. त्या कंपायलर्स सोबत मुक्त अशा कार्यसंचयाची प्रणाली (large library of functions) उपलब्ध ाअसते. त्यामुळे प्रोग्रामर्सना नव्याने ही कार्ये लिहावी लागत नाहीत. या प्रणाली मुक्त असल्यामुळे अनेक तज्ञांनी त्या अजमावलेल्या असतात आणि त्यांत सुधारणाही केलेल्या असतात. त्यामुळे त्या आहेत तशा थेट वापरणे निर्धोक असते. या कार्यसंचयाच्या प्रणालींमुळे प्रोग्रामरचा विकसनाचा वेळ निश्चित वाचतो.
  • उच्च संगणकीय भाषा (high level language) वापरल्यास तुमच्या एव्हीआर चिपमधे मोठ्या आकाराची मेमरी (ram व rom) असणे अपेक्षित असते. पूर्वी अशा मेमरी उपलब्ध नव्हत्या. त्यामुळे असेंब्ली भाषा वापरणे सक्तीचे होते. अधुनिक एव्हीआर चिप्स मधे उच्च संगणकीय भाषांसाठी आवश्यक व पुरेशी मेमरी जागा नक्कीच उपलब्ध असते. तरीही जर असेंब्ली भाषा वापरली तर अशी मेमरी मोठ्या प्रमाणात वाया जाते.
  • आर्डुइनो साऱख्या बहुपयोगी प्रणाली avr-gcc या प्रणालीवरच आधारित आहेत. त्या वापरायला आणखीच सोप्या केल्या आहेत. जरी त्यांना खूपच प्रमाणात मेमरीची गरज भासत असली तरी तितकी मेमरी हल्लीच्या एव्हीआर चिप्समधे असल्यामुळे असेंब्ली भाषा वापरण्याचे प्रमाण नगण्य झाले आहे.

तरीही असेंब्ली भाषा एव्हीआर प्रोग्रामिंगसाठी वापरण्याचे निश्चित फायदे सांगता येतात. ते असे आहेतः

  1. एव्हीआर कंट्रोलर एकूण १३० आज्ञा  पाळू शकतो. एकदा या आज्ञा कशा काम करतात हे कळले की मग प्रोग्रामिंग साठी फार गोष्टी नव्याने शिकाव्या लागत नाहीत.
  2. या आज्ञा वापरता यायला लागल्या की तुम्ही एव्हीआर चिप ने दिलेल्या अनेक सोयींचा वापर सहजतेने करू शकता.
  3. ज्या प्रोग्राममधे अचूक कालमापनाची (नॅनो सेकंदांमधे) गरज असते अशा  प्रणाली फक्त असेंब्ली भाषा वापरूनच लिहाव्या लागतात.
  4. किचकट प्रोग्राम लहानशा (कमी मेमरीच्या) एव्हीआर चिपमधे भरायचा असेल तर असेंब्ली भाषा वापरणे हेच एकमेव उत्तर ठरते.
  5. तुमच्या असेंब्ली भाषेतील रूटीन्स (कार्यसंचय) ची व्यवस्था नीट ठेवली असेल तर उच्च संगणकीय भाषेत लायब्ररीचा जसा वापर होतो, तसा करून विकसनाचा वेळ तुम्ही खूपच कमी करू शकता. असेंब्ली भाषा वापरल्यामुळे तुमचे रूटीन प्रोग्राम कालमापन आणि मेमरीचा वापर या दोन्ही दृष्टीने परिणामकारक व कार्यक्षम ठरतात.

या लेखातील काही उपविषय AVR Assembly language-Simple Example या लेखात अधिक स्पष्ट होतील.