AVR basics

एव्हीआर विषयी मूलभूत संकल्पना

पुढे ज्या संकल्पनांची चर्चा केली आहे त्या डिजिटल इलेक्ट्रॉनिक्स मधील मूलभूत संकल्पना आहेत. त्या केवळ एव्हीआर साठीच उपयुक्त नाहीत. त्या माहिती असल्यामुळे एव्हीआर वापरणे अत्यंत सोयीचे जाईल.

बिट

असे कोणतेही चल जे एका वेळी दोन पैकी एक (आणि एकच) मूल्य धारण करू  शकते. इलेक्ट्रॉनिक्सचा वापर करून अशी स्थिती निर्माण करता येते. उदा. फ्लिप-फ्लॉप या सर्किटचे आउटपुट high किंवा low व्होल्टेज या पैकी एकच असू शकते. फ्लिप-फ्लॉप ही इलेक्ट्रॉनिक मेमरीच आहे. तिला सिंगल बिट मेमरी म्हणता येईल. कारण एकदा high झालेले आउटपुट तसेच “लक्षात ठेवले ” जाते, जोवर मुद्दाम low केले जात नाही तोवर ते तसेच रहाते. तीच गोष्ट एकदा low केलेल्या आउटपुट बद्दल. जोवर मुद्दाम ते बदलले जात नाही तोवर ते तसेच रहाते.

  • विद्यार्थ्याचा परीक्षेतील निकाल हा पास किंवा नापास या दोन पैकीच, आणि एकच असू शकतो.
  • द्वि अंकी गणितातील (बायनरी गणित) शून्य किंवा एक हे अंक.
  • खोलीतील दिवा लावण्याचे बटण एका वेळी दोन पैकी एकच स्थिती, चालू किंवा बंद, धारण करू शकते. हे बटण म्हणजे इलेक्ट्रॉनिक्स मधल्या फ्लिप-फ्लॉपचा मेकॅनिकल अवतार आहे. एकदा बटण दाबून ते ON केले की ही स्थिती “लक्षात ठेवून”  ते ONच रहाते. तीच गोष्ट OFF रहाण्या बाबत. म्हणून अशा प्रकारच्या स्विचला सिंगल बिट मेकॅनिकल मेमरी म्हणता येईल.

लॉजिक लेव्हल 0

इलेक्ट्रॉनिक मेमरी- फ्लिपफ्लॉप च्या बाबतीत लॉजिक लेव्हल म्हणजे व्होल्टेज लेव्हल. ही लेव्हल शून्य व्होल्टेज ने दर्शवली जाते.
परीक्षेत पास नापास होण्याच्या दृष्टीने नापास ही लॉजिक लेव्हल शून्य आहे.

लॉजिक लेव्हल 1

इलेक्ट्रॉनिक मेमरी- फ्लिपफ्लॉप च्या बाबतीत लॉजिक लेव्हल 1 म्हणजे व्होल्टेज लेव्हल. ही लेव्हल साधारणपणे 5 व्होल्ट्सने दर्शवली जाते.
परीक्षेत पास नापास होण्याच्या दृष्टीने पास ही लॉजिक लेव्हल 1 आहे.

बाइट

एका ओळीत आठ बिट्सची केलेली मांडणी म्हणजे बाइट. त्या त्या बिटच्या स्थानानुसार त्या बिटचे मूल्य बाइटमधे बदलते. उदा. दशमान पद्धतीतल्या १५४ या संख्येत १ ची स्थानिक किंमत १००, ५ ची ५० व ४ ची ४ इतकी असते. तशी स्थानपरत्वे बदललेली बिटची किंमत आकृतीत दाखवली आहे. ० ते २५५ या दरम्यानच्या पूर्ण संख्या एका बाइटमधे दाखवल्या जाऊ शकतात.

128 64 32 16 8 4 2 1 स्थानिक मूल्य
1 0 1 0 1 0 0 0 बिट मूल्य
7 6 5 4 3 2 1 0 स्थान

वरील बाइटचे दशमान पद्धतीतील मूल्य असे काढता येईलः

128+0+32+0+8+0+0+0=168

बाइटची किंमत ठरवण्याच्या दृष्टीने पुढील गोष्टी विचारात घ्याव्या लागतातः

  1. सर्वात जास्त स्थानिक मूल्य असलेले बिट सर्वात डावीकडे दाखवले जाते.
  2. स्थानिक मूल्य डावीकडून उजवीकडेे कमी होत जाते.
  3. स्थानिक मूल्य आणि स्थान यांचा गणिती संबंध असा सांगता येतोः-
    स्थानिक मूल्य = 2स्थान

मेमरी

मेमरी म्हणजे ज्या बाइटमधील बिट्सची किंमत केव्हाही मुद्दाम बदलता येते अशा अनेक बाइट्सचा गठ्ठा.

1 1 1 1 0 0 0 1 103
0 1 0 0 0 1 1 0 104
1 0 0 1 0 1 0 1 105
0 0 1 1 0 0 0 1 106
1 0 1 1 1 1 0 1 107
0 1 1 1 1 0 1 0 108
1 1 0 0 1 1 1 0 109

प्रत्येक बाइटला स्वतःचा पत्ता असतो व तो पत्ता सांगून त्या विशिष्ट बाइटची किंमत बदलली जाते. वरील आकृतीत पत्ता निळ्या रंगाच्या चौकटीत दाखवला आहे.

स्टॅक

स्टॅक हा मेमरीचाच एक भाग असतो. त्या भागात प्रोग्रामची कार्यवाही चालू असताना बाइट्स तात्पुरते साठवले जाताात. विशेषतः एखादे सबरूटीन ज्यावेळी बोलावले जाते, त्यावेळी ते सबरूटीन संपल्यावर कोणत्या ठिकाणी मूळ प्रोग्राम होता, त्याचा पत्ता साठवणे आवश्यक असते. हा पत्ता स्टॅकवर तात्पुरता साठवला जातो. साठवण्याची आणि वापरण्याची पद्धत Last In First Out अशी असते. म्हणजेच जो पत्ता शेवटी साठवला जातो तो पहिल्यांदा वापरला जातो. त्यासाठी एक व्यवहारातील उदाहरण सांगता येईलः

प्रत्येक वहीला स्वतःचा रंग असलेल्या काही वह्यांचा एक गठ्ठा करायचा आहे. अशा वह्या प्रथम निळी मग लाल व नंतर हिरवी अशा क्रमाने एकावर एक रचण्यात आल्या आहेत. यातील निळी वही सर्वात तळाशी आहे आणि हिरवी क्रमांकाची वही गठ्ठ्यात सर्वात वर आहे. आता वह्या वापरायला काढायच्या असतील तर शेवटी ठेवलेली हिरवी वही सर्वात प्रथम काढून वापरणे शक्य आहे. त्यानंतर लाल व नंतर निळी अशा रीतीने वह्या वापराव्या लागतील. ही पद्धत Last In First Out, म्हणजे LIFO या नावाने प्रसिद्ध आहे. हा गठ्ठा म्हणजेच स्टॅक होय.

स्टॅकचा वापर नेमका कसा केला जातो हे समजण्यासाठी pop, push, rcall, ret अशा असेंब्ली आज्ञांचा अभ्यास करायला हवा.