एटमेल 8-बिट AVR माइक्रोकंट्रोलर 2/4/8K बाइट्स इन-सिस्टम प्रोग्रामेबल फ्लैश के साथ
विशेषताएँ
- उच्च प्रदर्शन, कम पावर AVR® 8-बिट माइक्रोकंट्रोलर
- उन्नत RISC वास्तुकला
- 120 शक्तिशाली निर्देश - अधिकांश एकल घड़ी चक्र निष्पादन
- 32 x 8 सामान्य प्रयोजन कार्य रजिस्टर
- पूरी तरह से स्थैतिक संचालन
- गैर-वाष्पशील प्रोग्राम और डेटा मेमोरी
- 2/4/8K बाइट्स इन-सिस्टम प्रोग्रामेबल प्रोग्राम मेमोरी फ़्लैश
- धैर्य: 10,000 लेखन/मिटा चक्र
- 128/256/512 बाइट्स इन-सिस्टम प्रोग्रामेबल EEPROM
- धैर्य: 100,000 लेखन/मिटा चक्र
- 128/256/512 बाइट्स आंतरिक SRAM
- स्व-प्रोग्रामिंग फ्लैश प्रोग्राम और EEPROM डेटा सुरक्षा के लिए प्रोग्रामिंग लॉक
परिधीय विशेषताएं
- प्रीस्केलर और दो PWM चैनलों के साथ 8-बिट टाइमर/काउंटर
- 8-बिट हाई स्पीड टाइमर/काउंटर अलग प्रीस्केलर के साथ
- 2 उच्च आवृत्ति PWM आउटपुट अलग आउटपुट तुलना रजिस्टर के साथ
- प्रोग्रामेबल डेड टाइम जनरेटर
- यूएसआई - स्टार्ट कंडीशन डिटेक्टर के साथ यूनिवर्सल सीरियल इंटरफ़ेस
- 10-बिट एडीसी
4 सिंगल एंडेड चैनल
प्रोग्रामेबल लाभ के साथ 2 विभेदक ADC चैनल जोड़े (1x, 20x)
तापमान माप
प्रोग्रामेबल वॉचडॉग टाइमर के साथ अलग ऑन-चिप थरथरानवाला
ऑन-चिप एनालॉग तुलनित्र
विशेष माइक्रोकंट्रोलर विशेषताएं
debugWIRE ऑन-चिप डिबग सिस्टम
SPI पोर्ट के माध्यम से इन-सिस्टम प्रोग्रामेबल
बाहरी और आंतरिक बाधा स्रोत
कम पावर निष्क्रिय, एडीसी शोर में कमी, और पावर-डाउन मोड
उन्नत पावर-ऑन रीसेट सर्किट
प्रोग्रामयोग्य ब्राउन-आउट डिटेक्शन सर्किट
आंतरिक कैलिब्रेटेड ऑसिलेटर
मैं / ओ और संकुल
छह प्रोग्रामयोग्य I/O लाइनें
8-पिन PDIP, 8-पिन SOIC, 20-पैड QFN/MLF, और 8-पिन TSSOP (केवल ATtiny45/V)
ऑपरेटिंग वॉल्यूमtage
– ATtiny1.8V/5.5V/25V के लिए 45 – 85V
– ATtiny2.7/5.5/25 के लिए 45 – 85V
स्पीड ग्रेड
– ATtiny25V/45V/85V: 0 – 4 मेगाहर्ट्ज @ 1.8 – 5.5V, 0 – 10 मेगाहर्ट्ज @ 2.7 – 5.5V
– ATtiny25/45/85: 0 – 10 मेगाहर्ट्ज @ 2.7 – 5.5V, 0 – 20 मेगाहर्ट्ज @ 4.5 – 5.5V
औद्योगिक तापमान रेंज
कम बिजली की खपत
सक्रिय मोड:
1 मेगाहर्ट्ज, 1.8V: 300 µA
पावर-डाउन मोड:
पिन विन्यास
पिनआउट ATtiny25/45/85
पिन विवरण
वीसीसी: आपूर्ति मात्राtage.
जीएनडी: ग्राउंड।
पोर्ट बी (PB5:PB0): पोर्ट बी एक 6-बिट द्वि-दिशात्मक I/O पोर्ट है जिसमें आंतरिक पुल-अप प्रतिरोधक (प्रत्येक बिट के लिए चयनित) हैं। पोर्ट बी आउटपुट बफ़र्स में उच्च सिंक और स्रोत क्षमता दोनों के साथ सममित ड्राइव विशेषताएँ हैं। इनपुट के रूप में, पोर्ट बी पिन जो बाहरी रूप से कम खींचे जाते हैं, पुल-अप प्रतिरोधकों को सक्रिय करने पर करंट का स्रोत बनेंगे। पोर्ट बी पिन तब ट्राई-स्टेट होते हैं जब रीसेट स्थिति सक्रिय हो जाती है, भले ही घड़ी न चल रही हो।
पोर्ट बी ATtiny25/45/85 की विभिन्न विशेष सुविधाओं के कार्यों को भी पूरा करता है जैसा कि सूचीबद्ध है
ATtiny25 पर, प्रोग्रामयोग्य I/O पोर्ट PB3 और PB4 (पिन 2 और 3) को ATtiny15 के साथ पश्चगामी संगतता का समर्थन करने के लिए ATtiny15 संगतता मोड में बदल दिया जाता है।
रीसेट: इनपुट रीसेट करें। इस पिन पर न्यूनतम पल्स लंबाई से अधिक समय तक कम स्तर रीसेट उत्पन्न करेगा, भले ही घड़ी न चल रही हो और बशर्ते रीसेट पिन को अक्षम न किया गया हो। न्यूनतम पल्स लंबाई नीचे दी गई है तालिका 21-4 पेज 165 परछोटे पल्स से रीसेट उत्पन्न होने की गारंटी नहीं होती है।
रीसेट पिन का उपयोग (कमजोर) I/O पिन के रूप में भी किया जा सकता है।
ऊपरview
ATtiny25/45/85 एक कम-शक्ति वाला CMOS 8-बिट माइक्रोकंट्रोलर है जो AVR संवर्धित RISC आर्किटेक्चर पर आधारित है। एक ही क्लॉक साइकिल में शक्तिशाली निर्देशों को निष्पादित करके, ATtiny25/45/85 1 MIPS प्रति MHz के करीब थ्रूपुट प्राप्त करता है, जिससे सिस्टम डिज़ाइनर को प्रोसेसिंग स्पीड के मुकाबले बिजली की खपत को अनुकूलित करने की अनुमति मिलती है।
खंड आरेख
एवीआर कोर 32 सामान्य प्रयोजन कार्य रजिस्टरों के साथ एक समृद्ध निर्देश सेट को जोड़ती है। सभी 32 रजिस्टर सीधे अरिथमेटिक लॉजिक यूनिट (ALU) से जुड़े हैं, जिससे दो स्वतंत्र रजिस्टरों को एक घड़ी चक्र में निष्पादित एक एकल निर्देश में एक्सेस किया जा सकता है। परिणामी वास्तुकला पारंपरिक CISC माइक्रोकंट्रोलर की तुलना में दस गुना अधिक तेजी से थ्रूपुट प्राप्त करते समय अधिक कुशल है।
ATtiny25/45/85 निम्नलिखित सुविधाएँ प्रदान करता है: 2/4/8K बाइट्स इन-सिस्टम प्रोग्रामेबल फ्लैश, 128/256/512 बाइट्स EEPROM, 128/256/256 बाइट्स SRAM, 6 सामान्य प्रयोजन I/O लाइनें, 32 सामान्य प्रयोजन कार्यशील रजिस्टर, तुलना मोड के साथ एक 8-बिट टाइमर/काउंटर, एक 8-बिट हाई स्पीड टाइमर/काउंटर, यूनिवर्सल सीरियल इंटरफ़ेस, आंतरिक और बाहरी इंटरप्ट, एक 4-चैनल, 10-बिट ADC, आंतरिक ऑसिलेटर के साथ एक प्रोग्रामेबल वॉचडॉग टाइमर और तीन सॉफ़्टवेयर चयन योग्य पावर सेविंग मोड। निष्क्रिय मोड CPU को रोकता है जबकि SRAM, टाइमर/काउंटर, ADC, एनालॉग तुलनित्र और इंटरप्ट सिस्टम को काम करना जारी रखने देता है। पावर-डाउन मोड रजिस्टर सामग्री को सहेजता है, अगले इंटरप्ट या हार्डवेयर रीसेट तक सभी चिप फ़ंक्शन को अक्षम करता है। ADC शोर न्यूनीकरण मोड, ADC रूपांतरण के दौरान स्विचिंग शोर को न्यूनतम करने के लिए, CPU और ADC को छोड़कर सभी I/O मॉड्यूल को रोक देता है।
डिवाइस को एटमेल की उच्च घनत्व वाली गैर-वाष्पशील मेमोरी तकनीक का उपयोग करके निर्मित किया गया है। ऑन-चिप ISP फ्लैश प्रोग्राम मेमोरी को SPI सीरियल इंटरफ़ेस के माध्यम से, पारंपरिक गैर-वाष्पशील मेमोरी प्रोग्रामर द्वारा या AVR कोर पर चलने वाले ऑन-चिप बूट कोड द्वारा इन-सिस्टम में पुनः प्रोग्राम करने की अनुमति देता है।
ATtiny25/45/85 AVR प्रोग्राम और सिस्टम विकास उपकरणों के पूर्ण समूह द्वारा समर्थित है, जिसमें शामिल हैं: सी कंपाइलर, मैक्रो असेंबलर, प्रोग्राम डीबगर/सिम्युलेटर और मूल्यांकन किट।
संसाधनों के बारे में
विकास उपकरण, एप्लिकेशन नोट्स और डेटाशीट्स का एक व्यापक सेट डाउनलोड पर उपलब्ध है http://www.atmel.com/avr.
कोड Exampलेस
इस दस्तावेज़ में सरल कोड है उदाampलेस जो संक्षेप में दिखाता है कि डिवाइस के विभिन्न भागों का उपयोग कैसे किया जाता है। ये कोड पूर्वampलेस मान लें कि भाग विशिष्ट शीर्षलेख file संकलन से पहले शामिल है। ध्यान रखें कि सभी C कंपाइलर वेंडर हेडर में बिट डेफिनिशन शामिल नहीं करते हैं files और सी में इंटरप्ट हैंडलिंग कंपाइलर निर्भर है। अधिक जानकारी के लिए कृपया सी कंपाइलर दस्तावेज के साथ पुष्टि करें।
विस्तारित I/O मैप में स्थित I/O रजिस्टरों के लिए, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, और “SBI” निर्देशों को उन निर्देशों से प्रतिस्थापित किया जाना चाहिए जो विस्तारित I/O तक पहुँच की अनुमति देते हैं। आम तौर पर, इसका मतलब है “LDS” और “STS” को “SBRS”, “SBRC”, “SBR”, और “CBR” के साथ मिलाना। ध्यान दें कि सभी AVR डिवाइस में विस्तारित I/O मैप शामिल नहीं है।
कैपेसिटिव टच सेंसिंग
एटमेल क्यूटच लाइब्रेरी एटमेल एवीआर माइक्रोकंट्रोलर पर टच सेंसिटिव इंटरफेस के लिए उपयोग में आसान समाधान प्रदान करती है। क्यूटच लाइब्रेरी में क्यूटच® और क्यूमैट्रिक्स® अधिग्रहण विधियों के लिए समर्थन शामिल है।
टच सेंसिंग को किसी भी एप्लीकेशन में QTouch लाइब्रेरी से जोड़कर और टच चैनल और सेंसर को परिभाषित करने के लिए लाइब्रेरी के एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस (API) का उपयोग करके आसानी से जोड़ा जा सकता है। इसके बाद एप्लीकेशन चैनल की जानकारी प्राप्त करने और टच सेंसर की स्थिति निर्धारित करने के लिए API को कॉल करता है।
क्यूटच लाइब्रेरी निःशुल्क है और इसे एटमेल से डाउनलोड किया जा सकता है webसाइट। कार्यान्वयन के बारे में अधिक जानकारी और विवरण के लिए, QTouch लाइब्रेरी उपयोगकर्ता गाइड देखें - जो Atmel से भी उपलब्ध है webसाइट।
डेटा प्रतिधारण
विश्वसनीयता योग्यता परिणाम दर्शाते हैं कि अनुमानित डेटा अवधारण विफलता दर 1°C पर 20 वर्षों में 85 PPM या 100°C पर 25 वर्षों में XNUMX PPM से बहुत कम है।
एवीआर सीपीयू कोर
परिचय
यह खंड सामान्य रूप से AVR कोर आर्किटेक्चर पर चर्चा करता है। CPU कोर का मुख्य कार्य सही प्रोग्राम निष्पादन सुनिश्चित करना है। इसलिए CPU को मेमोरी तक पहुँचने, गणना करने, बाह्य उपकरणों को नियंत्रित करने और व्यवधानों को संभालने में सक्षम होना चाहिए।
वास्तुकला ओवरview
प्रदर्शन और समानांतरता को अधिकतम करने के लिए, AVR हार्वर्ड आर्किटेक्चर का उपयोग करता है - जिसमें प्रोग्राम और डेटा के लिए अलग-अलग मेमोरी और बसें होती हैं। प्रोग्राम मेमोरी में निर्देशों को एकल स्तर की पाइपलाइनिंग के साथ निष्पादित किया जाता है। जब एक निर्देश निष्पादित किया जा रहा होता है, तो अगला निर्देश प्रोग्राम मेमोरी से पहले से प्राप्त होता है। यह अवधारणा निर्देशों को हर घड़ी चक्र में निष्पादित करने में सक्षम बनाती है। प्रोग्राम मेमोरी इन-सिस्टम रीप्रोग्रामेबल फ्लैश मेमोरी है।
त्वरित पहुँच रजिस्टर File इसमें 32 x 8-बिट सामान्य प्रयोजन कार्यशील रजिस्टर होते हैं, जिनमें एक एकल क्लॉक साइकिल एक्सेस समय होता है। यह एकल-चक्र अंकगणितीय तर्क इकाई (ALU) संचालन की अनुमति देता है। एक सामान्य ALU संचालन में, रजिस्टर से दो ऑपरेंड आउटपुट होते हैं File, ऑपरेशन निष्पादित किया जाता है, और परिणाम रजिस्टर में वापस संग्रहीत किया जाता है File- एक घड़ी चक्र में.
32 रजिस्टरों में से छह का उपयोग डेटा स्पेस एड्रेसिंग के लिए तीन 16-बिट अप्रत्यक्ष एड्रेस रजिस्टर पॉइंटर्स के रूप में किया जा सकता है - जिससे कुशल एड्रेस गणनाएँ संभव हो जाती हैं। इनमें से एक एड्रेस पॉइंटर का उपयोग फ्लैश प्रोग्राम मेमोरी में लुक अप टेबल के लिए एड्रेस पॉइंटर के रूप में भी किया जा सकता है। ये जोड़े गए फ़ंक्शन रजिस्टर 16-बिट X-, Y- और Z-रजिस्टर हैं, जिनका वर्णन इस खंड में बाद में किया गया है।
ALU रजिस्टरों के बीच या किसी स्थिरांक और रजिस्टर के बीच अंकगणितीय और तार्किक संचालन का समर्थन करता है। ALU में एकल रजिस्टर संचालन भी निष्पादित किया जा सकता है। अंकगणितीय संचालन के बाद, संचालन के परिणाम के बारे में जानकारी को दर्शाने के लिए स्थिति रजिस्टर को अपडेट किया जाता है।
प्रोग्राम प्रवाह सशर्त और बिना शर्त जंप और कॉल निर्देशों द्वारा प्रदान किया जाता है, जो सीधे पूरे एड्रेस स्पेस को संबोधित करने में सक्षम होते हैं। अधिकांश AVR निर्देशों में एकल 16-बिट वर्ड प्रारूप होता है, लेकिन 32-बिट निर्देश भी होते हैं।
इंटरप्ट और सबरूटीन कॉल के दौरान, रिटर्न एड्रेस प्रोग्राम काउंटर (पीसी) स्टैक पर संग्रहीत होता है। स्टैक को सामान्य डेटा SRAM में प्रभावी रूप से आवंटित किया जाता है, और परिणामस्वरूप स्टैक का आकार केवल कुल SRAM आकार और SRAM के उपयोग द्वारा सीमित होता है। सभी उपयोगकर्ता प्रोग्राम को रीसेट रूटीन में SP को आरंभ करना चाहिए (सब-रूटीन या इंटरप्ट निष्पादित होने से पहले)। स्टैक पॉइंटर (SP) I/O स्पेस में पढ़ने/लिखने योग्य है। AVR आर्किटेक्चर में समर्थित पाँच अलग-अलग एड्रेसिंग मोड के माध्यम से डेटा SRAM को आसानी से एक्सेस किया जा सकता है।
AVR आर्किटेक्चर में मेमोरी स्पेस सभी रैखिक और नियमित मेमोरी मैप हैं।
एक लचीले इंटरप्ट मॉड्यूल में I/O स्पेस में इसके नियंत्रण रजिस्टर होते हैं, जिसमें स्टेटस रजिस्टर में एक अतिरिक्त ग्लोबल इंटरप्ट इनेबल बिट होता है। सभी इंटरप्ट में इंटरप्ट वेक्टर टेबल में एक अलग इंटरप्ट वेक्टर होता है। इंटरप्ट की प्राथमिकता उनके इंटरप्ट वेक्टर स्थिति के अनुसार होती है। इंटरप्ट वेक्टर पता जितना कम होगा, प्राथमिकता उतनी ही अधिक होगी।
I/O मेमोरी स्पेस में CPU परिधीय कार्यों के लिए 64 पते होते हैं जैसे कि कंट्रोल रजिस्टर, SPI और अन्य I/O फ़ंक्शन। I/O मेमोरी को सीधे एक्सेस किया जा सकता है, या रजिस्टर के बाद डेटा स्पेस लोकेशन के रूप में एक्सेस किया जा सकता है। File, 0x20 – 0x5एफ.
ए.एल.यू. – अंकगणितीय तर्क इकाई
उच्च-प्रदर्शन AVR ALU सभी 32 सामान्य प्रयोजन कार्य रजिस्टरों के साथ सीधे कनेक्शन में संचालित होता है। एक एकल घड़ी चक्र के भीतर, सामान्य प्रयोजन रजिस्टरों के बीच या एक रजिस्टर और एक तत्काल के बीच अंकगणितीय संचालन निष्पादित किए जाते हैं। ALU संचालन तीन मुख्य श्रेणियों में विभाजित हैं - अंकगणित, तार्किक और बिट-फ़ंक्शन। आर्किटेक्चर के कुछ कार्यान्वयन हस्ताक्षरित/हस्ताक्षर रहित गुणन और भिन्नात्मक प्रारूप दोनों का समर्थन करने वाला एक शक्तिशाली गुणक भी प्रदान करते हैं। विस्तृत विवरण के लिए "निर्देश सेट" अनुभाग देखें।
स्थिति रजिस्टर
स्टेटस रजिस्टर में सबसे हाल ही में निष्पादित अंकगणितीय निर्देश के परिणाम के बारे में जानकारी होती है। इस जानकारी का उपयोग सशर्त संचालन करने के लिए प्रोग्राम प्रवाह को बदलने के लिए किया जा सकता है। ध्यान दें कि स्टेटस रजिस्टर सभी ALU संचालन के बाद अपडेट किया जाता है, जैसा कि निर्देश सेट संदर्भ में निर्दिष्ट है। यह कई मामलों में समर्पित तुलना निर्देशों का उपयोग करने की आवश्यकता को हटा देगा, जिसके परिणामस्वरूप तेज़ और अधिक कॉम्पैक्ट कोड होगा।
इंटरप्ट रूटीन में प्रवेश करते समय स्टेटस रजिस्टर स्वचालित रूप से संग्रहीत नहीं होता है और इंटरप्ट से लौटने पर पुनर्स्थापित नहीं होता है। इसे सॉफ़्टवेयर द्वारा नियंत्रित किया जाना चाहिए।
SREG – AVR स्थिति रजिस्टर
एवीआर स्टेटस रजिस्टर - एसआरईजी - को इस प्रकार परिभाषित किया गया है:
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3एफ | I | T | H | S | V | N | Z | C | एसआरईजी |
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट 7 – I: ग्लोबल इंटरप्ट सक्षम
इंटरप्ट को सक्षम करने के लिए ग्लोबल इंटरप्ट इनेबल बिट को सेट किया जाना चाहिए। फिर अलग-अलग कंट्रोल रजिस्टर में अलग-अलग इंटरप्ट इनेबल कंट्रोल किया जाता है। यदि ग्लोबल इंटरप्ट इनेबल रजिस्टर को साफ़ किया जाता है, तो व्यक्तिगत इंटरप्ट इनेबल सेटिंग्स से स्वतंत्र कोई भी इंटरप्ट सक्षम नहीं होता है। इंटरप्ट होने के बाद हार्डवेयर द्वारा I-बिट को साफ़ किया जाता है, और बाद के इंटरप्ट को सक्षम करने के लिए RETI निर्देश द्वारा सेट किया जाता है। I-बिट को SEI और CLI निर्देशों के साथ एप्लिकेशन द्वारा भी सेट और साफ़ किया जा सकता है, जैसा कि निर्देश सेट संदर्भ में वर्णित है।
बिट 6 – टी: बिट कॉपी स्टोरेज
बिट कॉपी निर्देश BLD (बिट लोड) और BST (बिट स्टोर) संचालित बिट के लिए स्रोत या गंतव्य के रूप में टी-बिट का उपयोग करते हैं। रजिस्टर में रजिस्टर से एक बिट File BST निर्देश द्वारा T में कॉपी किया जा सकता है, और T में एक बिट को रजिस्टर में एक बिट में कॉपी किया जा सकता है File BLD अनुदेश द्वारा.
बिट 5 – एच: हाफ कैरी फ्लैग
हाफ कैरी फ्लैग H कुछ अंकगणितीय संक्रियाओं में हाफ कैरी को इंगित करता है। हाफ कैरी BCD अंकगणित में उपयोगी है। विस्तृत जानकारी के लिए “निर्देश सेट विवरण” देखें।
बिट 4 – S: साइन बिट, S = N ⊕ V
एस-बिट हमेशा एक एक्सक्लूसिव या नेगेटिव फ्लैग एन और टूज़ कॉम्प्लिमेंट ओवरफ़्लो फ्लैग वी के बीच होता है। विस्तृत जानकारी के लिए "निर्देश सेट विवरण" देखें।
बिट 3 – V: दो का पूरक ओवरफ़्लो ध्वज
दो के पूरक ओवरफ़्लो फ़्लैग V दो के पूरक अंकगणित का समर्थन करता है। विस्तृत जानकारी के लिए “निर्देश सेट विवरण” देखें।
बिट 2 – N: नकारात्मक ध्वज
नेगेटिव फ्लैग N अंकगणितीय या तर्क संचालन में नकारात्मक परिणाम को इंगित करता है। विस्तृत जानकारी के लिए “निर्देश सेट विवरण” देखें।
बिट 1 – Z: शून्य ध्वज
शून्य ध्वज Z अंकगणितीय या तर्क संचालन में शून्य परिणाम को इंगित करता है। विस्तृत जानकारी के लिए “निर्देश सेट विवरण” देखें।
बिट 0 – सी: कैरी फ्लैग
कैरी फ्लैग C अंकगणितीय या तार्किक ऑपरेशन में कैरी को इंगित करता है। विस्तृत जानकारी के लिए “निर्देश सेट विवरण” देखें।
सामान्य प्रयोजन रजिस्टर File
रजिस्टर File AVR एन्हांस्ड RISC निर्देश सेट के लिए अनुकूलित है। आवश्यक प्रदर्शन और लचीलापन प्राप्त करने के लिए, रजिस्टर द्वारा निम्नलिखित इनपुट/आउटपुट योजनाओं का समर्थन किया जाता है File:
एक 8-बिट आउटपुट ऑपरेंड और एक 8-बिट परिणाम इनपुट
दो 8-बिट आउटपुट ऑपरेंड और एक 8-बिट परिणाम इनपुट
दो 8-बिट आउटपुट ऑपरेंड और एक 16-बिट परिणाम इनपुट
एक 16-बिट आउटपुट ऑपरेंड और एक 16-बिट परिणाम इनपुट
चित्र 4-2 सीपीयू में 32 सामान्य प्रयोजन कार्यशील रजिस्टरों की संरचना को दर्शाता है।
जैसा कि दिखाया गया है चित्र 4-2, प्रत्येक रजिस्टर को एक डेटा मेमोरी पता भी दिया जाता है, जो उन्हें सीधे उपयोगकर्ता डेटा स्पेस के पहले 32 स्थानों में मैप करता है। हालाँकि SRAM स्थानों के रूप में भौतिक रूप से कार्यान्वित नहीं किया जा रहा है, यह मेमोरी संगठन रजिस्टरों की पहुँच में बहुत लचीलापन प्रदान करता है, क्योंकि X-, Y- और Z-पॉइंटर रजिस्टर को किसी भी रजिस्टर को इंडेक्स करने के लिए सेट किया जा सकता है। fileरजिस्टर पर लागू अधिकांश अनुदेश File सभी रजिस्टरों तक सीधी पहुंच है, और उनमें से अधिकांश एकल-चक्र निर्देश हैं।
एक्स-रजिस्टर, वाई-रजिस्टर, और जेड-रजिस्टर
रजिस्टर R26..R31 में उनके सामान्य प्रयोजन उपयोग के लिए कुछ अतिरिक्त कार्य हैं। ये रजिस्टर डेटा स्पेस के अप्रत्यक्ष एड्रेसिंग के लिए 16-बिट एड्रेस पॉइंटर्स हैं। तीन अप्रत्यक्ष एड्रेस रजिस्टर X, Y, और Z को इस प्रकार परिभाषित किया गया है जैसा कि नीचे वर्णित है चित्र 4-3.
विभिन्न एड्रेसिंग मोड में इन एड्रेस रजिस्टरों के कार्य निश्चित विस्थापन, स्वचालित वृद्धि और स्वचालित ह्रास के रूप में होते हैं (विवरण के लिए निर्देश सेट संदर्भ देखें)।
स्टेक सूचक
स्टैक का उपयोग मुख्य रूप से अस्थायी डेटा संग्रहीत करने, स्थानीय चर संग्रहीत करने और इंटरप्ट और सबरूटीन कॉल के बाद रिटर्न एड्रेस संग्रहीत करने के लिए किया जाता है। स्टैक पॉइंटर रजिस्टर हमेशा स्टैक के शीर्ष की ओर इंगित करता है। ध्यान दें कि स्टैक को उच्च मेमोरी स्थानों से निम्न मेमोरी स्थानों तक बढ़ने के रूप में कार्यान्वित किया जाता है। इसका मतलब है कि स्टैक पुश कमांड स्टैक पॉइंटर को कम करता है।
स्टैक पॉइंटर डेटा SRAM स्टैक क्षेत्र की ओर इशारा करता है जहाँ सबरूटीन और इंटरप्ट स्टैक स्थित हैं। डेटा SRAM में यह स्टैक स्पेस किसी भी सबरूटीन कॉल के निष्पादित होने या इंटरप्ट को सक्षम करने से पहले प्रोग्राम द्वारा परिभाषित किया जाना चाहिए। स्टैक पॉइंटर को 0x60 से ऊपर पॉइंट करने के लिए सेट किया जाना चाहिए। जब डेटा को PUSH निर्देश के साथ स्टैक पर धकेला जाता है, तो स्टैक पॉइंटर एक से कम हो जाता है, और जब रिटर्न एड्रेस को सबरूटीन कॉल या इंटरप्ट के साथ स्टैक पर धकेला जाता है, तो यह दो से कम हो जाता है। जब डेटा को POP निर्देश के साथ स्टैक से पॉप किया जाता है, तो स्टैक पॉइंटर एक से बढ़ जाता है, और जब डेटा को सबरूटीन RET से रिटर्न या इंटरप्ट RETI से रिटर्न के साथ स्टैक से पॉप किया जाता है, तो यह दो से बढ़ जाता है।
AVR स्टैक पॉइंटर को I/O स्पेस में दो 8-बिट रजिस्टर के रूप में कार्यान्वित किया जाता है। वास्तव में उपयोग किए जाने वाले बिट्स की संख्या कार्यान्वयन पर निर्भर करती है। ध्यान दें कि AVR आर्किटेक्चर के कुछ कार्यान्वयनों में डेटा स्पेस इतना छोटा है कि केवल SPL की आवश्यकता होती है। इस मामले में, SPH रजिस्टर मौजूद नहीं होगा।
एसपीएच और एसपीएल — स्टैक पॉइंटर रजिस्टर
अंश | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
0x3ई | एसपी15 | एसपी14 | एसपी13 | एसपी12 | एसपी11 | एसपी10 | एसपी9 | एसपी8 | एसपीएच |
0x3डी | एसपी7 | एसपी6 | एसपी5 | एसपी4 | एसपी3 | एसपी2 | एसपी1 | एसपी0 | एसपीएल |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | |
आरंभिक मूल्य | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड | रामेन्ड |
निर्देश निष्पादन समय
यह खंड निर्देश निष्पादन के लिए सामान्य एक्सेस टाइमिंग अवधारणाओं का वर्णन करता है। AVR CPU को CPU क्लॉक clkCPU द्वारा संचालित किया जाता है, जो चिप के लिए चयनित क्लॉक स्रोत से सीधे उत्पन्न होता है। कोई आंतरिक क्लॉक विभाजन का उपयोग नहीं किया जाता है।
चित्र 4-4 हार्वर्ड आर्किटेक्चर और फास्ट एक्सेस रजिस्टर द्वारा सक्षम समानांतर निर्देश फ़ेच और निर्देश निष्पादन को दिखाता है File अवधारणा। यह प्रति मेगाहर्ट्ज 1 एमआईपीएस तक प्राप्त करने के लिए बुनियादी पाइपलाइनिंग अवधारणा है, जिसमें प्रति लागत कार्यों, प्रति घड़ियों कार्यों और प्रति बिजली इकाई कार्यों के लिए संबंधित अद्वितीय परिणाम हैं।
चित्र 4-5. एकल चक्र ALU संचालन
रीसेट और इंटरप्ट हैंडलिंग
AVR कई अलग-अलग इंटरप्ट स्रोत प्रदान करता है। इन इंटरप्ट और अलग-अलग रीसेट वेक्टर में से प्रत्येक के पास प्रोग्राम मेमोरी स्पेस में एक अलग प्रोग्राम वेक्टर होता है। सभी इंटरप्ट को अलग-अलग सक्षम बिट्स दिए गए हैं जिन्हें स्टेटस रजिस्टर में ग्लोबल इंटरप्ट सक्षम बिट के साथ लॉजिक वन के रूप में लिखा जाना चाहिए ताकि इंटरप्ट को सक्षम किया जा सके।
प्रोग्राम मेमोरी स्पेस में सबसे कम पते डिफ़ॉल्ट रूप से रीसेट और इंटरप्ट वेक्टर के रूप में परिभाषित किए जाते हैं। वेक्टर की पूरी सूची नीचे दी गई है पेज 48 पर “व्यवधान”. सूची विभिन्न व्यवधानों के प्राथमिकता स्तरों को भी निर्धारित करती है। पता जितना कम होगा, प्राथमिकता स्तर उतना ही अधिक होगा। RESET की प्राथमिकता सबसे अधिक है, और उसके बाद INT0 है - बाहरी व्यवधान अनुरोध 0।
जब कोई व्यवधान होता है, तो ग्लोबल इंटरप्ट इनेबल I-बिट साफ़ हो जाता है और सभी व्यवधान अक्षम हो जाते हैं। उपयोगकर्ता सॉफ़्टवेयर नेस्टेड इंटरप्ट को सक्षम करने के लिए I-बिट में लॉजिक वन लिख सकता है। सभी सक्षम इंटरप्ट तब वर्तमान इंटरप्ट रूटीन को बाधित कर सकते हैं। जब रिटर्न फ्रॉम इंटरप्ट इंस्ट्रक्शन - RETI - निष्पादित होता है, तो I-बिट स्वचालित रूप से सेट हो जाता है।
मूल रूप से दो प्रकार के इंटरप्ट होते हैं। पहला प्रकार किसी घटना द्वारा ट्रिगर किया जाता है जो इंटरप्ट फ्लैग सेट करता है। इन इंटरप्ट के लिए, प्रोग्राम काउंटर को इंटरप्ट हैंडलिंग रूटीन को निष्पादित करने के लिए वास्तविक इंटरप्ट वेक्टर पर वेक्टर किया जाता है, और हार्डवेयर संबंधित इंटरप्ट फ्लैग को साफ़ करता है। इंटरप्ट फ्लैग को साफ़ किए जाने वाले फ्लैग बिट पोजिशन में लॉजिक वन लिखकर भी साफ़ किया जा सकता है। यदि संबंधित इंटरप्ट इनेबल बिट को साफ़ करते समय कोई इंटरप्ट स्थिति होती है, तो इंटरप्ट फ्लैग सेट हो जाएगा और तब तक याद रहेगा जब तक कि इंटरप्ट सक्षम न हो जाए, या सॉफ़्टवेयर द्वारा फ्लैग साफ़ न हो जाए। इसी तरह, यदि ग्लोबल इंटरप्ट इनेबल बिट को साफ़ करते समय एक या अधिक इंटरप्ट स्थितियाँ होती हैं, तो संबंधित इंटरप्ट फ्लैग सेट हो जाएगा और तब तक याद रहेगा जब तक कि ग्लोबल इंटरप्ट इनेबल बिट सेट न हो जाए, और फिर प्राथमिकता के क्रम से निष्पादित किया जाएगा।
दूसरे प्रकार के इंटरप्ट तब तक ट्रिगर होंगे जब तक इंटरप्ट की स्थिति मौजूद है। इन इंटरप्ट में जरूरी नहीं कि इंटरप्ट फ्लैग हो। यदि इंटरप्ट सक्षम होने से पहले इंटरप्ट की स्थिति गायब हो जाती है, तो इंटरप्ट ट्रिगर नहीं होगा।
जब AVR किसी व्यवधान से बाहर निकलता है, तो वह हमेशा मुख्य प्रोग्राम पर वापस लौटेगा और किसी भी लंबित व्यवधान के पूरा होने से पहले एक और निर्देश निष्पादित करेगा।
ध्यान दें कि इंटरप्ट रूटीन में प्रवेश करते समय स्टेटस रजिस्टर स्वचालित रूप से संग्रहीत नहीं होता है, न ही इंटरप्ट रूटीन से लौटने पर पुनर्स्थापित होता है। इसे सॉफ़्टवेयर द्वारा नियंत्रित किया जाना चाहिए।
इंटरप्ट को अक्षम करने के लिए CLI निर्देश का उपयोग करते समय, इंटरप्ट तुरंत अक्षम हो जाएगा। CLI निर्देश के बाद कोई भी इंटरप्ट निष्पादित नहीं किया जाएगा, भले ही वह CLI निर्देश के साथ-साथ हो। निम्नलिखित उदाहरणampयह दिखाता है कि समयबद्ध EEPROM लेखन अनुक्रम के दौरान व्यवधानों से बचने के लिए इसका उपयोग कैसे किया जा सकता है।
असेंबली कोड एक्सample |
r16 में, SREG; SREG मान संग्रहीत करें
cli; समयबद्ध अनुक्रम के दौरान व्यवधान अक्षम करें एसबीआई EECR, EEMPE; EEPROM लिखना प्रारंभ करें एसबीआई ईईसीआर, ईईपीई SREG से बाहर, r16; SREG मान पुनः स्थापित करें (I-बिट) |
सी कोड एक्सample |
चार cSREG;
cSREG = SREG; /* SREG मान संग्रहीत करें */ /* समयबद्ध अनुक्रम के दौरान व्यवधान अक्षम करें */ _सीएलआई(); ईईसीआर |= (१< ईईसीआर |= (१< SREG = cSREG; /* SREG मान पुनः स्थापित करें (I-बिट) */ |
जब इंटरप्ट को सक्षम करने के लिए SEI निर्देश का उपयोग किया जाता है, तो SEI के बाद आने वाला निर्देश किसी भी लंबित इंटरप्ट से पहले निष्पादित किया जाएगा, जैसा कि इस उदाहरण में दिखाया गया है।ampले.
असेंबली कोड एक्सample |
sei; ग्लोबल इंटरप्ट सक्षम सेट करें
नींद; नींद में प्रवेश करें, व्यवधान की प्रतीक्षा करें ; नोट: किसी भी लंबित कार्य से पहले स्लीप में प्रवेश करेगा ; व्यवधान |
सी कोड एक्सample |
_SEI(); /* ग्लोबल इंटरप्ट सक्षम सेट करें */
_SLEEP(); /* स्लीप में प्रवेश करें, व्यवधान की प्रतीक्षा करें */ /* नोट: किसी भी लंबित व्यवधान से पहले स्लीप में प्रवेश करेगा */ |
व्यवधान प्रतिक्रिया समय
सभी सक्षम AVR इंटरप्ट के लिए इंटरप्ट निष्पादन प्रतिक्रिया न्यूनतम चार क्लॉक चक्र है। चार क्लॉक चक्रों के बाद वास्तविक इंटरप्ट हैंडलिंग रूटीन के लिए प्रोग्राम वेक्टर पता निष्पादित किया जाता है। इस चार क्लॉक चक्र अवधि के दौरान, प्रोग्राम काउंटर को स्टैक पर धकेल दिया जाता है। वेक्टर आम तौर पर इंटरप्ट रूटीन के लिए एक जंप होता है, और इस जंप में तीन क्लॉक चक्र लगते हैं। यदि मल्टी-साइकिल निर्देश के निष्पादन के दौरान कोई इंटरप्ट होता है, तो यह निर्देश इंटरप्ट सर्व किए जाने से पहले पूरा हो जाता है। यदि MCU स्लीप मोड में होने पर कोई इंटरप्ट होता है, तो इंटरप्ट निष्पादन प्रतिक्रिया समय चार क्लॉक चक्रों से बढ़ जाता है। यह वृद्धि चयनित स्लीप मोड से स्टार्ट-अप समय के अतिरिक्त होती है।
इंटरप्ट हैंडलिंग रूटीन से वापसी में चार क्लॉक चक्र लगते हैं। इन चार क्लॉक चक्रों के दौरान, प्रोग्राम काउंटर (दो बाइट्स) को स्टैक से वापस पॉप किया जाता है, स्टैक पॉइंटर को दो से बढ़ाया जाता है, और SREG में I-बिट सेट किया जाता है।
एवीआर यादें
यह खंड ATtiny25/45/85 में विभिन्न मेमोरी का वर्णन करता है। AVR आर्किटेक्चर में दो मुख्य मेमोरी स्पेस हैं, डेटा मेमोरी और प्रोग्राम मेमोरी स्पेस। इसके अलावा, ATtiny25/45/85 में डेटा स्टोरेज के लिए EEPROM मेमोरी की सुविधा है। सभी तीन मेमोरी स्पेस रैखिक और नियमित हैं।
इन-सिस्टम पुनः-प्रोग्रामयोग्य फ्लैश प्रोग्राम मेमोरी
ATtiny25/45/85 में प्रोग्राम स्टोरेज के लिए 2/4/8K बाइट्स ऑन-चिप इन-सिस्टम रीप्रोग्रामेबल फ्लैश मेमोरी होती है। चूंकि सभी AVR निर्देश 16 या 32 बिट चौड़े होते हैं, इसलिए फ्लैश को 1024/2048/4096 x 16 के रूप में व्यवस्थित किया जाता है।
फ्लैश मेमोरी में कम से कम 10,000 लेखन/मिटाने चक्रों की सहनशीलता होती है। ATtiny25/45/85 प्रोग्राम काउंटर (PC) 10/11/12 बिट्स चौड़ा है, इस प्रकार 1024/2048/4096 प्रोग्राम मेमोरी स्थानों को संबोधित करता है। “स्मृति कार्यक्रम- मिंग” पेज 147 पर इसमें SPI पिन का उपयोग करके फ्लैश डेटा सीरियल डाउनलोडिंग पर विस्तृत विवरण दिया गया है।
स्थिर तालिकाओं को संपूर्ण प्रोग्राम मेमोरी एड्रेस स्पेस के भीतर आवंटित किया जा सकता है (एलपीएम - लोड प्रोग्राम मेमोरी निर्देश विवरण देखें)।
चित्र 5-1. प्रोग्राम मेमोरी मैप
SRAM डेटा मेमोरी
चित्र 5-2 दिखाता है कि ATtiny25/45/85 SRAM मेमोरी कैसे व्यवस्थित है।
निचले 224/352/607 डेटा मेमोरी स्थान रजिस्टर और डेटा मेमोरी दोनों को संबोधित करते हैं। File, I/O मेमोरी और आंतरिक डेटा SRAM। पहले 32 स्थान रजिस्टर को संबोधित करते हैं Fileअगले 64 स्थान मानक I/O मेमोरी को संबोधित करते हैं, और अंतिम 128/256/512 स्थान आंतरिक डेटा SRAM को संबोधित करते हैं।
डेटा मेमोरी के लिए पाँच अलग-अलग एड्रेसिंग मोड शामिल हैं: प्रत्यक्ष, विस्थापन के साथ अप्रत्यक्ष, अप्रत्यक्ष, पूर्व-कमी के साथ अप्रत्यक्ष, और पोस्ट-वृद्धि के साथ अप्रत्यक्ष। रजिस्टर में Fileरजिस्टर R26 से R31 में अप्रत्यक्ष एड्रेसिंग पॉइंटर रजिस्टर की सुविधा है।
प्रत्यक्ष एड्रेसिंग सम्पूर्ण डेटा स्थान तक पहुँचती है।
विस्थापन के साथ अप्रत्यक्ष मोड Y- या Z- रजिस्टर द्वारा दिए गए आधार पते से 63 पता स्थानों तक पहुंचता है।
स्वचालित पूर्व-ह्रास और पश्च-वृद्धि के साथ रजिस्टर अप्रत्यक्ष एड्रेसिंग मोड का उपयोग करते समय, एड्रेस रजिस्टर X, Y और Z को घटाया या बढ़ाया जाता है।
ATtiny32/64/128 में 256 सामान्य प्रयोजन कार्यशील रजिस्टर, 512 I/O रजिस्टर, तथा आंतरिक डेटा SRAM के 25/45/85 बाइट्स सभी इन सभी एड्रेसिंग मोड के माध्यम से सुलभ हैं। रजिस्टर File में वर्णित है “जनरल- सामान्य उद्देश्य रजिस्टर File"पेज 10 पर".
चित्र 5-2. डेटा मेमोरी मैप
डेटा मेमोरी एक्सेस टाइम्स
यह अनुभाग आंतरिक मेमोरी एक्सेस के लिए सामान्य एक्सेस टाइमिंग अवधारणाओं का वर्णन करता है। आंतरिक डेटा SRAM एक्सेस दो clkCPU चक्रों में किया जाता है जैसा कि में वर्णित है चित्र 5-3.
चित्र 5-3. ऑन-चिप डेटा SRAM एक्सेस साइकल EEPROM डेटा मेमोरी
ATtiny25/45/85 में 128/256/512 बाइट्स डेटा EEPROM मेमोरी होती है। इसे एक अलग डेटा स्पेस के रूप में व्यवस्थित किया जाता है, जिसमें सिंगल बाइट्स को पढ़ा और लिखा जा सकता है। EEPROM में कम से कम 100,000 राइट/इरेज़ साइकल की सहनशक्ति होती है। EEPROM और CPU के बीच पहुँच का वर्णन निम्नलिखित में किया गया है, जिसमें EEPROM एड्रेस रजिस्टर, EEPROM डेटा रजिस्टर और EEPROM कंट्रोल रजिस्टर को निर्दिष्ट किया गया है। विवरण के लिए देखें “सीरियल डाउनलोडिंग” पेज 151 पर.
EEPROM पढ़ने/लिखने की पहुँच
EEPROM एक्सेस रजिस्टर I/O स्पेस में पहुँच योग्य हैं।
EEPROM के लिए लेखन पहुँच समय नीचे दिया गया है पृष्ठ 5 पर तालिका 1-21. हालाँकि, एक स्व-समय निर्धारण फ़ंक्शन उपयोगकर्ता सॉफ़्टवेयर को यह पता लगाने देता है कि अगला बाइट कब लिखा जा सकता है। यदि उपयोगकर्ता कोड में EEPROM लिखने के निर्देश हैं, तो कुछ सावधानियाँ बरतनी चाहिए। भारी फ़िल्टर की गई बिजली आपूर्ति में, VCC के धीरे-धीरे बढ़ने या गिरने की संभावना है
पावर-अप/डाउन। इससे डिवाइस कुछ समय के लिए वॉल्यूम पर चलती हैtagउपयोग की गई क्लॉक आवृत्ति के लिए न्यूनतम के रूप में निर्दिष्ट की गई आवृत्ति से कम। देखें “EEPROM भ्रष्टाचार को रोकना” पृष्ठ 19 पर इन स्थितियों में समस्याओं से बचने के तरीके के बारे में विस्तृत जानकारी के लिए देखें।
अनजाने में EEPROM लिखने से बचने के लिए, एक विशिष्ट लेखन प्रक्रिया का पालन किया जाना चाहिए। “परमाणु बाइट प्रोग्रामिंग” पेज 17 पर और “स्प्लिट बाइट प्रोग्रामिंग” पेज 17 पर इस पर जानकारी के लिए।
जब EEPROM को पढ़ा जाता है, तो अगले निर्देश के निष्पादन से पहले CPU को चार क्लॉक चक्रों के लिए रोक दिया जाता है। जब EEPROM को लिखा जाता है, तो अगले निर्देश के निष्पादन से पहले CPU को दो क्लॉक चक्रों के लिए रोक दिया जाता है।
परमाणु बाइट प्रोग्रामिंग
एटॉमिक बाइट प्रोग्रामिंग का उपयोग करना सबसे सरल तरीका है। EEPROM में बाइट लिखते समय, उपयोगकर्ता को EEAR रजिस्टर में पता और EEDR रजिस्टर में डेटा लिखना होगा। यदि EEPMn बिट शून्य हैं, तो EEPE (EEMPE लिखे जाने के चार चक्रों के भीतर) लिखने से मिटाने/लिखने का कार्य शुरू हो जाएगा। मिटाने और लिखने का चक्र दोनों एक ही ऑपरेशन में किए जाते हैं और कुल प्रोग्रामिंग समय दिया गया है पृष्ठ 5 पर तालिका 1-21EEPE बिट तब तक सेट रहता है जब तक मिटाने और लिखने का काम पूरा नहीं हो जाता। जब डिवाइस प्रोग्रामिंग में व्यस्त होती है, तो कोई भी अन्य EEPROM ऑपरेशन करना संभव नहीं होता है।
स्प्लिट बाइट प्रोग्रामिंग
मिटाने और लिखने के चक्र को दो अलग-अलग ऑपरेशनों में विभाजित करना संभव है। यह तब उपयोगी हो सकता है जब सिस्टम को कुछ सीमित समय के लिए कम एक्सेस समय की आवश्यकता होती है (आमतौर पर अगर बिजली की आपूर्ति चालू हो जाती है)tagई गिरता है) लाभ उठाने के लिए tagइस विधि के अनुसार, यह आवश्यक है कि लिखे जाने वाले स्थानों को लिखने के ऑपरेशन से पहले मिटा दिया गया हो। लेकिन चूंकि मिटाने और लिखने के ऑपरेशन अलग-अलग होते हैं, इसलिए सिस्टम द्वारा समय-महत्वपूर्ण ऑपरेशन (आमतौर पर पावर-अप के बाद) करने की अनुमति दिए जाने पर मिटाने के ऑपरेशन करना संभव है।
मिटाएं
एक बाइट मिटाने के लिए, पता EEAR में लिखा जाना चाहिए। यदि EEPMn बिट्स 0b01 हैं, तो EEPE लिखने से (EEMPE लिखे जाने के चार चक्रों के भीतर) केवल मिटाने का ऑपरेशन शुरू होगा (प्रोग्रामिंग समय नीचे दिया गया है) तालिका 5-1 पर पेज 21)। मिटाने का ऑपरेशन पूरा होने तक EEPE बिट सेट रहता है। जब डिवाइस प्रोग्रामिंग में व्यस्त होती है, तो कोई अन्य EEPROM ऑपरेशन करना संभव नहीं होता है।
लिखना
स्थान लिखने के लिए, उपयोगकर्ता को पता EEAR में और डेटा EEDR में लिखना होगा। यदि EEPMn बिट्स 0b10 हैं, तो EEPE लिखना (EEMPE लिखे जाने के चार चक्रों के भीतर) केवल लेखन ऑपरेशन को ट्रिगर करेगा (प्रोग्रामिंग समय नीचे दिया गया है) पृष्ठ 5 पर तालिका 1-21)। EEPE बिट तब तक सेट रहता है जब तक लेखन कार्य पूरा नहीं हो जाता। यदि लिखने से पहले लिखे जाने वाले स्थान को मिटाया नहीं गया है, तो संग्रहीत डेटा को खोया हुआ माना जाना चाहिए। जब डिवाइस प्रोग्रामिंग में व्यस्त होती है, तो कोई अन्य EEPROM ऑपरेशन करना संभव नहीं होता है।
कैलिब्रेटेड ऑसिलेटर का उपयोग EEPROM एक्सेस के समय के लिए किया जाता है। सुनिश्चित करें कि ऑसिलेटर आवृत्ति में वर्णित आवश्यकताओं के भीतर है “OSCCAL – ऑसिलेटर कैलिब्रेशन रजिस्टर” पृष्ठ 31 पर.
निम्नलिखित कोड पूर्व:ampये EEPROM के मिटाने, लिखने या परमाणु लिखने के लिए एक असेंबली और एक C फ़ंक्शन दिखाते हैं।ampयह मान लिया जाता है कि व्यवधानों को नियंत्रित किया जाता है (उदाहरण के लिए, वैश्विक स्तर पर व्यवधानों को अक्षम करके) ताकि इन कार्यों के निष्पादन के दौरान कोई व्यवधान उत्पन्न न हो।
असेंबली कोड एक्सample |
EEPROM_लेखन:
; पिछले लेखन के पूरा होने की प्रतीक्षा करें एसबीआईसी ईईसीआर,ईईपीई rjmp EEPROM_राइट ; प्रोग्रामिंग मोड सेट करें ldi r16, (0<<EEPM1)|(0<<EEPM0) आउट ईईसीआर, आर16 ; पता रजिस्टर में पता (r18:r17) सेट करें बाहर EEARH, r18 आउट ईअर्ल, आर17 ; डेटा रजिस्टर में डेटा (r19) लिखें आउट ईईडीआर, आर19 ; EEMPE में तार्किक एक लिखें एसबीआई ईईसीआर,ईईएमपीई ; EEPE सेट करके eeprom लेखन प्रारंभ करें एसबीआई ईईसीआर,ईईपीई गीला करना |
सी कोड एक्सample |
शून्य EEPROM_write(अहस्ताक्षरित वर्ण ucAddress, अहस्ताक्षरित वर्ण ucData)
{ /* पिछले लेखन के पूरा होने की प्रतीक्षा करें */ while(EECR & (1< ; /* प्रोग्रामिंग मोड सेट करें */ ईईसीआर = (0< /* पता और डेटा रजिस्टर सेट करें */ EEAR = ucAddress; ईईडीआर = यूसीडाटा; /* EEMPE में तार्किक एक लिखें */ ईईसीआर |= (१< /* EEPE सेट करके eeprom लेखन प्रारंभ करें */ ईईसीआर |= (१< } |
अगला कोड पूर्वampमॉडल EEPROM को पढ़ने के लिए असेंबली और C फ़ंक्शन दिखाते हैं।ampयह मान लिया जाता है कि व्यवधानों को नियंत्रित किया जाता है, ताकि इन कार्यों के निष्पादन के दौरान कोई व्यवधान उत्पन्न न हो।
असेंबली कोड एक्सample |
EEPROM_रीड:
; पिछले लेखन के पूरा होने की प्रतीक्षा करें एसबीआईसी ईईसीआर,ईईपीई आरजेएमपी EEPROM_read ; पता रजिस्टर में पता (r18:r17) सेट करें बाहर EEARH, r18 आउट ईअर्ल, आर17 ; EERE लिखकर eeprom पढ़ना शुरू करें एसबीआई ईईसीआर,ईईआरई ; डेटा रजिस्टर से डेटा पढ़ें आर16,ईईडीआर में गीला करना |
सी कोड एक्सample |
अहस्ताक्षरित वर्ण EEPROM_read(अहस्ताक्षरित वर्ण ucAddress)
{ /* पिछले लेखन के पूरा होने की प्रतीक्षा करें */ जबकि(ईईसीआर और (1< ; /* पता रजिस्टर सेट करें */ EEAR = ucAddress; /* EERE लिखकर eeprom पढ़ना शुरू करें */ ईईसीआर |= (१< /* डेटा रजिस्टर से डेटा लौटाएँ */ ईईडीआर लौटाएं; } |
EEPROM भ्रष्टाचार को रोकना
कम VCC की अवधि के दौरान, EEPROM डेटा दूषित हो सकता है क्योंकि आपूर्ति वॉल्यूमtagई सीपीयू और ईईपीरोम के ठीक से काम करने के लिए बहुत कम है। ये मुद्दे ईईपीरोम का उपयोग करने वाले बोर्ड स्तर के सिस्टम के लिए समान हैं, और समान डिज़ाइन समाधान लागू किए जाने चाहिए।
EEPROM डेटा भ्रष्टाचार दो स्थितियों के कारण हो सकता है जब वॉल्यूमtage बहुत कम है। सबसे पहले, EEPROM में नियमित लेखन अनुक्रम के लिए न्यूनतम वॉल्यूम की आवश्यकता होती हैtagई सही ढंग से काम करने के लिए। दूसरे, सीपीयू खुद निर्देशों को गलत तरीके से निष्पादित कर सकता है, अगर आपूर्ति की मात्राtagई बहुत कम है.
इस डिज़ाइन अनुशंसा का पालन करके EEPROM डेटा भ्रष्टाचार से आसानी से बचा जा सकता है:
अपर्याप्त बिजली आपूर्ति वॉल्यूम की अवधि के दौरान AVR RESET को सक्रिय (कम) रखेंtagई. यह आंतरिक ब्राउन-आउट डिटेक्टर (बीओडी) को सक्षम करके किया जा सकता है। यदि आंतरिक बीओडी का पता लगाने का स्तर मेल नहीं खाता है
आवश्यक पहचान स्तर पर, एक बाहरी कम VCC रीसेट सुरक्षा सर्किट का उपयोग किया जा सकता है। यदि कोई रीसेट तब होता है जब लेखन कार्य प्रगति पर होता है, तो लेखन कार्य पूरा हो जाएगा बशर्ते कि बिजली आपूर्ति चालू होtagई पर्याप्त है।
I/O मेमोरी
ATtiny25/45/85 की I/O स्पेस परिभाषा नीचे दर्शाई गई है “रजिस्टर सारांश” पृष्ठ 200 पर.
सभी ATtiny25/45/85 I/O और बाह्य उपकरणों को I/O स्पेस में रखा गया है। सभी I/O स्थानों को LD/LDS/LDD और ST/STS/STD निर्देशों द्वारा एक्सेस किया जा सकता है, जो 32 सामान्य प्रयोजन कार्य रजिस्टरों और I/O स्पेस के बीच डेटा स्थानांतरित करते हैं। पता सीमा 0x00 – 0x1F के भीतर I/O रजिस्टर SBI और CBI निर्देशों का उपयोग करके सीधे बिट-एक्सेस करने योग्य हैं। इन रजिस्टरों में, SBIS और SBIC निर्देशों का उपयोग करके एकल बिट्स के मान की जाँच की जा सकती है। अधिक जानकारी के लिए निर्देश सेट अनुभाग देखें। I/O विशिष्ट कमांड IN और OUT का उपयोग करते समय, I/O पते 0x00 – 0x3F का उपयोग किया जाना चाहिए। LD और ST निर्देशों का उपयोग करके डेटा स्पेस के रूप में I/O रजिस्टर को संबोधित करते समय, इन पतों में 0x20 जोड़ा जाना चाहिए।
भविष्य के उपकरणों के साथ संगतता के लिए, आरक्षित बिट्स को एक्सेस करने पर शून्य लिखा जाना चाहिए। आरक्षित I / O मेमोरी पते कभी नहीं लिखे जाने चाहिए।
कुछ स्टेटस फ्लैग को तार्किक रूप से लिखकर साफ़ किया जाता है। ध्यान दें कि सीबीआई और एसबीआई निर्देश केवल निर्दिष्ट बिट पर ही काम करेंगे, और इसलिए ऐसे स्टेटस फ्लैग वाले रजिस्टरों पर इस्तेमाल किए जा सकते हैं। सीबीआई और एसबीआई निर्देश केवल 0x00 से 0x1F रजिस्टरों के साथ काम करते हैं।
I/O और परिधीय नियंत्रण रजिस्टरों को बाद के अनुभागों में समझाया गया है।
रजिस्टर विवरण
EEARH – EEPROM पता रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1एफ | – | – | – | – | – | – | – | ईईएआर8 | ईएआरएच |
पढ़ें/लिखें | R | R | R | R | R | R | R | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | एक्स/0 |
बिट्स 7:1 – रेस: आरक्षित बिट्स
ये बिट्स भविष्य में उपयोग के लिए आरक्षित हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट्स 0 – EEAR8: EEPROM पता
यह ATtiny85 का सबसे महत्वपूर्ण EEPROM एड्रेस बिट है। कम EEPROM वाले डिवाइस में, यानी ATtiny25/ATtiny45, यह बिट आरक्षित है और हमेशा शून्य पढ़ेगा। EEPROM एड्रेस रजिस्टर (EEAR) का प्रारंभिक मान अपरिभाषित है और इसलिए EEPROM तक पहुँचने से पहले एक उचित मान लिखा जाना चाहिए।
EEARL – EEPROM पता रजिस्टर
अंश
0x1ई | ईईएआर7 | ईईएआर6 | ईईएआर5 | ईईएआर4 | ईईएआर3 | ईईएआर2 | ईईएआर1 | ईईएआर0 | ईअर्ल |
पीछे/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | X | X | X | X | X | X | X | X |
बिट 7 – EEAR7: EEPROM पता
यह ATtiny45 का सबसे महत्वपूर्ण EEPROM एड्रेस बिट है। कम EEPROM वाले डिवाइस में, यानी ATtiny25, यह बिट आरक्षित है और हमेशा शून्य पढ़ेगा। EEPROM एड्रेस रजिस्टर (EEAR) का प्रारंभिक मान अपरिभाषित है और इसलिए EEPROM तक पहुँचने से पहले एक उचित मान लिखा जाना चाहिए।
बिट्स 6:0 – EEAR[6:0]: EEPROM पता
ये EEPROM एड्रेस रजिस्टर के (निम्न) बिट्स हैं। EEPROM डेटा बाइट्स को 0…(128/256/512-1) की रेंज में रैखिक रूप से संबोधित किया जाता है। EEAR का प्रारंभिक मान अपरिभाषित है और इसलिए EEPROM तक पहुँचने से पहले एक उचित मान लिखा जाना चाहिए।
ईईडीआर - ईईपीरोम डेटा रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1डी | ईईडीआर7 | ईईडीआर6 | ईईडीआर5 | ईईडीआर4 | ईईडीआर3 | ईईडीआर2 | ईईडीआर1 | ईईडीआर0 | ईईडीआर |
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EEPROM लिखने के ऑपरेशन के लिए EEDR रजिस्टर में EEAR रजिस्टर द्वारा दिए गए पते पर EEPROM में लिखे जाने वाले डेटा होते हैं। EEPROM पढ़ने के ऑपरेशन के लिए, EEDR में EEPROM से पढ़ा गया डेटा होता है।
EEPROM को EEAR द्वारा दिए गए पते पर भेजें।
5.5.4 ईईसीआर – ईईपीरोम नियंत्रण रजिस्टर |
|||||||||
बिट 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | ईईपीएम1 | ईईपीएम0 | भयानक | ईईएमपीई | ईईपीई | इधर | ईईसीआर | |
पढ़ें/लिखें आर आर आर/डब्लू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | ||||
प्रारंभिक मान 0 0 X | X | 0 | 0 | X | 0 |
बिट 7 – रेस: आरक्षित बिट
यह बिट भविष्य में उपयोग के लिए आरक्षित है और ATtiny0/25/45 में हमेशा 85 के रूप में पढ़ा जाएगा। भविष्य के AVR उपकरणों के साथ संगतता के लिए, इस बिट को हमेशा शून्य पर लिखें। पढ़ने के बाद, इस बिट को मास्क आउट करें।
बिट 6 – रेस: आरक्षित बिट
यह बिट ATtiny25/45/85 में आरक्षित है और हमेशा शून्य के रूप में पढ़ा जाएगा।
बिट्स 5:4 – EEPM[1:0]: EEPROM प्रोग्रामिंग मोड बिट्स
EEPROM प्रोग्रामिंग मोड बिट्स सेटिंग परिभाषित करती है कि EEPE लिखते समय कौन सी प्रोग्रामिंग क्रिया शुरू की जाएगी। डेटा को एक एटॉमिक ऑपरेशन में प्रोग्राम करना संभव है (पुराना मान मिटाना और नया मान प्रोग्राम करना) या मिटाना और लिखना ऑपरेशन को दो अलग-अलग ऑपरेशन में विभाजित करना। विभिन्न मोड के लिए प्रोग्रामिंग समय नीचे दिखाया गया है तालिका 5-1. जब EEPE सेट हो, तो EEPMn पर कोई भी लेखन अनदेखा कर दिया जाएगा। रीसेट के दौरान, EEPMn बिट्स को 0b00 पर रीसेट कर दिया जाएगा जब तक कि EEPROM प्रोग्रामिंग में व्यस्त न हो।
तालिका 5-1. EEPROM मोड बिट्स
ईईपीएम1 | ईईपीएम0 | प्रोग्रामिंग समय | संचालन |
0 | 0 | 3.4 मि.से. | एक ही ऑपरेशन में मिटाना और लिखना (एटॉमिक ऑपरेशन) |
0 | 1 | 1.8 मि.से. | केवल मिटाएँ |
1 | 0 | 1.8 मि.से. | केवल लिखें |
1 | 1 | – | भविष्य में उपयोग के लिए आरक्षित |
बिट 3 – EERIE: EEPROM रेडी इंटरप्ट सक्षम
यदि SREG में I-बिट सेट है, तो EERIE को एक पर लिखने से EEPROM रेडी इंटरप्ट सक्षम हो जाता है। EERIE को शून्य पर लिखने से इंटरप्ट अक्षम हो जाता है। जब नॉन-वोलेटाइल मेमोरी प्रोग्रामिंग के लिए तैयार होती है, तो EEPROM रेडी इंटरप्ट एक निरंतर इंटरप्ट उत्पन्न करता है।
बिट 2 – EEMPE: EEPROM मास्टर प्रोग्राम सक्षम करें
EEMPE बिट यह निर्धारित करता है कि EEPE लिखने से प्रभाव पड़ेगा या नहीं।
जब EEMPE सेट किया जाता है, तो चार क्लॉक साइकिल के भीतर EEPE सेट करने से EEPROM चयनित पते पर प्रोग्राम हो जाएगा। यदि EEMPE शून्य है, तो EEPE सेट करने से कोई प्रभाव नहीं पड़ेगा। जब EEMPE को सॉफ़्टवेयर द्वारा एक पर लिखा जाता है, तो हार्डवेयर चार क्लॉक साइकिल के बाद बिट को शून्य पर साफ़ कर देता है।
बिट 1 – EEPE: EEPROM प्रोग्राम सक्षम करें
EEPROM प्रोग्राम सक्षम सिग्नल EEPE EEPROM के लिए प्रोग्रामिंग सक्षम सिग्नल है। जब EEPE लिखा जाता है, तो EEPROM को EEPMn बिट सेटिंग के अनुसार प्रोग्राम किया जाएगा। EEPE में तार्किक बिट लिखे जाने से पहले EEMPE बिट को एक में लिखा जाना चाहिए, अन्यथा कोई EEPROM लेखन नहीं होता है। जब लेखन पहुँच समय बीत जाता है, तो EEPE बिट हार्डवेयर द्वारा साफ़ कर दिया जाता है। जब EEPE सेट किया जाता है, तो अगले निर्देश के निष्पादित होने से पहले CPU को दो चक्रों के लिए रोक दिया जाता है।
बिट 0 – EERE: EEPROM पढ़ने में सक्षम
EEPROM रीड इनेबल सिग्नल - EERE - EEPROM के लिए रीड स्ट्रोब है। जब EEAR रजिस्टर में सही पता सेट किया जाता है, तो EEPROM रीड को ट्रिगर करने के लिए EERE बिट को एक में लिखा जाना चाहिए। EEPROM रीड एक्सेस एक निर्देश लेता है, और अनुरोधित डेटा तुरंत उपलब्ध होता है। जब EEPROM पढ़ा जाता है, तो अगले निर्देश को निष्पादित करने से पहले CPU को चार चक्रों के लिए रोक दिया जाता है। उपयोगकर्ता को रीड ऑपरेशन शुरू करने से पहले EEPE बिट को पोल करना चाहिए। यदि कोई राइट ऑपरेशन चल रहा है, तो न तो EEPROM को पढ़ना संभव है, न ही EEAR रजिस्टर को बदलना।
सिस्टम घड़ी और घड़ी विकल्प
घड़ी प्रणालियाँ और उनका वितरण
सीपीयू क्लॉक
सीपीयू घड़ी को एवीआर कोर के संचालन से संबंधित सिस्टम के भागों में भेजा जाता है।ampऐसे मॉड्यूलों में से अधिकांश सामान्य प्रयोजन रजिस्टर हैं File, स्टेटस रजिस्टर और डेटा मेमोरी जो स्टैक पॉइंटर को होल्ड करती है। CPU क्लॉक को रोकने से कोर सामान्य ऑपरेशन और गणना करने से बाधित होता है।
I/O घड़ी – clkI/O
I/O क्लॉक का उपयोग अधिकांश I/O मॉड्यूल द्वारा किया जाता है, जैसे टाइमर/काउंटर। I/O क्लॉक का उपयोग एक्सटर्नल इंटरप्ट मॉड्यूल द्वारा भी किया जाता है, लेकिन ध्यान दें कि कुछ बाहरी इंटरप्ट को एसिंक्रोनस लॉजिक द्वारा पता लगाया जाता है, जिससे I/O क्लॉक के रुकने पर भी ऐसे इंटरप्ट का पता लगाया जा सकता है।
फ्लैश घड़ी – clkFLASH
फ्लैश घड़ी फ्लैश इंटरफ़ेस के संचालन को नियंत्रित करती है। फ्लैश घड़ी आमतौर पर सीपीयू घड़ी के साथ-साथ सक्रिय होती है।
एडीसी घड़ी – clkADC
ADC को एक समर्पित क्लॉक डोमेन प्रदान किया जाता है। यह डिजिटल सर्किटरी द्वारा उत्पन्न शोर को कम करने के लिए CPU और I/O क्लॉक को रोकने की अनुमति देता है। यह अधिक सटीक ADC रूपांतरण परिणाम देता है।
तीव्र परिधीय घड़ी उत्पादन के लिए आंतरिक पीएलएल – clkPCK
ATtiny25/45/85 में आंतरिक PLL एक क्लॉक आवृत्ति उत्पन्न करता है जो स्रोत इनपुट से 8 गुना गुणा होती है। डिफ़ॉल्ट रूप से, PLL आंतरिक, 8.0 मेगाहर्ट्ज RC ऑसिलेटर के आउटपुट को स्रोत के रूप में उपयोग करता है। वैकल्पिक रूप से, यदि PLLCSR का बिट LSM सेट है तो PLL RC ऑसिलेटर के आउटपुट को दो से विभाजित करके उपयोग करेगा। इस प्रकार PLL का आउटपुट, तेज़ परिधीय घड़ी 64 मेगाहर्ट्ज है। तेज़ परिधीय घड़ी, या उससे पहले से मापी गई घड़ी, टाइमर/काउंटर1 के लिए घड़ी स्रोत या सिस्टम घड़ी के रूप में चुनी जा सकती है। देखें चित्र 6-2. PLLCSR का LSM सेट होने पर तेज़ परिधीय घड़ी की आवृत्ति दो से विभाजित होती है, जिसके परिणामस्वरूप 32 मेगाहर्ट्ज की घड़ी आवृत्ति प्राप्त होती है। ध्यान दें, यदि PLLCLK को सिस्टम घड़ी के रूप में उपयोग किया जाता है तो LSM सेट नहीं किया जा सकता है।
चित्र 6-2. पीसीके क्लॉकिंग सिस्टम.
PLL RC ऑसिलेटर पर लॉक है और OSCCAL रजिस्टर के माध्यम से RC ऑसिलेटर को एडजस्ट करने से उसी समय फ़ास्ट पेरिफेरल क्लॉक एडजस्ट हो जाएगा। हालाँकि, भले ही RC ऑसिलेटर को 8 MHz से अधिक आवृत्ति पर ले जाया जाए, फ़ास्ट पेरिफेरल क्लॉक आवृत्ति 85 MHz (सबसे खराब स्थिति) पर संतृप्त हो जाती है और अधिकतम आवृत्ति पर दोलन करती रहती है। यह ध्यान दिया जाना चाहिए कि इस मामले में PLL अब RC ऑसिलेटर क्लॉक के साथ लॉक नहीं है। इसलिए, PLL को सही ऑपरेटिंग रेंज में रखने के लिए OSCCAL समायोजन को 8 MHz से अधिक आवृत्ति पर न ले जाने की सलाह दी जाती है।
आंतरिक PLL तब सक्षम होता है जब:
रजिस्टर PLLCSR में PLLE बिट सेट है।
सीकेएसईएल फ्यूज को '0001' पर प्रोग्राम किया गया है।
सीकेएसईएल फ्यूज को '0011' पर प्रोग्राम किया गया है।
पीएलएलसीएसआर बिट पीएलओके तब सेट होता है जब पीएलएल लॉक होता है। पावर डाउन और स्टैंड-बाय स्लीप मोड में आंतरिक आरसी ऑसिलेटर और पीएलएल दोनों बंद हो जाते हैं।
ATtiny15 संगतता मोड में आंतरिक PLL
चूंकि ATtiny25/45/85 ATtiny15 उपयोगकर्ताओं के लिए एक माइग्रेशन डिवाइस है, इसलिए बैक-वार्ड संगतता के लिए ATtiny15 संगतता मोड है। ATtiny15 संगतता मोड को CKSEL फ़्यूज़ को '0011' पर प्रोग्रामिंग करके चुना जाता है।
ATtiny15 संगतता मोड में आंतरिक RC ऑसिलेटर की आवृत्ति को 6.4 मेगाहर्ट्ज तक कैलिब्रेट किया जाता है और PLL का गुणन कारक 4x पर सेट किया जाता है। देखें चित्र 6-3इन समायोजनों के साथ क्लॉकिंग प्रणाली ATtiny15-संगत है और परिणामस्वरूप तीव्र परिधीय घड़ी की आवृत्ति 25.6 मेगाहर्ट्ज है (ATtiny15 के समान)।
चित्र 6-3. ATtiny15 संगतता मोड में PCK क्लॉकिंग सिस्टम.
घड़ी के स्रोत
डिवाइस में निम्नलिखित क्लॉक स्रोत विकल्प हैं, जिन्हें फ़्लैश फ़्यूज़ बिट्स द्वारा चुना जा सकता है जैसा कि नीचे दिखाया गया है। चयनित स्रोत से क्लॉक AVR क्लॉक जनरेटर में इनपुट किया जाता है, और उचित मॉड्यूल में रूट किया जाता है।
तालिका 6-1. डिवाइस क्लॉकिंग विकल्प चुनें
डिवाइस क्लॉकिंग विकल्प | सीकेएसईएल[3:0](1) |
बाह्य घड़ी (देखना पेज 26) | 0000 |
उच्च आवृत्ति पीएलएल घड़ी (देखना पेज 26) | 0001 |
कैलिब्रेटेड आंतरिक ऑसिलेटर (देखना पेज 27) | 0010(2) |
कैलिब्रेटेड आंतरिक ऑसिलेटर (देखना पेज 27) | 0011(3) |
आंतरिक 128 kHz ऑसिलेटर (देखना पेज 28) | 0100 |
कम आवृत्ति क्रिस्टल दोलक (देखना पेज 29) | 0110 |
क्रिस्टल ऑसिलेटर / सिरेमिक रेज़ोनेटर (देखना पेज 29) | 1000 – 1111 |
सुरक्षित | 0101, 0111 |
सभी फ़्यूज़ के लिए “1” का अर्थ है अनप्रोग्राम्ड जबकि “0” का अर्थ है प्रोग्राम्ड।
डिवाइस को इस विकल्प को चुनकर भेजा जाता है।
यह ATtiny15 संगतता मोड का चयन करेगा, जहाँ सिस्टम क्लॉक को चार से विभाजित किया जाता है, जिसके परिणामस्वरूप 1.6 मेगाहर्ट्ज क्लॉक आवृत्ति होती है। अधिक जानकारी के लिए, देखें “कैलिब्रेटेड इंटरनल ऑसिलेटर” पेज 27 पर.
प्रत्येक क्लॉकिंग विकल्प के लिए विभिन्न विकल्प निम्नलिखित अनुभागों में दिए गए हैं। जब CPU पावर-डाउन से उठता है, तो चयनित क्लॉक स्रोत का उपयोग स्टार्ट-अप का समय निर्धारित करने के लिए किया जाता है, जिससे निर्देश निष्पादन शुरू होने से पहले स्थिर ऑसिलेटर संचालन सुनिश्चित होता है। जब CPU रीसेट से शुरू होता है, तो सामान्य संचालन शुरू करने से पहले पावर को स्थिर स्तर तक पहुँचने की अनुमति देने के लिए एक अतिरिक्त देरी होती है। वॉचडॉग ऑसिलेटर का उपयोग स्टार्ट-अप समय के इस वास्तविक समय वाले हिस्से को समयबद्ध करने के लिए किया जाता है। प्रत्येक टाइम-आउट के लिए उपयोग किए जाने वाले WDT ऑसिलेटर चक्रों की संख्या में दिखाया गया है तालिका 6-2.
तालिका 6-2. वॉचडॉग ऑसिलेटर चक्रों की संख्या
टाइप टाइम-आउट | चक्रों की संख्या |
4 मि.से. | 512 |
64 मि.से. | 8 हजार (8,192) |
बाह्य घड़ी
डिवाइस को बाहरी क्लॉक स्रोत से चलाने के लिए, CLKI को चित्र में दिखाए अनुसार चलाया जाना चाहिए चित्र 6-4डिवाइस को बाहरी घड़ी पर चलाने के लिए, CKSEL फ़्यूज़ को "00" पर प्रोग्राम किया जाना चाहिए।
चित्र 6-4. बाहरी क्लॉक ड्राइव कॉन्फ़िगरेशन
जब इस घड़ी स्रोत का चयन किया जाता है, तो स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-3.
तालिका 6-3. बाहरी घड़ी चयन के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर-डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब | अनुशंसित उपयोग |
00 | 6 CK | 14CK | बीओडी सक्षम |
01 | 6 CK | 14सीके + 4 एमएस | तेजी से बढ़ती शक्ति |
10 | 6 CK | 14सीके + 64 एमएस | धीरे-धीरे बढ़ती शक्ति |
11 | सुरक्षित |
बाहरी घड़ी लगाते समय, MCU के स्थिर संचालन को सुनिश्चित करने के लिए लागू की गई घड़ी आवृत्ति में अचानक परिवर्तन से बचना आवश्यक है। एक घड़ी चक्र से अगले तक आवृत्ति में 2% से अधिक का परिवर्तन अप्रत्याशित व्यवहार को जन्म दे सकता है। यह सुनिश्चित करना आवश्यक है कि घड़ी आवृत्ति में ऐसे परिवर्तनों के दौरान MCU को रीसेट में रखा जाए।
ध्यान दें कि सिस्टम क्लॉक प्रीसेल का उपयोग आंतरिक क्लॉक आवृत्ति के रन-टाइम परिवर्तनों को लागू करने के लिए किया जा सकता है, जबकि अभी भी स्थिर संचालन सुनिश्चित किया जा सकता है। “सिस्टम क्लॉक प्रीस्केलर” पृष्ठ 31 पर जानकारी के लिए।
उच्च आवृत्ति पीएलएल घड़ी
एक आंतरिक PLL है जो परिधीय टाइमर/काउंटर64 के उपयोग और सिस्टम क्लॉक स्रोत के लिए RC ऑसिलेटर से लॉक की गई नाममात्र 1 मेगाहर्ट्ज क्लॉक दर प्रदान करता है। जब सिस्टम क्लॉक स्रोत के रूप में चुना जाता है, तो CKSEL फ़्यूज़ को '0001' पर प्रोग्राम करके, इसे चार से विभाजित किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-4.
तालिका 6-4. उच्च आवृत्ति PLL घड़ी संचालन मोड
सीकेएसईएल[3:0] | नाममात्र की आवृत्ति |
0001 | 16 मेगाहर्ट्ज |
जब इस घड़ी स्रोत का चयन किया जाता है, तो स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-5.
तालिका 6-5. उच्च आवृत्ति PLL घड़ी के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर डाउन से स्टार्ट-अप समय | पावर-ऑन रीसेट से अतिरिक्त विलंब (VCC = 5.0V) | अनुशंसित उपयोग |
00 | 14सीके + 1के (1024) सीके + 4 एमएस | 4 मि.से. | बीओडी सक्षम |
तालिका 6-5. उच्च आवृत्ति PLL घड़ी के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर डाउन से स्टार्ट-अप समय | पावर-ऑन रीसेट से अतिरिक्त विलंब (VCC = 5.0V) | अनुशंसित उपयोग |
01 | 14सीके + 16के (16384) सीके + 4 एमएस | 4 मि.से. | तेजी से बढ़ती शक्ति |
10 | 14सीके + 1के (1024) सीके + 64 एमएस | 4 मि.से. | धीरे-धीरे बढ़ती शक्ति |
11 | 14सीके + 16के (16384) सीके + 64 एमएस | 4 मि.से. | धीरे-धीरे बढ़ती शक्ति |
कैलिब्रेटेड आंतरिक ऑसिलेटर
डिफ़ॉल्ट रूप से, आंतरिक RC ऑसिलेटर लगभग 8.0 मेगाहर्ट्ज क्लॉक प्रदान करता है। हालाँकि वॉल्यूमtagई और तापमान पर निर्भर, इस घड़ी को उपयोगकर्ता द्वारा बहुत सटीक रूप से कैलिब्रेट किया जा सकता है। देखें “कैलिब्रेटेड इंटरनल आरसी ऑसिलेटर एक्यू- पृष्ठ 164 पर “कामुक” और “आंतरिक ऑसिलेटर गति” पृष्ठ 192 पर अधिक जानकारी के लिए देखें। डिवाइस CKDIV8 फ्यूज प्रोग्राम के साथ भेजी जाती है। देखें “सिस्टम क्लॉक प्रीस्केलर” पृष्ठ 31 पर अधिक जानकारी के लिए.
इस घड़ी को CKSEL फ़्यूज़ को प्रोग्राम करके सिस्टम घड़ी के रूप में चुना जा सकता है जैसा कि चित्र में दिखाया गया है पृष्ठ पर तालिका 6-6
27यदि इसे चुना जाता है, तो यह बिना किसी बाहरी घटक के काम करेगा। रीसेट के दौरान, हार्डवेयर OSCCAL रजिस्टर में प्री-प्रोग्राम्ड कैलिब्रेशन वैल्यू लोड करता है और इस तरह RC ऑसिलेटर को स्वचालित रूप से कैलिब्रेट करता है। इस कैलिब्रेशन की सटीकता को फैक्ट्री कैलिब्रेशन के रूप में दिखाया गया है पृष्ठ 21 पर तालिका 2-164.
OSCCAL रजिस्टर को SW से बदलकर देखें “OSCCAL – ऑसिलेटर कैलिब्रेशन रजिस्टर” पृष्ठ 31 पर, फ़ैक्टरी कैलिब्रेशन का उपयोग करने की तुलना में उच्च कैलिब्रेशन सटीकता प्राप्त करना संभव है। इस कैलिब्रेशन की सटीकता उपयोगकर्ता कैलिब्रेशन के रूप में दिखाई जाती है पृष्ठ 21 पर तालिका 2-164.
जब इस ऑसिलेटर का उपयोग चिप घड़ी के रूप में किया जाता है, तो वॉचडॉग ऑसिलेटर का उपयोग वॉचडॉग टाइमर और रीसेट टाइम-आउट के लिए किया जाएगा। पूर्व-प्रोग्राम किए गए अंशांकन मान के बारे में अधिक जानकारी के लिए, अनुभाग देखें “कैलि- ब्रेशन बाइट्स” पृष्ठ 150 पर.
आंतरिक ऑसिलेटर को CKSEL फ़्यूज़ को “6.4” पर लिखकर 0011 मेगाहर्ट्ज क्लॉक प्रदान करने के लिए भी सेट किया जा सकता है, जैसा कि चित्र में दिखाया गया है। तालिका 6-6 नीचे। इस सेटिंग को ATtiny15 संगतता मोड के रूप में संदर्भित किया जाता है और इसका उद्देश्य ATtiny6.4 की तरह 15 मेगाहर्ट्ज पर कैलिब्रेटेड क्लॉक स्रोत प्रदान करना है। ATtiny15 संगतता मोड में PLL टाइमर/काउंटर6.4 के लिए 25.6 मेगाहर्ट्ज परिधीय क्लॉक सिग्नल उत्पन्न करने के लिए 1 मेगाहर्ट्ज पर चलने वाले आंतरिक ऑसिलेटर का उपयोग करता है (देखें “8-बिट टाइमर/काउंटर1 इंच ATtiny15 मोड” पृष्ठ 95 परध्यान दें कि संचालन के इस मोड में 6.4 मेगाहर्ट्ज क्लॉक सिग्नल को हमेशा चार से विभाजित किया जाता है, जिससे 1.6 मेगाहर्ट्ज सिस्टम क्लॉक प्राप्त होता है।
तालिका 6-6. आंतरिक कैलिब्रेटेड RC ऑसिलेटर ऑपरेटिंग मोड
सीकेएसईएल[3:0] | नाममात्र की आवृत्ति |
0010(1) | 8.0 मेगाहर्ट्ज |
0011(2) | 6.4 मेगाहर्ट्ज |
डिवाइस को इस विकल्प को चुनकर भेजा जाता है।
यह सेटिंग ATtiny15 संगतता मोड का चयन करेगी, जहां सिस्टम घड़ी को चार से विभाजित किया जाता है, जिसके परिणामस्वरूप 1.6 मेगाहर्ट्ज घड़ी आवृत्ति प्राप्त होती है।
जब कैलिब्रेटेड 8 मेगाहर्ट्ज आंतरिक ऑसिलेटर को घड़ी स्रोत के रूप में चुना जाता है तो स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि दिखाया गया है तालिका 6-7 नीचे।
तालिका 6-7. आंतरिक कैलिब्रेटेड RC ऑसिलेटर घड़ी के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर-डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब (VCC = 5.0V) | अनुशंसित उपयोग |
00 | 6 CK | 14CK(1) | बीओडी सक्षम |
01 | 6 CK | 14सीके + 4 एमएस | तेजी से बढ़ती शक्ति |
10(2) | 6 CK | 14सीके + 64 एमएस | धीरे-धीरे बढ़ती शक्ति |
11 | सुरक्षित |
1. यदि RSTDISBL फ्यूज को प्रोग्राम किया गया है, तो प्रोग्रामिंग मोड में प्रवेश सुनिश्चित करने के लिए स्टार्ट-अप समय को 14CK + 4 ms तक बढ़ा दिया जाएगा।
2. डिवाइस को इस विकल्प के साथ भेजा जाता है।
ATtiny15 संगतता मोड में स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि दिखाया गया है तालिका 6-8 नीचे।
तालिका 6-8. आंतरिक कैलिब्रेटेड RC ऑसिलेटर क्लॉक के लिए स्टार्ट-अप समय (ATtiny15 मोड में)
एसयूटी[1:0] | पावर-डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब (VCC = 5.0V) | अनुशंसित उपयोग |
00 | 6 CK | 14सीके + 64 एमएस | |
01 | 6 CK | 14सीके + 64 एमएस | |
10 | 6 CK | 14सीके + 4 एमएस | |
11 | 1 CK | 14CK(1) |
नोट: यदि RSTDISBL फ्यूज को प्रोग्राम किया गया है, तो प्रोग्रामिंग मोड में प्रवेश सुनिश्चित करने के लिए स्टार्ट-अप समय को 14CK + 4 ms तक बढ़ा दिया जाएगा।
संक्षेप में, ATtiny15 संगतता मोड पर अधिक जानकारी अनुभागों में पाई जा सकती है “पोर्ट बी (PB5:PB0)” चालू पेज 2, “ATtiny15 संगतता मोड में आंतरिक PLL” पृष्ठ 24 पर, “ATtiny8 मोड में 1-बिट टाइमर/काउंटर15” चालू पेज 95, “डीबगवायर की सीमाएँ” पृष्ठ 140 पर, “कैलिब्रेशन बाइट्स” पृष्ठ 150 पर और तालिका में “घड़ी प्रीस्केलर पेज 33 पर “चुनें”.
आंतरिक 128 kHz ऑसिलेटर
128 kHz आंतरिक ऑसिलेटर एक कम शक्ति वाला ऑसिलेटर है जो 128 kHz की घड़ी प्रदान करता है। आवृत्ति 3V और 25°C पर नाममात्र है। इस घड़ी को CKSEL फ़्यूज़ को “0100” पर प्रोग्राम करके सिस्टम घड़ी के रूप में चुना जा सकता है।
जब इस घड़ी स्रोत का चयन किया जाता है, तो स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-9.
तालिका 6-9. 128 kHz आंतरिक ऑसिलेटर के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर-डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब | अनुशंसित उपयोग |
00 | 6 CK | 14CK(1) | बीओडी सक्षम |
01 | 6 CK | 14सीके + 4 एमएस | तेजी से बढ़ती शक्ति |
10 | 6 CK | 14सीके + 64 एमएस | धीरे-धीरे बढ़ती शक्ति |
11 | सुरक्षित |
नोट: यदि RSTDISBL फ्यूज को प्रोग्राम किया गया है, तो प्रोग्रामिंग मोड में प्रवेश सुनिश्चित करने के लिए स्टार्ट-अप समय को 14CK + 4 ms तक बढ़ा दिया जाएगा।
कम आवृत्ति क्रिस्टल दोलक
डिवाइस के लिए क्लॉक स्रोत के रूप में 32.768 kHz वॉच क्रिस्टल का उपयोग करने के लिए, CKSEL फ़्यूज़ को '0110' पर सेट करके कम-आवृत्ति क्रिस्टल ऑसिलेटर का चयन किया जाना चाहिए। क्रिस्टल को चित्र में दिखाए अनुसार जोड़ा जाना चाहिए। चित्र 6-532.768 kHz क्रिस्टल के लिए उपयुक्त लोड कैपेसिटेंस जानने के लिए, कृपया निर्माता की डेटाशीट देखें।
जब इस ऑसिलेटर का चयन किया जाता है, तो स्टार्ट-अप समय SUT फ़्यूज़ द्वारा निर्धारित किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-10.
तालिका 6-10. कम आवृत्ति क्रिस्टल ऑसिलेटर घड़ी चयन के लिए स्टार्ट-अप समय
एसयूटी[1:0] | पावर डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब (VCC = 5.0V) | अनुशंसित उपयोग |
00 | 1के (1024) सी.के.(1) | 4 मि.से. | तेजी से बढ़ती शक्ति या बीओडी सक्षम |
01 | 1के (1024) सी.के.(1) | 64 मि.से. | धीरे-धीरे बढ़ती शक्ति |
10 | 32के (32768) सी.के. | 64 मि.से. | स्टार्ट-अप पर स्थिर आवृत्ति |
11 | सुरक्षित |
नोट: इन विकल्पों का उपयोग केवल तभी किया जाना चाहिए जब स्टार्ट-अप पर आवृत्ति स्थिरता महत्वपूर्ण न हो।
कम आवृत्ति क्रिस्टल ऑसिलेटर एक आंतरिक लोड कैपेसिटेंस प्रदान करता है, देखें तालिका 6-11 प्रत्येक TOSC पिन पर.
तालिका 6-11. कम आवृत्ति क्रिस्टल ऑसिलेटर की धारिता
उपकरण | 32 kHz ऑस. प्रकार | कैप (Xtal1/Tosc1) | कैप (Xtal2/Tosc2) |
एटीटिनी25/45/85 | सिस्टम ओएससी. | 16 पीएफ | 6 पीएफ |
क्रिस्टल ऑसिलेटर / सिरेमिक रेज़ोनेटर
XTAL1 और XTAL2 क्रमशः एक इनवर्टिंग के इनपुट और आउटपुट हैं ampएक ऐसा उपकरण जिसे ऑन-चिप ऑसिलेटर के रूप में उपयोग के लिए कॉन्फ़िगर किया जा सकता है, जैसा कि चित्र में दिखाया गया है चित्र 6-5या तो क्वार्ट्ज क्रिस्टल या सिरेमिक अनुनादक का उपयोग किया जा सकता है।
C1 और C2 हमेशा क्रिस्टल और रेज़ोनेटर दोनों के लिए बराबर होने चाहिए। कैपेसिटर का इष्टतम मान उपयोग में आने वाले क्रिस्टल या रेज़ोनेटर, आवारा कैपेसिटेंस की मात्रा और पर्यावरण के विद्युत चुम्बकीय शोर पर निर्भर करता है। क्रिस्टल के साथ उपयोग के लिए कैपेसिटर चुनने के लिए कुछ प्रारंभिक दिशा-निर्देश नीचे दिए गए हैं। तालिका 6-12 नीचे। सिरेमिक अनुनादकों के लिए, निर्माता द्वारा दिए गए संधारित्र मानों का उपयोग किया जाना चाहिए।
तालिका 6-12. क्रिस्टल ऑसिलेटर ऑपरेटिंग मोड
सीकेएसईएल[3:1] | आवृत्ति रेंज (MHz) | क्रिस्टल के साथ उपयोग के लिए कैपेसिटर C1 और C2 के लिए अनुशंसित रेंज (pF) |
100(1) | 0.4 – 0.9 | – |
101 | 0.9 – 3.0 | 12 – 22 |
110 | 3.0 – 8.0 | 12 – 22 |
111 | 8.0 – | 12 – 22 |
नोट: इस विकल्प का उपयोग क्रिस्टल के साथ नहीं, केवल सिरेमिक अनुनादकों के साथ किया जाना चाहिए।
ऑसिलेटर तीन अलग-अलग मोड में काम कर सकता है, जिनमें से प्रत्येक एक विशिष्ट आवृत्ति रेंज के लिए अनुकूलित है। ऑपरेटिंग मोड का चयन फ़्यूज़ CKSEL[3:1] द्वारा किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 6-12.
CKSEL0 फ़्यूज़ SUT[1:0] फ़्यूज़ के साथ मिलकर स्टार्ट-अप समय का चयन करता है जैसा कि चित्र में दिखाया गया है तालिका 6-13.
तालिका 6-13. क्रिस्टल ऑसिलेटर घड़ी चयन के लिए स्टार्ट-अप समय
सीकेएसईएल0 | एसयूटी[1:0] | पावर-डाउन से स्टार्ट-अप समय | रीसेट से अतिरिक्त विलंब | अनुशंसित उपयोग |
0 | 00 | 258 CK(1) | 14सीके + 4 एमएस | सिरेमिक अनुनादक, तेजी से बढ़ती शक्ति |
0 | 01 | 258 CK(1) | 14सीके + 64 एमएस | सिरेमिक अनुनादक, धीरे-धीरे बढ़ती शक्ति |
0 | 10 | 1के (1024) सी.के.(2) | 14CK | सिरेमिक अनुनादक, BOD सक्षम |
0 | 11 | 1के (1024)सीके(2) | 14सीके + 4 एमएस | सिरेमिक अनुनादक, तेजी से बढ़ती शक्ति |
1 | 00 | 1के (1024)सीके(2) | 14सीके + 64 एमएस | सिरेमिक अनुनादक, धीरे-धीरे बढ़ती शक्ति |
1 | 01 | 16के (16384) सी.के. | 14CK | क्रिस्टल ऑसिलेटर, BOD सक्षम |
1 | 10 | 16के (16384) सी.के. | 14सीके + 4 एमएस | क्रिस्टल ऑसिलेटर, तेजी से बढ़ती शक्ति |
1 | 11 | 16के (16384) सी.के. | 14सीके + 64 एमएस | क्रिस्टल ऑसिलेटर, धीरे-धीरे बढ़ती शक्ति |
नोट्स
इन विकल्पों का उपयोग केवल तभी किया जाना चाहिए जब डिवाइस की अधिकतम आवृत्ति के करीब संचालन न किया जा रहा हो, और केवल तभी जब स्टार्ट-अप पर आवृत्ति स्थिरता अनुप्रयोग के लिए महत्वपूर्ण न हो। ये विकल्प क्रिस्टल के लिए उपयुक्त नहीं हैं।
ये विकल्प सिरेमिक रेज़ोनेटर के साथ उपयोग के लिए हैं और स्टार्ट-अप पर आवृत्ति स्थिरता सुनिश्चित करेंगे। इनका उपयोग क्रिस्टल के साथ भी किया जा सकता है जब डिवाइस की अधिकतम आवृत्ति के करीब काम नहीं कर रहा हो, और यदि स्टार्ट-अप पर आवृत्ति स्थिरता अनुप्रयोग के लिए महत्वपूर्ण नहीं है।
डिफ़ॉल्ट घड़ी स्रोत
डिवाइस को CKSEL = “0010”, SUT = “10”, और CKDIV8 प्रोग्राम के साथ भेजा जाता है। इसलिए डिफ़ॉल्ट क्लॉक सोर्स सेटिंग 8 मेगाहर्ट्ज पर चलने वाला इंटरनल RC ऑसिलेटर है, जिसमें सबसे लंबा स्टार्ट-अप समय और 8 की प्रारंभिक सिस्टम क्लॉक प्रीस्केलिंग है, जिसके परिणामस्वरूप 1.0 मेगाहर्ट्ज सिस्टम क्लॉक होता है। यह डिफ़ॉल्ट सेटिंग सुनिश्चित करती है कि सभी उपयोगकर्ता इन-सिस्टम या हाई-वॉल्यूम का उपयोग करके अपनी इच्छित क्लॉक सोर्स सेटिंग बना सकते हैं।tagई प्रोग्रामर.
सिस्टम क्लॉक प्रीस्केलर
ATtiny25/45/85 सिस्टम क्लॉक को सेट करके विभाजित किया जा सकता है “CLKPR – क्लॉक प्रीस्केल रजिस्टर” पृष्ठ 32 परइस सुविधा का उपयोग बिजली की खपत को कम करने के लिए किया जा सकता है जब प्रोसेसिंग पावर की आवश्यकता कम हो। इसका उपयोग सभी क्लॉक सोर्स विकल्पों के साथ किया जा सकता है, और यह CPU और सभी सिंक्रोनस पेरिफेरल्स की क्लॉक आवृत्ति को प्रभावित करेगा। clkI/O, clkADC, clkCPU, और clkFLASH को एक कारक द्वारा विभाजित किया जाता है जैसा कि नीचे दिखाया गया है पृष्ठ 6 पर तालिका 15-33.
स्विचिंग समय
प्रीस्केलर सेटिंग्स के बीच स्विच करते समय, सिस्टम क्लॉक प्रीस्केलर यह सुनिश्चित करता है कि क्लॉक सिस्टम में कोई गड़बड़ी न हो और कोई भी मध्यवर्ती आवृत्ति न तो पिछली सेटिंग के अनुरूप क्लॉक आवृत्ति से अधिक हो, न ही नई सेटिंग के अनुरूप क्लॉक आवृत्ति से अधिक हो।
प्रीस्केलर को लागू करने वाला रिपल काउंटर अविभाजित घड़ी की आवृत्ति पर चलता है, जो CPU की घड़ी आवृत्ति से तेज़ हो सकता है। इसलिए, प्रीस्केलर की स्थिति निर्धारित करना संभव नहीं है - भले ही यह पठनीय हो, और एक घड़ी विभाजन से दूसरे में स्विच करने में लगने वाले सटीक समय का सटीक अनुमान नहीं लगाया जा सकता है।
CLKPS मान लिखे जाने के समय से, नई क्लॉक आवृत्ति सक्रिय होने से पहले T1 + T2 और T1 + 2*T2 के बीच का समय लगता है। इस अंतराल में, 2 सक्रिय क्लॉक किनारे उत्पन्न होते हैं। यहाँ, T1 पिछली क्लॉक अवधि है, और T2 नई प्रीस्केलर सेटिंग के अनुरूप अवधि है।
घड़ी आउटपुट बफर
डिवाइस CLKO पिन पर सिस्टम क्लॉक आउटपुट कर सकता है (जब XTAL2 पिन के रूप में उपयोग नहीं किया जाता है)। आउटपुट को सक्षम करने के लिए, CKOUT फ़्यूज़ को प्रोग्राम किया जाना चाहिए। यह मोड तब उपयुक्त होता है जब चिप क्लॉक का उपयोग सिस्टम पर अन्य सर्किट को चलाने के लिए किया जाता है। ध्यान दें कि रीसेट के दौरान क्लॉक आउटपुट नहीं होगा और फ़्यूज़ प्रोग्राम होने पर I/O पिन का सामान्य संचालन ओवरराइड हो जाएगा। आंतरिक RC ऑसिलेटर, WDT ऑसिलेटर, PLL और बाहरी क्लॉक (CLKI) का चयन तब किया जा सकता है जब क्लॉक CLKO पर आउटपुट हो। क्रिस्टल ऑसिलेटर (XTAL1, XTAL2) का उपयोग CLKO पर क्लॉक आउटपुट के लिए नहीं किया जा सकता है। यदि सिस्टम क्लॉक प्रीस्केलर का उपयोग किया जाता है, तो यह विभाजित सिस्टम क्लॉक है जो आउटपुट होता है।
रजिस्टर विवरण
OSCCAL – ऑसिलेटर कैलिब्रेशन रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | सीएएल7 | सीएएल6 | सीएएल5 | सीएएल4 | सीएएल3 | सीएएल2 | सीएएल1 | सीएएल0 | ओएससीसीएएल |
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू |
बिट्स 7:0 – CAL[7:0]: ऑसिलेटर कैलिब्रेशन मान
ऑसिलेटर कैलिब्रेशन रजिस्टर का उपयोग कैलिब्रेटेड इंटरनल RC ऑसिलेटर को ट्रिम करने के लिए किया जाता है ताकि ऑसिलेटर फ़्रीक्वेंसी से प्रक्रिया भिन्नता को हटाया जा सके। चिप रीसेट के दौरान एक पूर्व-प्रोग्राम किए गए कैलिब्रेशन मान को स्वचालित रूप से इस रजिस्टर में लिखा जाता है, जो फ़ैक्टरी कैलिब्रेटेड फ़्रीक्वेंसी देता है जैसा कि में निर्दिष्ट है पृष्ठ 21 पर तालिका 2-164. एप्लीकेशन सॉफ्टवेयर ऑसिलेटर की आवृत्ति को बदलने के लिए इस रजिस्टर को लिख सकता है। ऑसिलेटर को नीचे दिए गए अनुसार आवृत्तियों पर कैलिब्रेट किया जा सकता है। पृष्ठ 21 पर तालिका 2-164उस सीमा के बाहर अंशांकन की गारंटी नहीं है।
ध्यान दें कि इस ऑसिलेटर का उपयोग EEPROM और फ्लैश लेखन एक्सेस के समय को मापने के लिए किया जाता है, और ये लेखन समय तदनुसार प्रभावित होंगे। यदि EEPROM या फ्लैश लिखा जाता है, तो 8.8 मेगाहर्ट्ज से अधिक पर कैलिब्रेट न करें। अन्यथा, EEPROM या फ्लैश लेखन विफल हो सकता है।
CAL7 बिट ऑसिलेटर के लिए संचालन की सीमा निर्धारित करता है। इस बिट को 0 पर सेट करने से सबसे कम आवृत्ति सीमा मिलती है, इस बिट को 1 पर सेट करने से सबसे अधिक आवृत्ति सीमा मिलती है। दो आवृत्ति सीमाएँ ओवरलैप हो रही हैं, दूसरे शब्दों में OSCCAL = 0x7F की सेटिंग OSCCAL = 0x80 की तुलना में उच्च आवृत्ति देती है।
CAL[6:0] बिट्स का उपयोग चयनित रेंज के भीतर आवृत्ति को ट्यून करने के लिए किया जाता है। 0x00 की सेटिंग उस रेंज में सबसे कम आवृत्ति देती है, और 0x7F की सेटिंग उस रेंज में सबसे अधिक आवृत्ति देती है।
MCU के स्थिर संचालन को सुनिश्चित करने के लिए अंशांकन मान को थोड़ा-थोड़ा करके बदला जाना चाहिए। एक चक्र से दूसरे चक्र में 2% से अधिक की आवृत्ति में बदलाव अप्रत्याशित व्यवहार को जन्म दे सकता है। OSCCAL में परिवर्तन प्रत्येक अंशांकन के लिए 0x20 से अधिक नहीं होना चाहिए। यह सुनिश्चित करना आवश्यक है कि घड़ी आवृत्ति में ऐसे परिवर्तनों के दौरान MCU को रीसेट में रखा जाए
तालिका 6-14. आंतरिक आर.सी. ऑसिलेटर आवृत्ति रेंज
OSCCAL मूल्य | नाममात्र आवृत्ति के संबंध में विशिष्ट न्यूनतम आवृत्ति | नाममात्र आवृत्ति के संबंध में विशिष्ट उच्चतम आवृत्ति |
0x00 | 50% | 100% |
0x3एफ | 75% | 150% |
0x7एफ | 100% | 200% |
सीएलकेपीआर – क्लॉक प्रीस्केल रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | सीएलकेपीसीई | – | – | – | सीएलकेपीएस3 | सीएलकेपीएस2 | सीएलकेपीएस1 | सीएलकेपीएस0 | सीएलकेपीआर |
पढ़ें/लिखें | आर/डब्ल्यू | R | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू |
आरंभिक मान 0 0 0 0 बिट विवरण देखें
बिट 7 – CLKPCE: क्लॉक प्रीस्केलर परिवर्तन सक्षम करें
CLKPCE बिट को लॉजिक वन में लिखा जाना चाहिए ताकि CLKPS बिट्स में बदलाव किया जा सके। CLKPCE बिट केवल तभी अपडेट होता है जब CLKPR में अन्य बिट्स एक साथ शून्य पर लिखे जाते हैं। CLKPCE को लिखे जाने के चार चक्रों के बाद या जब CLKPS बिट्स लिखे जाते हैं, हार्डवेयर द्वारा साफ़ किया जाता है। इस समय-समाप्ति अवधि के भीतर CLKPCE बिट को फिर से लिखने से न तो समय-समाप्ति अवधि बढ़ती है, न ही CLKPCE बिट साफ़ होता है।
बिट्स 6:4 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट्स 3:0 – CLKPS[3:0]: क्लॉक प्रीस्केलर बिट्स 3 – 0 का चयन करें
ये बिट्स चयनित क्लॉक स्रोत और आंतरिक सिस्टम क्लॉक के बीच विभाजन कारक को परिभाषित करते हैं। इन बिट्स को एप्लिकेशन आवश्यकताओं के अनुरूप क्लॉक आवृत्ति को बदलने के लिए रन-टाइम लिखा जा सकता है। चूंकि डिवाइडर MCU में मास्टर क्लॉक इनपुट को विभाजित करता है, इसलिए विभाजन कारक का उपयोग करने पर सभी सिंक्रोनस परिधीयों की गति कम हो जाती है। विभाजन कारक नीचे दिए गए हैं तालिका 6-15.
घड़ी आवृत्ति में अनजाने में होने वाले परिवर्तन से बचने के लिए, CLKPS बिट्स को बदलने के लिए एक विशेष लेखन प्रक्रिया का पालन किया जाना चाहिए:
क्लॉक प्रीस्केलर चेंज इनेबल (CLKPCE) बिट को एक और CLKPR में अन्य सभी बिट्स को शून्य लिखें।
चार चक्रों के भीतर, CLKPS में वांछित मान लिखें जबकि CLKPCE में शून्य लिखें।
प्रीस्केलर सेटिंग बदलते समय व्यवधान को अक्षम किया जाना चाहिए ताकि यह सुनिश्चित किया जा सके कि लेखन प्रक्रिया बाधित न हो।
CKDIV8 फ़्यूज़ CLKPS बिट्स का आरंभिक मान निर्धारित करता है। यदि CKDIV8 प्रोग्राम नहीं किया गया है, तो CLKPS बिट्स को "0000" पर रीसेट कर दिया जाएगा। यदि CKDIV8 प्रोग्राम किया गया है, तो CLKPS बिट्स को "0011" पर रीसेट कर दिया जाता है, जिससे स्टार्ट अप पर आठ का विभाजन कारक प्राप्त होता है। इस सुविधा का उपयोग तब किया जाना चाहिए जब चयनित क्लॉक स्रोत की आवृत्ति वर्तमान ऑपरेटिंग स्थितियों में डिवाइस की अधिकतम आवृत्ति से अधिक हो। ध्यान दें कि CKDIV8 फ़्यूज़ सेटिंग की परवाह किए बिना CLKPS बिट्स पर कोई भी मान लिखा जा सकता है। एप्लिकेशन सॉफ़्टवेयर को यह सुनिश्चित करना चाहिए कि पर्याप्त विभाजन कारक हो
यदि चयनित क्लॉक स्रोत की आवृत्ति वर्तमान ऑपरेटिंग स्थितियों में डिवाइस की अधिकतम आवृत्ति से अधिक है, तो इसे चुना जाता है। डिवाइस को CKDIV8 फ़्यूज़ प्रोग्राम के साथ भेजा जाता है।
तालिका 6-15. क्लॉक प्रीस्केलर चयन
सीएलकेपीएस3 | सीएलकेपीएस2 | सीएलकेपीएस1 | सीएलकेपीएस0 | घड़ी विभाजन कारक |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | सुरक्षित |
1 | 0 | 1 | 0 | सुरक्षित |
1 | 0 | 1 | 1 | सुरक्षित |
1 | 1 | 0 | 0 | सुरक्षित |
1 | 1 | 0 | 1 | सुरक्षित |
1 | 1 | 1 | 0 | सुरक्षित |
1 | 1 | 1 | 1 | सुरक्षित |
नोट: प्रीस्केलर ATtiny15 संगतता मोड में अक्षम है और न तो CLKPR पर लिखने, और न ही CKDIV8 फ्यूज को प्रोग्राम करने से सिस्टम क्लॉक पर कोई प्रभाव पड़ता है (जो हमेशा 1.6 मेगाहर्ट्ज होगा)।
पावर प्रबंधन और स्लीप मोड
उच्च प्रदर्शन और उद्योग में अग्रणी कोड दक्षता AVR माइक्रोकंट्रोलर को कम बिजली वाले अनुप्रयोगों के लिए एक आदर्श विकल्प बनाती है। इसके अलावा, स्लीप मोड एप्लिकेशन को MCU में अप्रयुक्त मॉड्यूल को बंद करने में सक्षम बनाता है, जिससे बिजली की बचत होती है। AVR विभिन्न स्लीप मोड प्रदान करता है जिससे उपयोगकर्ता एप्लिकेशन की आवश्यकताओं के अनुसार बिजली की खपत को समायोजित कर सकता है।
स्लीप मोड्स
पृष्ठ 6 पर चित्र 1-23 ATtiny25/45/85 में विभिन्न घड़ी प्रणालियों और उनके वितरण को प्रस्तुत करता है। यह आंकड़ा एक उपयुक्त स्लीप मोड का चयन करने में सहायक है। तालिका 7-1 विभिन्न नींद मोड और उनके जागने के स्रोतों को दर्शाता है।
तालिका 7-1. विभिन्न स्लीप मोड में सक्रिय क्लॉक डोमेन और वेक-अप स्रोत
सक्रिय घड़ी डोमेन | दोलक | जागृति स्रोत | ||||||||||
स्लीप मोड | क्लकसीपीयू | clkफ़्लैश | clkIO | क्लकएडीसी | clkपीसीके | मुख्य घड़ी स्रोत सक्षम | INT0 और पिन परिवर्तन | एसपीएम/ईईपीरोम
तैयार |
यूएसआई प्रारंभ स्थिति |
एडीसी | अन्य I/O | निगरानी रुकावट डालना |
निठल्ला | X | X | X | X | X | X | X | X | X | X | ||
एडीसी शोर में कमी | X | X | X(1) | X | X | X | X | |||||
सत्ता जाना | X(1) | X | X |
नोट: INT0 के लिए, केवल स्तर व्यवधान.
तीनों स्लीप मोड में से किसी में प्रवेश करने के लिए, MCUCR में SE बिट को लॉजिक वन में लिखा जाना चाहिए और SLEEP निर्देश निष्पादित किया जाना चाहिए। MCUCR रजिस्टर में SM[1:0] बिट्स चुनते हैं कि कौन सा स्लीप मोड (आइडल, ADC नॉइज़ रिडक्शन या पावर-डाउन) SLEEP निर्देश द्वारा सक्रिय किया जाएगा। देखें तालिका 7-2 सारांश के लिए.
यदि MCU स्लीप मोड में होने के दौरान कोई सक्षम इंटरप्ट होता है, तो MCU जाग जाता है। फिर MCU को स्टार्ट-अप समय के अलावा चार चक्रों के लिए रोक दिया जाता है, इंटरप्ट रूटीन को निष्पादित करता है, और SLEEP के बाद निर्देश से निष्पादन को फिर से शुरू करता है। रजिस्टर की सामग्री File जब डिवाइस नींद से जागता है तो MCU और SRAM अपरिवर्तित रहते हैं। यदि स्लीप मोड के दौरान रीसेट होता है, तो MCU जाग जाता है और रीसेट वेक्टर से निष्पादित होता है।
ध्यान दें: यदि किसी लेवल ट्रिगर इंटरप्ट का उपयोग वेक-अप के लिए किया जाता है, तो MCU को जगाने के लिए (और MCU को इंटरप्ट सर्विस रूटीन में प्रवेश करने के लिए) बदले हुए लेवल को कुछ समय तक होल्ड करके रखना चाहिए। देखें “बाहरी व्यवधान” पृष्ठ 49 पर जानकारी के लिए।
निष्क्रिय अंदाज़
जब SM[1:0] बिट्स को 00 पर लिखा जाता है, तो SLEEP निर्देश MCU को निष्क्रिय मोड में ले जाता है, जिससे CPU रुक जाता है लेकिन एनालॉग तुलनित्र, ADC, USI, टाइमर/काउंटर, वॉचडॉग और इंटरप्ट सिस्टम को काम करना जारी रखने की अनुमति मिलती है। यह स्लीप मोड मूल रूप से clkCPU और clkFLASH को रोक देता है, जबकि अन्य घड़ियों को चलने देता है।
निष्क्रिय मोड MCU को बाहरी ट्रिगर किए गए इंटरप्ट के साथ-साथ टाइमर ओवरफ़्लो जैसे आंतरिक इंटरप्ट से भी जगाने में सक्षम बनाता है। यदि एनालॉग तुलनित्र इंटरप्ट से जागने की आवश्यकता नहीं है, तो एनालॉग तुलनित्र को ACD बिट को सेट करके बंद किया जा सकता है “ACSR – एनालॉग तुलनित्र नियंत्रण और स्थिति रजिस्टर” पृष्ठ 120 पर. इससे निष्क्रिय मोड में बिजली की खपत कम हो जाएगी। यदि ADC सक्षम है, तो इस मोड में प्रवेश करने पर रूपांतरण स्वचालित रूप से शुरू हो जाता है।
एडीसी शोर न्यूनीकरण मोड
जब SM[1:0] बिट्स को 01 पर लिखा जाता है, तो SLEEP निर्देश MCU को ADC शोर न्यूनीकरण मोड में प्रवेश कराता है, CPU को रोकता है लेकिन ADC, बाहरी इंटरप्ट और वॉचडॉग को संचालन जारी रखने की अनुमति देता है (यदि सक्षम है)। यह स्लीप मोड clkI/O, clkCPU और clkFLASH को रोकता है, जबकि अन्य घड़ियों को चलने देता है।
इससे ADC के लिए शोर का माहौल बेहतर होता है, जिससे उच्च रिज़ॉल्यूशन मापन संभव होता है। यदि ADC सक्षम है, तो इस मोड में प्रवेश करने पर रूपांतरण अपने आप शुरू हो जाता है। ADC रूपांतरण पूर्ण व्यवधान के अलावा, केवल एक बाहरी रीसेट, एक वॉचडॉग रीसेट, एक ब्राउन-आउट रीसेट, एक SPM/EEPROM तैयार व्यवधान, INT0 पर एक बाहरी स्तर व्यवधान या एक पिन परिवर्तन व्यवधान ADC शोर न्यूनीकरण मोड से MCU को जगा सकता है।
पावर-डाउन मोड
जब SM[1:0] बिट्स को 10 पर लिखा जाता है, तो SLEEP निर्देश MCU को पावर-डाउन मोड में प्रवेश कराता है। इस मोड में, ऑसिलेटर बंद हो जाता है, जबकि बाहरी इंटरप्ट, USI स्टार्ट कंडीशन डिटेक्शन और वॉचडॉग संचालन जारी रखते हैं (यदि सक्षम है)। केवल एक बाहरी रीसेट, एक वॉचडॉग रीसेट, एक ब्राउन-आउट रीसेट, USI स्टार्ट कंडीशन इंटरप्ट, INT0 पर एक बाहरी स्तर का इंटरप्ट या एक पिन परिवर्तन इंटरप्ट MCU को जगा सकता है। यह स्लीप मोड सभी उत्पन्न घड़ियों को रोक देता है, जिससे केवल एसिंक्रोनस मॉड्यूल का संचालन संभव हो पाता है।
सॉफ्टवेयर BOD अक्षम
जब ब्राउन-आउट डिटेक्टर (BOD) को BODLEVEL फ़्यूज़ द्वारा सक्षम किया जाता है (देखें पृष्ठ 20 पर तालिका 4-148), बीओडी सक्रिय रूप से आपूर्ति की मात्रा की निगरानी कर रहा हैtagस्लीप अवधि के दौरान। कुछ डिवाइस में पावर-डाउन स्लीप मोड में सॉफ़्टवेयर द्वारा BOD को अक्षम करके बिजली बचाना संभव है। स्लीप मोड में बिजली की खपत तब उसी स्तर पर होगी जब BOD को फ़्यूज़ द्वारा वैश्विक रूप से अक्षम किया जाता है।
यदि सॉफ़्टवेयर द्वारा BOD को अक्षम किया गया है, तो स्लीप मोड में प्रवेश करने के तुरंत बाद BOD फ़ंक्शन बंद हो जाता है। नींद से जागने पर, BOD स्वचालित रूप से फिर से सक्षम हो जाता है। यह स्लीप अवधि के दौरान VCC स्तर गिरने की स्थिति में सुरक्षित संचालन सुनिश्चित करता है।
जब BOD को निष्क्रिय कर दिया जाता है, तो स्लीप मोड से जागने का समय रीसेट से जागने के समय के समान ही होगा। उपयोगकर्ता को जागने के समय को मैन्युअल रूप से कॉन्फ़िगर करना होगा ताकि बैंडगैप संदर्भ को शुरू होने का समय मिले और MCU द्वारा कोड निष्पादित करना जारी रखने से पहले BOD सही ढंग से काम कर रहा हो। तालिका में SUT[1:0] और CKSEL[3:0] फ़्यूज़ बिट्स देखें “फ़्यूज़ लो बाइट” पृष्ठ 149 पर
BOD अक्षम को MCU नियंत्रण रजिस्टर के BODS (BOD स्लीप) बिट द्वारा नियंत्रित किया जाता है, देखें “एमसीयूसीआर – एमसीयू नियंत्रण रजिस्टर” पेज 37 परइस बिट को एक लिखने से पावर-डाउन में BOD बंद हो जाता है, जबकि शून्य लिखने पर BOD सक्रिय रहता है। डिफ़ॉल्ट सेटिंग शून्य है, यानी BOD सक्रिय है।
BODS बिट पर लेखन एक समयबद्ध अनुक्रम और एक सक्षम बिट द्वारा नियंत्रित होता है, देखें “एमसीयूसीआर – एमसीयू कंट्रोल रजिस्टर- ter” पृष्ठ 37 पर.
सीमाएँ
BOD अक्षम कार्यक्षमता केवल निम्नलिखित उपकरणों में लागू की गई है:
ATtiny25, संशोधन E, और नया
ATtiny45, संशोधन D, और नया
ATtiny85, संशोधन C, और नया
संशोधनों को डिवाइस पैकेज पर चिह्नित किया जाता है और उन्हें निम्नानुसार पाया जा सकता है:
पैकेज 8P3 और 8S2 का निचला भाग
पैकेज का ऊपरी भाग 20M1
पावर रिडक्शन रजिस्टर
पावर रिडक्शन रजिस्टर (PRR), देखें “PRR – पावर रिडक्शन रजिस्टर” पृष्ठ 38 पर, अलग-अलग परिधीयों के लिए घड़ी को रोककर बिजली की खपत को कम करने का एक तरीका प्रदान करता है। परिधीय की वर्तमान स्थिति जमी हुई है और I/O रजिस्टरों को पढ़ा या लिखा नहीं जा सकता है। घड़ी को रोकने पर परिधीय द्वारा उपयोग किए जाने वाले संसाधन व्यस्त रहेंगे, इसलिए अधिकांश मामलों में घड़ी को रोकने से पहले परिधीय को निष्क्रिय कर दिया जाना चाहिए। मॉड्यूल को जगाना, जो PRR में बिट को साफ़ करके किया जाता है, मॉड्यूल को शटडाउन से पहले की स्थिति में रखता है।
मॉड्यूल शटडाउन का उपयोग निष्क्रिय मोड और सक्रिय मोड में किया जा सकता है ताकि समग्र बिजली खपत को काफी कम किया जा सके। अन्य सभी स्लीप मोड में, घड़ी पहले से ही बंद हो जाती है। देखें “I/O मॉड्यूल की आपूर्ति धारा” पृष्ठ 177 पर उदाहरणार्थampलेस.
बिजली की खपत को कम करना
AVR नियंत्रित सिस्टम में बिजली की खपत को कम करने की कोशिश करते समय कई मुद्दों पर विचार करना चाहिए। सामान्य तौर पर, स्लीप मोड का जितना संभव हो उतना उपयोग किया जाना चाहिए, और स्लीप मोड का चयन इस तरह से किया जाना चाहिए कि डिवाइस के जितने कम फ़ंक्शन काम कर रहे हों। सभी अनावश्यक फ़ंक्शन को अक्षम कर दिया जाना चाहिए। विशेष रूप से, सबसे कम संभव बिजली खपत प्राप्त करने का प्रयास करते समय निम्नलिखित मॉड्यूल पर विशेष ध्यान देने की आवश्यकता हो सकती है।
एनॉलॉग से डिजिटल परिवर्तित करने वाला उपकरण
यदि सक्षम किया गया है, तो ADC सभी स्लीप मोड में सक्षम होगा। बिजली बचाने के लिए, किसी भी स्लीप मोड में प्रवेश करने से पहले ADC को अक्षम किया जाना चाहिए। जब ADC को बंद करके फिर से चालू किया जाता है, तो अगला रूपांतरण एक विस्तारित रूपांतरण होगा। देखें “एनालॉग से डिजिटल कनवर्टर” पेज 122 पर एडीसी परिचालन पर विस्तृत जानकारी के लिए कृपया देखें।
एनालॉग तुलनित्र
निष्क्रिय मोड में प्रवेश करते समय, एनालॉग तुलनित्र को अक्षम किया जाना चाहिए यदि इसका उपयोग नहीं किया जाता है। ADC शोर न्यूनीकरण मोड में प्रवेश करते समय, एनालॉग तुलनित्र को अक्षम किया जाना चाहिए। अन्य स्लीप मोड में, एनालॉग तुलनित्र स्वचालित रूप से अक्षम हो जाता है। हालाँकि, यदि एनालॉग तुलनित्र को आंतरिक वॉल्यूम का उपयोग करने के लिए सेट किया गया हैtagई संदर्भ को इनपुट के रूप में उपयोग करने के लिए, एनालॉग तुलनित्र को सभी स्लीप मोड में अक्षम किया जाना चाहिए। अन्यथा, आंतरिक वॉल्यूमtagई संदर्भ स्लीप मोड से स्वतंत्र, सक्षम किया जाएगा। “एनालॉग तुलनित्र” पृष्ठ 119 पर एनालॉग तुलनित्र को कॉन्फ़िगर करने के तरीके के बारे में विवरण के लिए देखें।
ब्राउन-आउट डिटेक्टर
यदि एप्लिकेशन में ब्राउन-आउट डिटेक्टर की आवश्यकता नहीं है, तो इस मॉड्यूल को बंद कर देना चाहिए। यदि ब्राउन-आउट डिटेक्टर BODLEVEL फ़्यूज़ द्वारा सक्षम है, तो यह सभी स्लीप मोड में सक्षम होगा, और इसलिए, हमेशा बिजली की खपत करेगा। डीप स्लीप मोड में, यह कुल करंट खपत में महत्वपूर्ण रूप से योगदान देगा। देखें “ब्राउन-आउट डिटेक्शन पृष्ठ ४१ पर और “सॉफ़्टवेयर BOD अक्षम करें” पृष्ठ 35 पर ब्राउन-आउट डिटेक्टर को कॉन्फ़िगर करने के तरीके के बारे में विवरण के लिए देखें।
आंतरिक वॉल्यूमtagई संदर्भ
आंतरिक वॉल्यूमtagब्राउन-आउट डिटेक्शन, एनालॉग तुलनित्र या एडीसी द्वारा आवश्यकता पड़ने पर संदर्भ सक्षम किया जाएगा। यदि इन मॉड्यूल को ऊपर दिए गए अनुभागों में वर्णित अनुसार अक्षम किया जाता है, तो आंतरिक वॉल्यूमtagसंदर्भ अक्षम हो जाएगा और यह बिजली की खपत नहीं करेगा। जब इसे फिर से चालू किया जाता है, तो उपयोगकर्ता को आउटपुट का उपयोग करने से पहले संदर्भ को चालू होने देना चाहिए। यदि संदर्भ को स्लीप मोड में चालू रखा जाता है, तो आउटपुट का तुरंत उपयोग किया जा सकता है। देखें “आंतरिक वॉल्यूमtagई संदर्भ” पृष्ठ ४२ पर स्टार्ट-अप समय के विवरण के लिए कृपया देखें।
वॉचडॉग टाइमर
यदि एप्लिकेशन में वॉचडॉग टाइमर की आवश्यकता नहीं है, तो इस मॉड्यूल को बंद कर देना चाहिए। यदि वॉचडॉग टाइमर सक्षम है, तो यह सभी स्लीप मोड में सक्षम होगा, और इसलिए, हमेशा बिजली की खपत करेगा। डीप स्लीप मोड में, यह कुल करंट खपत में महत्वपूर्ण रूप से योगदान देगा। देखें “वॉचडॉग टाइमर” पेज 42 पर वॉचडॉग टाइमर को कॉन्फ़िगर करने के तरीके के बारे में विवरण के लिए यहां क्लिक करें।
पोर्ट पिंस
स्लीप मोड में प्रवेश करते समय, सभी पोर्ट पिन को न्यूनतम बिजली का उपयोग करने के लिए कॉन्फ़िगर किया जाना चाहिए। सबसे महत्वपूर्ण बात यह सुनिश्चित करना है कि कोई भी पिन प्रतिरोधक लोड को न चलाए। स्लीप मोड में जहां I/O क्लॉक (clkI/O) और ADC क्लॉक (clkADC) दोनों बंद हो जाते हैं, डिवाइस के इनपुट बफ़र्स अक्षम हो जाएंगे। यह सुनिश्चित करता है कि कोई बिजली खपत न हो
जब जरूरत न हो तो इनपुट लॉजिक द्वारा। कुछ मामलों में, वेक-अप स्थितियों का पता लगाने के लिए इनपुट लॉजिक की जरूरत होती है, और
इसके बाद यह सक्षम हो जाएगा। अनुभाग देखें “डिजिटल इनपुट सक्षम और स्लीप मोड” पृष्ठ 57 पर विवरण के लिए कि कौन से पिन सक्षम हैं। यदि इनपुट बफर सक्षम है और इनपुट सिग्नल को फ्लोटिंग छोड़ दिया जाता है या एनालॉग सिग्नल स्तर VCC/2 के करीब होता है, तो इनपुट बफर अत्यधिक शक्ति का उपयोग करेगा।
एनालॉग इनपुट पिन के लिए, डिजिटल इनपुट बफर को हर समय अक्षम किया जाना चाहिए। इनपुट पिन पर VCC/2 के करीब एनालॉग सिग्नल स्तर सक्रिय मोड में भी महत्वपूर्ण करंट पैदा कर सकता है। डिजिटल इनपुट बफर को डिजिटल इनपुट डिसेबल रजिस्टर (DIDR0) में लिखकर अक्षम किया जा सकता है। “DIDR0 – डिजिटल इनपुट अक्षम रजिस्टर 0” पृष्ठ 121 पर जानकारी के लिए।
रजिस्टर विवरण
MCUCR – MCU नियंत्रण रजिस्टर
MCU नियंत्रण रजिस्टर में पावर प्रबंधन के लिए नियंत्रण बिट्स होते हैं।
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | बीओडीएस | दस्ता | SE | एसएम1 | एसएम0 | बोडसे | ISC01 | ISC00 | एमसीयूसीआर |
पढ़ें/लिखें | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | R | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट 7 – बीओडीएस: बीओडी नींद
BOD अक्षम कार्यक्षमता केवल कुछ डिवाइसों में ही उपलब्ध है। देखें पेज 36 पर “सीमाएँ”.
नींद के दौरान BOD को निष्क्रिय करने के लिए (देखें पृष्ठ 7 पर तालिका 1-34) BODS बिट को लॉजिक वन में लिखा जाना चाहिए। इसे समयबद्ध अनुक्रम और सक्षम बिट, MCUCR में BODSE द्वारा नियंत्रित किया जाता है। सबसे पहले, BODS और BODSE दोनों को एक पर सेट किया जाना चाहिए। दूसरा, चार क्लॉक साइकल के भीतर, BODS को एक पर सेट किया जाना चाहिए और BODSE को शून्य पर सेट किया जाना चाहिए। BODS बिट सेट होने के तीन क्लॉक साइकल के बाद सक्रिय होता है। वास्तविक स्लीप मोड के लिए BOD को बंद करने के लिए BODS के सक्रिय होने पर स्लीप इंस्ट्रक्शन निष्पादित किया जाना चाहिए। BODS बिट तीन क्लॉक साइकल के बाद अपने आप साफ़ हो जाता है।
जिन उपकरणों में स्लीपिंग बीओडी को क्रियान्वित नहीं किया गया है, वहां यह बिट अप्रयुक्त रहता है तथा हमेशा शून्य पढ़ता है।
बिट 5 – SE: स्लीप सक्षम
SLEEP निर्देश निष्पादित होने पर MCU को स्लीप मोड में प्रवेश कराने के लिए SE बिट को लॉजिक एक में लिखा जाना चाहिए। जब तक प्रोग्रामर का उद्देश्य न हो, MCU को स्लीप मोड में जाने से बचाने के लिए, SLEEP निर्देश के निष्पादन से ठीक पहले स्लीप इनेबल (SE) बिट को एक में लिखने और जागने के तुरंत बाद इसे साफ़ करने की अनुशंसा की जाती है।
बिट्स 4:3 – SM[1:0]: स्लीप मोड बिट्स 1 और 0 का चयन करें
ये बिट्स तीन उपलब्ध स्लीप मोड के बीच चयन करते हैं जैसा कि चित्र में दिखाया गया है तालिका 7-2.
तालिका 7-2. स्लीप मोड चयन
एसएम1 | एसएम0 | स्लीप मोड |
0 | 0 | निठल्ला |
0 | 1 | एडीसी शोर में कमी |
1 | 0 | सत्ता जाना |
1 | 1 | सुरक्षित |
बिट 2 – BODSE: BOD स्लीप सक्षम
BOD अक्षम कार्यक्षमता केवल कुछ डिवाइसों में ही उपलब्ध है। देखें पेज 36 पर “सीमाएँ”.
BODSE बिट BODS नियंत्रण बिट की सेटिंग को सक्षम करता है, जैसा कि BODS बिट विवरण पर बताया गया है। BOD अक्षम को समयबद्ध अनुक्रम द्वारा नियंत्रित किया जाता है।
यह बिट उन उपकरणों में अप्रयुक्त है जहां सॉफ्टवेयर BOD अक्षम लागू नहीं किया गया है और उन उपकरणों में यह शून्य के रूप में पढ़ा जाएगा।
पीआरआर – पावर रिडक्शन रजिस्टर
पावर रिडक्शन रजिस्टर परिधीय घड़ी संकेतों को निष्क्रिय करने की अनुमति देकर बिजली की खपत को कम करने की एक विधि प्रदान करता है।
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | पीआरटीआईएम1 | पीआरटीआईएम0 | प्रुसी | पीआरएडीसी | पीआरआर |
पढ़ें/लिखें | R | R | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट्स 7:4 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट 3 – PRTIM1: पावर रिडक्शन टाइमर/काउंटर1
इस बिट पर लॉजिक वन लिखने से टाइमर/काउंटर1 मॉड्यूल बंद हो जाता है। जब टाइमर/काउंटर1 सक्षम होता है, तो शटडाउन से पहले की तरह ही संचालन जारी रहेगा।
बिट 2 – PRTIM0: पावर रिडक्शन टाइमर/काउंटर0
इस बिट पर लॉजिक वन लिखने से टाइमर/काउंटर0 मॉड्यूल बंद हो जाता है। जब टाइमर/काउंटर0 सक्षम होता है, तो शटडाउन से पहले की तरह ही संचालन जारी रहेगा।
बिट 1 – PRUSI: पावर रिडक्शन USI
इस बिट पर लॉजिक वन लिखने से मॉड्यूल की घड़ी बंद हो जाती है और USI बंद हो जाता है। USI को फिर से जगाते समय, उचित संचालन सुनिश्चित करने के लिए USI को फिर से आरंभ किया जाना चाहिए।
बिट 0 – PRADC: पावर रिडक्शन ADC
इस बिट पर लॉजिक वन लिखने से ADC बंद हो जाता है। शट डाउन करने से पहले ADC को निष्क्रिय किया जाना चाहिए। ध्यान दें कि ADC क्लॉक का उपयोग एनालॉग तुलनित्र के कुछ भागों द्वारा भी किया जाता है, जिसका अर्थ है कि जब यह बिट उच्च होता है तो एनालॉग तुलनित्र का उपयोग नहीं किया जा सकता है।
सिस्टम नियंत्रण और रीसेट
AVR को रीसेट करना
रीसेट के दौरान, सभी I/O रजिस्टर अपने प्रारंभिक मानों पर सेट हो जाते हैं, और प्रोग्राम रीसेट वेक्टर से निष्पादन शुरू कर देता है। रीसेट वेक्टर पर रखा गया निर्देश रीसेट हैंडलिंग रूटीन के लिए RJMP - रिलेटिव जंप - निर्देश होना चाहिए। यदि प्रोग्राम कभी भी इंटरप्ट स्रोत को सक्षम नहीं करता है, तो इंटरप्ट वेक्टर का उपयोग नहीं किया जाता है, और इन स्थानों पर नियमित प्रोग्राम कोड रखा जा सकता है। सर्किट आरेख में चित्र 8-1 रीसेट लॉजिक दिखाता है। रीसेट सर्किटरी के इलेक्ट्रिकल पैरामीटर नीचे दिए गए हैं “सिस्टम और रीसेट विशेषताएँ” पृष्ठ 165 पर.
चित्र 8-1 रीसेट लॉजिक
रीसेट स्रोत सक्रिय होने पर AVR के I/O पोर्ट तुरंत अपनी प्रारंभिक स्थिति में रीसेट हो जाते हैं। इसके लिए किसी क्लॉक स्रोत के चालू होने की आवश्यकता नहीं होती है।
सभी रीसेट स्रोत निष्क्रिय हो जाने के बाद, एक विलंब काउंटर को लागू किया जाता है, जो आंतरिक रीसेट को बढ़ाता है। यह सामान्य संचालन शुरू होने से पहले बिजली को एक स्थिर स्तर तक पहुंचने की अनुमति देता है। विलंब काउंटर की समय-समाप्ति अवधि उपयोगकर्ता द्वारा SUT और CKSEL फ़्यूज़ के माध्यम से परिभाषित की जाती है। विलंब अवधि के लिए विभिन्न चयन प्रस्तुत किए गए हैं "घड़ी स्रोत” पृष्ठ 25 पर.
सूत्रों को रीसेट करें
ATtiny25/45/85 में रीसेट के चार स्रोत हैं:
पावर-ऑन रीसेट। जब सप्लाई वॉल्यूम कम हो जाता है तो MCU रीसेट हो जाता हैtage पावर-ऑन रीसेट थ्रेशहोल्ड (VPOT) से नीचे है।
बाह्य रीसेट। MCU तब रीसेट होता है जब RESET पिन पर न्यूनतम पल्स लंबाई से अधिक समय तक निम्न स्तर मौजूद रहता है।
वॉचडॉग रीसेट। जब वॉचडॉग टाइमर अवधि समाप्त हो जाती है और वॉचडॉग सक्षम होता है, तो MCU रीसेट हो जाता है।
ब्राउन-आउट रीसेट। जब सप्लाई वॉल्यूम बढ़ जाता है तो MCU रीसेट हो जाता हैtagई वीसीसी ब्राउन-आउट रीसेट थ्रेशहोल्ड (वीबीओटी) से नीचे है और ब्राउन-आउट डिटेक्टर सक्षम है।
पावर-ऑन रीसेट
ऑन-चिप डिटेक्शन सर्किट द्वारा पावर-ऑन रीसेट (POR) पल्स उत्पन्न किया जाता है। डिटेक्शन स्तर को निम्न प्रकार से परिभाषित किया गया है “सिस्टम- टेम और रीसेट विशेषताएँ” पृष्ठ 165 पर. जब भी VCC डिटेक्शन लेवल से नीचे होता है, तो POR सक्रिय हो जाता है। POR सर्किट का उपयोग स्टार्ट-अप रीसेट को ट्रिगर करने के साथ-साथ सप्लाई वॉल्यूम में विफलता का पता लगाने के लिए भी किया जा सकता है।tage.
पावर-ऑन रीसेट (POR) सर्किट यह सुनिश्चित करता है कि डिवाइस पावर-ऑन से रीसेट हो जाए। पावर-ऑन रीसेट थ्रेशोल्ड वॉल्यूम तक पहुँचने परtagई विलंब काउंटर को आमंत्रित करता है, जो निर्धारित करता है कि VCC बढ़ने के बाद डिवाइस को कितनी देर तक रीसेट में रखा जाए। जब VCC डिटेक्शन लेवल से कम हो जाता है, तो रीसेट सिग्नल बिना किसी देरी के फिर से सक्रिय हो जाता है।
चित्र 8-2. MCU स्टार्ट-अप, रीसेट VCC से जुड़ा हुआ है
आंतरिक रीसेट
चित्र 8-3. MCU स्टार्ट-अप, रीसेट एक्सटेंडेड एक्सटर्नली
बाहरी रीसेट
यदि सक्षम किया गया है तो रीसेट पिन पर कम स्तर द्वारा एक बाहरी रीसेट उत्पन्न होता है। न्यूनतम पल्स चौड़ाई से अधिक लंबे रीसेट पल्स (देखें “सिस्टम और रीसेट विशेषताएँ” पृष्ठ 165 पर) रीसेट उत्पन्न करेगा, भले ही घड़ी न चल रही हो। छोटे पल्स रीसेट उत्पन्न करने की गारंटी नहीं देते हैं। जब लागू सिग्नल रीसेट थ्रेशोल्ड वॉल्यूम तक पहुँच जाता हैtage – VRST – इसके धनात्मक किनारे पर, विलंब काउंटर टाइम-आउट अवधि समाप्त होने के बाद MCU प्रारंभ करता है।
चित्र 8-4. ऑपरेशन के दौरान बाहरी रीसेट
ब्राउन-आउट का पता लगाना
ATtiny25/45/85 में एक ऑन-चिप ब्राउन-आउट डिटेक्शन (BOD) सर्किट है जो ऑपरेशन के दौरान VCC लेवल की निगरानी के लिए इसे एक निश्चित ट्रिगर लेवल से तुलना करके मॉनिटर करता है। BOD के लिए ट्रिगर लेवल को BODLEVEL फ़्यूज़ द्वारा चुना जा सकता है। ट्रिगर लेवल में स्पाइक मुक्त ब्राउन-आउट डिटेक्शन सुनिश्चित करने के लिए हिस्टैरिसिस होता है। डिटेक्शन लेवल पर हिस्टैरिसिस की व्याख्या VBOT+ = VBOT + VHYST/2 और VBOT- = VBOT – VHYST/2 के रूप में की जानी चाहिए।
जब BOD सक्षम होता है, और VCC ट्रिगर स्तर (VBOT-in) से नीचे के मान तक घट जाता है चित्र 8-5), ब्राउन-आउट रीसेट तुरंत सक्रिय हो जाता है। जब VCC ट्रिगर स्तर (VBOT+ इन) से ऊपर बढ़ जाता है चित्र 8-5), विलंब काउंटर टाइम-आउट अवधि tTOUT समाप्त होने के बाद MCU शुरू करता है।
बीओडी सर्किट केवल तभी वीसीसी में गिरावट का पता लगाएगा जब वॉल्यूमtagई दिए गए टीबीओडी से अधिक समय तक ट्रिगर स्तर से नीचे रहता है “सिस्टम और रीसेट विशेषताएँ” पृष्ठ 165 पर.
वॉचडॉग रीसेट
जब वॉचडॉग का समय समाप्त हो जाता है, तो यह एक CK चक्र अवधि का एक छोटा रीसेट पल्स उत्पन्न करेगा। इस पल्स के गिरते किनारे पर, विलंब टाइमर टाइम-आउट अवधि tTOUT की गिनती शुरू करता है। देखें “वॉचडॉग टाइमर” पेज 42 पर वॉचडॉग टाइमर के संचालन के विवरण के लिए कृपया देखें।
वॉल्यूमtagई संदर्भ सक्षम सिग्नल और स्टार्ट-अप समय
वॉल्यूमtagसंदर्भ का एक आरंभिक समय होता है जो इसके उपयोग के तरीके को प्रभावित कर सकता है। आरंभिक समय नीचे दिया गया है “सिस्टम और रीसेट विशेषताएँ” पृष्ठ 165 परबिजली बचाने के लिए, संदर्भ हमेशा चालू नहीं रहता है। निम्नलिखित स्थितियों के दौरान संदर्भ चालू रहता है:
जब BOD सक्षम होता है (BODLEVEL[2:0] फ़्यूज़ बिट्स को प्रोग्रामिंग करके).
जब बैंडगैप संदर्भ को एनालॉग तुलनित्र से जोड़ा जाता है (ACSR में ACBG बिट सेट करके)।
जब ADC सक्षम हो.
इस प्रकार, जब BOD सक्षम नहीं होता है, तो ACBG बिट सेट करने या ADC सक्षम करने के बाद, उपयोगकर्ता को हमेशा एनालॉग तुलनित्र या ADC से आउटपुट का उपयोग करने से पहले संदर्भ को शुरू करने की अनुमति देनी चाहिए। पावर-डाउन मोड में बिजली की खपत को कम करने के लिए, उपयोगकर्ता यह सुनिश्चित करने के लिए उपरोक्त तीन स्थितियों से बच सकता है कि पावर-डाउन मोड में प्रवेश करने से पहले संदर्भ बंद हो।
वॉचडॉग टाइमर
वॉचडॉग टाइमर को ऑन-चिप ऑसिलेटर से क्लॉक किया जाता है जो 128 kHz पर चलता है। वॉचडॉग टाइमर प्रीस्केलर को नियंत्रित करके, वॉचडॉग रीसेट अंतराल को नीचे दिखाए अनुसार समायोजित किया जा सकता है। पृष्ठ 8 पर तालिका 3-46. WDR - वॉचडॉग रीसेट - निर्देश वॉचडॉग टाइमर को रीसेट करता है। वॉचडॉग टाइमर तब भी रीसेट हो जाता है जब इसे अक्षम किया जाता है और जब चिप रीसेट होता है। रीसेट अवधि निर्धारित करने के लिए दस अलग-अलग क्लॉक साइकिल अवधि का चयन किया जा सकता है। यदि रीसेट अवधि किसी अन्य वॉचडॉग रीसेट के बिना समाप्त हो जाती है, तो ATtiny25/45/85 रीसेट हो जाता है और रीसेट वेक्टर से निष्पादित होता है। वॉचडॉग रीसेट पर समय विवरण के लिए, देखें पृष्ठ 8 पर तालिका 3-46.
वॉचडॉग टाइमर को रीसेट के बजाय इंटरप्ट उत्पन्न करने के लिए भी कॉन्फ़िगर किया जा सकता है। पावर-डाउन से जागने के लिए वॉचडॉग का उपयोग करते समय यह बहुत मददगार हो सकता है।
वॉचडॉग को अनजाने में अक्षम होने या टाइम-आउट अवधि में अनजाने में परिवर्तन को रोकने के लिए, फ्यूज WDTON द्वारा दो अलग-अलग सुरक्षा स्तरों का चयन किया जाता है जैसा कि चित्र में दिखाया गया है तालिका 8-1 को देखें "परिस्थिति बदलने के लिए समयबद्ध अनुक्रम वॉचडॉग टाइमर का चित्रण” पृष्ठ 43 पर जानकारी के लिए।
तालिका 8-1. WDTON की फ़्यूज़ सेटिंग के फ़ंक्शन के रूप में WDT कॉन्फ़िगरेशन
डब्लूडीटीओएन | सुरक्षा स्तर | WDT प्रारंभिक स्थिति | WDT को अक्षम कैसे करें | टाइम-आउट कैसे बदलें |
अप्रमाणित | 1 | अक्षम | समयबद्ध अनुक्रम | कोई सीमाएं नहीं |
प्रोग्राम | 2 | सक्रिय | हमेशा सक्षम | समयबद्ध अनुक्रम |
चित्र 8-7. वॉचडॉग टाइमर
वॉचडॉग टाइमर के कॉन्फ़िगरेशन को बदलने के लिए समयबद्ध अनुक्रम
दो सुरक्षा स्तरों के बीच कॉन्फ़िगरेशन बदलने का क्रम थोड़ा अलग है। प्रत्येक स्तर के लिए अलग-अलग प्रक्रियाएँ बताई गई हैं।
सुरक्षा स्तर 1: इस मोड में, वॉचडॉग टाइमर शुरू में अक्षम होता है, लेकिन बिना किसी प्रतिबंध के WDE बिट को एक पर लिखकर इसे सक्षम किया जा सकता है। सक्षम वॉचडॉग टाइमर को अक्षम करते समय एक समयबद्ध अनुक्रम की आवश्यकता होती है। सक्षम वॉचडॉग टाइमर को अक्षम करने के लिए, निम्नलिखित प्रक्रिया का पालन किया जाना चाहिए:
उसी ऑपरेशन में, WDCE और WDE में लॉजिक वन लिखें। WDE बिट के पिछले मान की परवाह किए बिना WDE में लॉजिक वन लिखा जाना चाहिए।
अगले चार क्लॉक चक्रों में, उसी ऑपरेशन में, इच्छानुसार WDE और WDP बिट्स लिखें, लेकिन WDCE बिट को साफ़ रखें।
सुरक्षा स्तर 2: इस मोड में, वॉचडॉग टाइमर हमेशा सक्षम रहता है, और WDE बिट हमेशा एक के रूप में पढ़ा जाएगा। वॉचडॉग टाइम-आउट अवधि को बदलते समय एक समयबद्ध अनुक्रम की आवश्यकता होती है। वॉचडॉग टाइम-आउट को बदलने के लिए, निम्नलिखित प्रक्रिया का पालन किया जाना चाहिए:
उसी ऑपरेशन में, WDCE और WDE में एक तार्किक एक लिखें। भले ही WDE हमेशा सेट रहता है, लेकिन समयबद्ध अनुक्रम शुरू करने के लिए WDE को एक में लिखा जाना चाहिए।
अगले चार क्लॉक चक्रों में, उसी ऑपरेशन में, WDP बिट्स को इच्छानुसार लिखें, लेकिन WDCE बिट को साफ़ रखें। WDE बिट में लिखा गया मान अप्रासंगिक है।
कोड Example
निम्नलिखित कोड पूर्व:ampयह फ़ाइल WDT को बंद करने के लिए एक असेंबली और एक C फ़ंक्शन दिखाती है।ample मानता है कि व्यवधानों को नियंत्रित किया जाता है (उदाहरण के लिए, वैश्विक स्तर पर व्यवधानों को अक्षम करके) ताकि इन कार्यों के निष्पादन के दौरान कोई व्यवधान उत्पन्न न हो।
असेंबली कोड एक्सample(1) |
WDT_बंद:
डब्ल्यूडीआर ; MCUSR में WDRF साफ़ करें एलडीआई आर16, (0< बाहर MCUSR, r16 ; WDCE और WDE में तार्किक एक लिखें ; अनजाने वॉचडॉग रीसेट को रोकने के लिए पुरानी प्रीस्केलर सेटिंग रखें r16 में, WDTCR ओरि आर१६, (१< बाहर WDTCR, r16 ; WDT बंद करें एलडीआई आर16, (0< बाहर WDTCR, r16 गीला करना |
सी कोड एक्सample(1) |
शून्य WDT_off(शून्य)
{ _डब्लूडीआर(); /* MCUSR में WDRF साफ़ करें */ MCUSR = 0x00 /* WDCE और WDE में तार्किक एक लिखें */ WDTCR |= (1< /* WDT बंद करें */ WDTCR = 0x00; } |
नोट: 1. देखें “कोड एक्सampलेस” पेज 6 पर.
रजिस्टर विवरण
MCUSR – MCU स्थिति रजिस्टर
MCU स्थिति रजिस्टर यह जानकारी प्रदान करता है कि किस रीसेट स्रोत के कारण MCU रीसेट हुआ।
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | डब्ल्यूडीआरएफ | बोर्फ | EXTRF | पीओआरएफ | एमसीयूएसआर |
पढ़ें/लिखें | R | R | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू |
आरंभिक मान 0 0 0 0 बिट विवरण देखें
बिट्स 7:4 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट 3 – WDRF: वॉचडॉग रीसेट फ्लैग
यह बिट तब सेट होता है जब वॉचडॉग रीसेट होता है। बिट को पावर-ऑन रीसेट द्वारा या फ्लैग में लॉजिक जीरो लिखकर रीसेट किया जाता है।
बिट 2 – BORF: ब्राउन-आउट रीसेट फ्लैग
यह बिट तब सेट होता है जब ब्राउन-आउट रीसेट होता है। बिट को पावर-ऑन रीसेट द्वारा या फ्लैग में लॉजिक जीरो लिखकर रीसेट किया जाता है।
बिट 1 – EXTRF: बाहरी रीसेट फ्लैग
यदि कोई बाहरी रीसेट होता है तो यह बिट सेट हो जाता है। बिट को पावर-ऑन रीसेट द्वारा या फ्लैग में लॉजिक शून्य लिखकर रीसेट किया जाता है।
बिट 0 – PORF: पावर-ऑन रीसेट फ्लैग
यह बिट तब सेट होता है जब पावर-ऑन रीसेट होता है। बिट को केवल फ्लैग में लॉजिक शून्य लिखकर रीसेट किया जाता है।
रीसेट स्थिति की पहचान करने के लिए रीसेट फ्लैग का उपयोग करने के लिए, उपयोगकर्ता को प्रोग्राम में MCUSR को यथासंभव जल्दी पढ़ना चाहिए और फिर रीसेट करना चाहिए। यदि किसी अन्य रीसेट के होने से पहले रजिस्टर को साफ़ कर दिया जाता है, तो रीसेट फ्लैग की जाँच करके रीसेट का स्रोत पाया जा सकता है।
WDTCR – वॉचडॉग टाइमर नियंत्रण रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | डब्ल्यूडीआईएफ | डब्ल्यूडीआईई | डब्ल्यूडीपी3 | डब्ल्यूडीसीई | डब्ल्यूडीई | डब्ल्यूडीपी2 | डब्ल्यूडीपी1 | डब्ल्यूडीपी0 | डब्ल्यूडीटीसीआर |
पढ़ें/लिखें | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
बिट 7 – WDIF: वॉचडॉग टाइमआउट इंटरप्ट फ्लैग
यह बिट तब सेट किया जाता है जब वॉचडॉग टाइमर में टाइम-आउट होता है और वॉचडॉग टाइमर को इंटरप्ट के लिए कॉन्फ़िगर किया जाता है। संबंधित इंटरप्ट हैंडलिंग वेक्टर को निष्पादित करते समय WDIF को हार्डवेयर द्वारा साफ़ किया जाता है। वैकल्पिक रूप से, WDIF को फ़्लैग में लॉजिक वन लिखकर साफ़ किया जाता है। जब SREG और WDIE में I-बिट सेट किया जाता है, तो वॉचडॉग टाइम-आउट इंटरप्ट निष्पादित होता है।
बिट 6 – WDIE: वॉचडॉग टाइमआउट इंटरप्ट सक्षम करें
जब यह बिट एक पर लिखा जाता है, तो WDE साफ़ हो जाता है, और स्टेटस रजिस्टर में I-बिट सेट हो जाता है, वॉचडॉग टाइम-आउट इंटरप्ट सक्षम हो जाता है। इस मोड में वॉचडॉग टाइमर में टाइमआउट होने पर रीसेट के बजाय संबंधित इंटरप्ट निष्पादित किया जाता है।
यदि WDE सेट है, तो टाइम-आउट होने पर WDIE हार्डवेयर द्वारा स्वचालित रूप से साफ़ हो जाता है। यह इंटरप्ट का उपयोग करते समय वॉचडॉग रीसेट सुरक्षा बनाए रखने के लिए उपयोगी है। WDIE बिट साफ़ होने के बाद, अगला टाइम-आउट रीसेट उत्पन्न करेगा। वॉचडॉग रीसेट से बचने के लिए, प्रत्येक इंटरप्ट के बाद WDIE को सेट किया जाना चाहिए।
तालिका 8-2. वॉचडॉग टाइमर कॉन्फ़िगरेशन
डब्ल्यूडीई | डब्ल्यूडीआईई | वॉचडॉग टाइमर स्थिति | टाइम-आउट पर कार्रवाई |
0 | 0 | रोका गया | कोई नहीं |
0 | 1 | दौड़ना | रुकावट डालना |
1 | 0 | दौड़ना | रीसेट करें |
1 | 1 | दौड़ना | रुकावट डालना |
बिट 4 – WDCE: वॉचडॉग परिवर्तन सक्षम करें
इस बिट को तब सेट किया जाना चाहिए जब WDE बिट को लॉजिक शून्य पर लिखा जाता है। अन्यथा, वॉचडॉग अक्षम नहीं होगा। एक बार लिखे जाने के बाद, हार्डवेयर चार क्लॉक चक्रों के बाद इस बिट को साफ़ कर देगा। वॉचडॉग अक्षम प्रक्रिया के लिए WDE बिट के विवरण को देखें। प्रीस्केलर बिट्स को बदलते समय भी इस बिट को सेट किया जाना चाहिए। देखें “समयबद्ध अनुक्रम वॉचडॉग टाइमर का कॉन्फ़िगरेशन बदलने के लिए” पेज 43 पर.
बिट 3 – WDE: वॉचडॉग सक्षम
जब WDE को लॉजिक एक पर लिखा जाता है, तो वॉचडॉग टाइमर सक्षम होता है, और यदि WDE को लॉजिक शून्य पर लिखा जाता है, तो वॉचडॉग टाइमर फ़ंक्शन अक्षम हो जाता है। WDE को केवल तभी साफ़ किया जा सकता है जब WDCE बिट में लॉजिक स्तर एक हो। सक्षम वॉचडॉग टाइमर को अक्षम करने के लिए, निम्नलिखित प्रक्रिया का पालन किया जाना चाहिए:
उसी ऑपरेशन में, WDCE और WDE में लॉजिक वन लिखें। लॉजिक वन को WDE में अवश्य लिखा जाना चाहिए, भले ही इसे अक्षम ऑपरेशन शुरू होने से पहले एक पर सेट किया गया हो।
अगले चार क्लॉक चक्रों के भीतर, WDE में लॉजिक 0 लिखें। यह वॉचडॉग को निष्क्रिय कर देता है।
सुरक्षा स्तर 2 में, वॉचडॉग टाइमर को अक्षम करना संभव नहीं है, यहां तक कि ऊपर वर्णित एल्गोरिदम के साथ भी। देखें “वॉचडॉग टाइमर के कॉन्फ़िगरेशन को बदलने के लिए समयबद्ध अनुक्रम” पृष्ठ 43 पर.
सुरक्षा स्तर 1 में, MCUSR में WDE को WDRF द्वारा ओवरराइड किया जाता है। देखें “MCUSR – MCU स्थिति रजिस्टर” पृष्ठ 44 पर WDRF के विवरण के लिए। इसका मतलब है कि WDRF सेट होने पर WDE हमेशा सेट रहता है। WDE को साफ़ करने के लिए, ऊपर वर्णित प्रक्रिया के साथ वॉचडॉग को अक्षम करने से पहले WDRF को साफ़ किया जाना चाहिए। यह सुविधा विफलता पैदा करने वाली स्थितियों के दौरान कई रीसेट और विफलता के बाद सुरक्षित स्टार्ट-अप सुनिश्चित करती है।
नोट: यदि वॉचडॉग टाइमर का उपयोग एप्लिकेशन में नहीं किया जा रहा है, तो डिवाइस के आरंभीकरण में वॉचडॉग अक्षम प्रक्रिया से गुजरना महत्वपूर्ण है। यदि वॉचडॉग गलती से सक्षम हो जाता है, उदाहरण के लिएampरनअवे पॉइंटर या ब्राउन-आउट स्थिति के कारण, डिवाइस रीसेट हो जाएगा, जो बदले में एक नए वॉचडॉग रीसेट की ओर ले जाएगा। इस स्थिति से बचने के लिए, एप्लिकेशन सॉफ़्टवेयर को हमेशा आरंभीकरण रूटीन में WDRF फ़्लैग और WDE नियंत्रण बिट को साफ़ करना चाहिए।
बिट्स 5, 2:0 – WDP[3:0]: वॉचडॉग टाइमर प्रीस्केलर 3, 2, 1, और 0
WDP[3:0] बिट्स वॉचडॉग टाइमर प्रीस्केलिंग निर्धारित करते हैं जब वॉचडॉग टाइमर सक्षम होता है। विभिन्न प्रीस्केलिंग मान और उनके संगत टाइमआउट अवधियाँ नीचे दी गई हैं तालिका 8-3.
तालिका 8-3. वॉचडॉग टाइमर प्रीस्केल चयन
डब्ल्यूडीपी3 | डब्ल्यूडीपी2 | डब्ल्यूडीपी1 | डब्ल्यूडीपी0 | WDT ऑसिलेटर चक्रों की संख्या | VCC पर सामान्य टाइम-आउट = 5.0V |
0 | 0 | 0 | 0 | 2K (2048) चक्र | 16 मि.से. |
0 | 0 | 0 | 1 | 4K (4096) चक्र | 32 मि.से. |
0 | 0 | 1 | 0 | 8K (8192) चक्र | 64 मि.से. |
0 | 0 | 1 | 1 | 16K (16384) चक्र | 0.125 सेकंड |
0 | 1 | 0 | 0 | 32K (32764) चक्र | 0.25 सेकंड |
0 | 1 | 0 | 1 | 64K (65536) चक्र | 0.5 सेकंड |
0 | 1 | 1 | 0 | 128K (131072) चक्र | 1.0 सेकंड |
0 | 1 | 1 | 1 | 256K (262144) चक्र | 2.0 सेकंड |
1 | 0 | 0 | 0 | 512K (524288) चक्र | 4.0 सेकंड |
1 | 0 | 0 | 1 | 1024K (1048576) चक्र | 8.0 सेकंड |
तालिका 8-3. वॉचडॉग टाइमर प्रीस्केल चयन (जारी)
डब्ल्यूडीपी3 | डब्ल्यूडीपी2 | डब्ल्यूडीपी1 | डब्ल्यूडीपी0 | WDT ऑसिलेटर चक्रों की संख्या | VCC पर सामान्य टाइम-आउट = 5.0V |
1 | 0 | 1 | 0 | सुरक्षित(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
नोट: 1. यदि चयन किया गया है, तो 0b1010 के नीचे दी गई मान्य सेटिंग्स में से एक का उपयोग किया जाएगा।
बीच में आता है
यह अनुभाग ATtiny25/45/85 में निष्पादित इंटरप्ट हैंडलिंग की विशिष्टताओं का वर्णन करता है। AVR इंटरप्ट हैंडलिंग के सामान्य विवरण के लिए, देखें “रीसेट और इंटरप्ट हैंडलिंग” पेज 12 पर.
ATtiny25/45/85 में इंटरप्ट वेक्टर
ATtiny25/45/85 के इंटरप्ट वेक्टर का वर्णन नीचे दिया गया है तालिका 9-1नीचे।
तालिका 9-1. रीसेट और इंटरप्ट वेक्टर
वेक्टर नं. | कार्यक्रम का पता | स्रोत | व्यवधान परिभाषा |
1 | 0x0000 | रीसेट करें | बाहरी पिन, पावर-ऑन रीसेट, ब्राउन-आउट रीसेट, वॉचडॉग रीसेट |
2 | 0x0001 | इंट0 | बाह्य व्यवधान अनुरोध 0 |
3 | 0x0002 | पीसीआईएनटी0 | पिन परिवर्तन व्यवधान अनुरोध 0 |
4 | 0x0003 | टाइमर1_COMPA | टाइमर/काउंटर1 तुलना मिलान A |
5 | 0x0004 | टाइमर1_OVF | टाइमर/काउंटर1 ओवरफ़्लो |
6 | 0x0005 | टाइमर0_OVF | टाइमर/काउंटर0 ओवरफ़्लो |
7 | 0x0006 | ईई_आरडीवाई | EEPROM तैयार |
8 | 0x0007 | एना_कॉम्प | एनालॉग तुलनित्र |
9 | 0x0008 | एडीसी | ADC रूपांतरण पूर्ण |
10 | 0x0009 | टाइमर1_COMPB | टाइमर/काउंटर1 मैच बी की तुलना करें |
11 | 0x000ए | टाइमर0_COMPA | टाइमर/काउंटर0 तुलना मिलान A |
12 | 0x000B | टाइमर0_COMPB | टाइमर/काउंटर0 मैच बी की तुलना करें |
13 | 0x000C | डब्ल्यूडीटी | वॉचडॉग टाइम-आउट |
14 | 0x000डी | यूएसआई_स्टार्ट | यूएसआई स्टार्ट |
15 | 0x000ई | यूएसआई_ओवीएफ | यूएसआई ओवरफ़्लो |
यदि प्रोग्राम कभी भी किसी इंटरप्ट स्रोत को सक्षम नहीं करता है, तो इंटरप्ट वेक्टर का उपयोग नहीं किया जाता है, तथा इन स्थानों पर नियमित प्रोग्राम कोड रखा जा सकता है।
ATtiny25/45/85 में इंटरप्ट वेक्टर एड्रेस के लिए एक विशिष्ट और सामान्य सेटअप प्रोग्राम उदाहरण में दिखाया गया हैampले नीचे.
असेंबली कोड एक्सample | ||
.org 0x0000 | ;अगले का पता निर्धारित करें | कथन |
आरजेएमपी रीसेट | ; पता 0x0000 | |
आरजेएमपी INT0_ISR | ; पता 0x0001 | |
आरजेएमपी PCINT0_ISR | ; पता 0x0002 | |
आरजेएमपी TIM1_COMPA_ISR | ; पता 0x0003 | |
आरजेएमपी TIM1_OVF_ISR | ; पता 0x0004 | |
आरजेएमपी TIM0_OVF_ISR | ; पता 0x0005 | |
आरजेएमपी EE_RDY_ISR | ; पता 0x0006 | |
आरजेएमपी ANA_COMP_ISR | ; पता 0x0007 | |
आरजेएमपी ADC_ISR | ; पता 0x0008 | |
आरजेएमपी TIM1_COMPB_ISR | ; पता 0x0009 | |
आरजेएमपी TIM0_COMPA_ISR | ; पता 0x000A | |
आरजेएमपी TIM0_COMPB_ISR | ; पता 0x000B | |
आरजेएमपी WDT_ISR | ; पता 0x000C | |
आरजेएमपी USI_START_ISR | ; पता 0x000D | |
आरजेएमपी USI_OVF_ISR | ; पता 0x000E | |
रीसेट: | ; मुख्य कार्यक्रम प्रारंभ | |
; पता 0x000F | ||
… |
नोट: देखें “कोड एक्सampलेस” पेज 6 पर.
बाह्य व्यवधान
बाहरी व्यवधान INT0 पिन या PCINT[5:0] पिन में से किसी एक द्वारा ट्रिगर किए जाते हैं। ध्यान दें कि, यदि सक्षम किया गया है, तो INT0 या PCINT[5:0] पिन आउटपुट के रूप में कॉन्फ़िगर किए जाने पर भी व्यवधान ट्रिगर होंगे। यह सुविधा सॉफ़्टवेयर व्यवधान उत्पन्न करने का एक तरीका प्रदान करती है। यदि कोई सक्षम PCINT[5:0] पिन टॉगल करता है, तो पिन परिवर्तन व्यवधान PCI ट्रिगर होगा। PCMSK रजिस्टर नियंत्रित करता है कि कौन से पिन पिन परिवर्तन व्यवधान में योगदान करते हैं। PCINT[5:0] पर पिन परिवर्तन व्यवधानों का पता एसिंक्रोनस रूप से लगाया जाता है। इसका मतलब है कि इन व्यवधानों का उपयोग निष्क्रिय मोड के अलावा स्लीप मोड से भी भाग को जगाने के लिए किया जा सकता है।
INT0 इंटरप्ट को गिरते या बढ़ते किनारे या कम स्तर से ट्रिगर किया जा सकता है। इसे MCU कंट्रोल रजिस्टर - MCUCR के विनिर्देश में बताए अनुसार सेट किया गया है। जब INT0 इंटरप्ट सक्षम होता है और लेवल ट्रिगर के रूप में कॉन्फ़िगर किया जाता है, तो इंटरप्ट तब तक ट्रिगर होगा जब तक पिन कम रखा जाता है। ध्यान दें कि INT0 पर गिरते या बढ़ते किनारे के इंटरप्ट की पहचान के लिए I/O क्लॉक की उपस्थिति की आवश्यकता होती है, जिसका वर्णन में किया गया है “घड़ी प्रणालियाँ और उनका वितरण” पेज 23.
निम्न स्तर व्यवधान
INT0 पर एक निम्न स्तर की रुकावट को एसिंक्रोनस रूप से पहचाना जाता है। इसका मतलब है कि इस रुकावट का उपयोग निष्क्रिय मोड के अलावा अन्य स्लीप मोड से भी भाग को जगाने के लिए किया जा सकता है। निष्क्रिय मोड को छोड़कर सभी स्लीप मोड में I/O क्लॉक रुका हुआ है।
ध्यान दें कि यदि पावर-डाउन से वेक-अप के लिए लेवल ट्रिगर इंटरप्ट का उपयोग किया जाता है, तो MCU द्वारा लेवल इंटरप्ट को ट्रिगर करने के लिए वेक-अप को पूरा करने के लिए आवश्यक लेवल को पर्याप्त समय तक बनाए रखना चाहिए। यदि स्टार्ट-अप समय के अंत से पहले लेवल गायब हो जाता है, तो MCU अभी भी जाग जाएगा, लेकिन कोई इंटरप्ट उत्पन्न नहीं होगा। स्टार्ट-अप समय SUT और CKSEL फ़्यूज़ द्वारा परिभाषित किया गया है जैसा कि में वर्णित है “सिस्टम घड़ी और घड़ी विकल्प” पृष्ठ 23 पर.
यदि डिवाइस के सक्रिय होने से पहले इंटरप्ट पिन पर निम्न स्तर को हटा दिया जाता है, तो प्रोग्राम निष्पादन इंटरप्ट सेवा रूटीन पर नहीं जाएगा, बल्कि SLEEP कमांड के बाद दिए गए निर्देश से जारी रहेगा।
पिन परिवर्तन व्यवधान समय
एक पूर्वampपिन परिवर्तन व्यवधान के समय का ले दिखाया गया है चित्र 9-1.
रजिस्टर विवरण
MCUCR – MCU नियंत्रण रजिस्टर
बाह्य व्यवधान नियंत्रण रजिस्टर A में व्यवधान संवेदी नियंत्रण के लिए नियंत्रण बिट्स होते हैं।
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | बीओडीएस | दस्ता | SE | एसएम1 | एसएम0 | बोडसे | ISC01 | ISC00 | एमसीयूसीआर |
पढ़ें/लिखें | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | R | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट्स 1:0 – ISC0[1:0]: इंटरप्ट सेंस कंट्रोल 0 बिट 1 और बिट 0
यदि SREG I-फ़्लैग और संबंधित इंटरप्ट मास्क सेट किए गए हैं, तो बाहरी इंटरप्ट 0 बाहरी पिन INT0 द्वारा सक्रिय किया जाता है। इंटरप्ट को सक्रिय करने वाले बाहरी INT0 पिन पर स्तर और किनारे निम्न में परिभाषित किए गए हैं तालिका 9-2INT0 पिन पर मान हैampकिनारों का पता लगाने से पहले नेतृत्व किया। यदि एज या टॉगल इंटरप्ट का चयन किया जाता है, तो एक क्लॉक अवधि से अधिक समय तक चलने वाले पल्स एक इंटरप्ट उत्पन्न करेंगे। छोटे पल्स से इंटरप्ट उत्पन्न होने की गारंटी नहीं है। यदि निम्न स्तर का इंटरप्ट चुना जाता है, तो इंटरप्ट उत्पन्न करने के लिए वर्तमान में निष्पादित निर्देश के पूरा होने तक निम्न स्तर को बनाए रखना चाहिए।
तालिका 9-2. इंटरप्ट 0 सेंस कंट्रोल
ISC01 | ISC00 | विवरण |
0 | 0 | INT0 का निम्न स्तर एक व्यवधान अनुरोध उत्पन्न करता है। |
0 | 1 | INT0 पर कोई भी तार्किक परिवर्तन एक व्यवधान अनुरोध उत्पन्न करता है। |
1 | 0 | INT0 का गिरता किनारा एक व्यवधान अनुरोध उत्पन्न करता है। |
1 | 1 | INT0 का बढ़ता किनारा एक व्यवधान अनुरोध उत्पन्न करता है। |
GIMSK - जनरल इंटरप्ट मास्क रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | इंट0 | पीसीआईई | – | – | – | – | – | जिम्सकी |
पढ़ें/लिखें | R | आर/डब्ल्यू | आर/डब्ल्यू | R | R | R | R | R | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट्स 7, 4:0 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट 6 – INT0: बाहरी व्यवधान अनुरोध 0 सक्षम करें
जब INT0 बिट सेट (एक) होता है और स्टेटस रजिस्टर (SREG) में I-बिट सेट (एक) होता है, तो बाहरी पिन इंटरप्ट सक्षम होता है। MCU कंट्रोल रजिस्टर (MCUCR) में इंटरप्ट सेंस कंट्रोल0 बिट्स 1/0 (ISC01 और ISC00) यह परिभाषित करते हैं कि INT0 पिन के बढ़ते और/या गिरते किनारे या लेवल सेंस पर बाहरी इंटरप्ट सक्रिय है या नहीं। पिन पर गतिविधि एक इंटरप्ट अनुरोध का कारण बनेगी, भले ही INT0 को आउटपुट के रूप में कॉन्फ़िगर किया गया हो। बाहरी इंटरप्ट अनुरोध 0 के संगत इंटरप्ट को INT0 इंटरप्ट वेक्टर से निष्पादित किया जाता है।
बिट 5 – PCIE: पिन परिवर्तन इंटरप्ट सक्षम करें
जब PCIE बिट सेट (एक) होता है और स्टेटस रजिस्टर (SREG) में I-बिट सेट (एक) होता है, तो पिन चेंज इंटरप्ट सक्षम होता है। किसी भी सक्षम PCINT[5:0] पिन पर कोई भी परिवर्तन इंटरप्ट का कारण बनेगा। पिन चेंज इंटरप्ट रिक्वेस्ट का संगत इंटरप्ट PCI इंटरप्ट वेक्टर से निष्पादित होता है। PCINT[5:0] पिन PCMSK0 रजिस्टर द्वारा व्यक्तिगत रूप से सक्षम किए जाते हैं।
GIFR - जनरल इंटरप्ट फ्लैग रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3ए | – | INTF0 | पीसीआईएफ | – | – | – | – | – | जीआईएफआर |
पढ़ें/लिखें | R | आर/डब्ल्यू | आर/डब्ल्यू | R | R | R | R | R | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट्स 7, 4:0 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट 6 – INTF0: बाहरी इंटरप्ट फ्लैग 0
जब INT0 पिन पर एज या लॉजिक परिवर्तन किसी इंटरप्ट अनुरोध को ट्रिगर करता है, तो INTF0 सेट (एक) हो जाता है। यदि SREG में I-बिट और GIMSK में INT0 बिट सेट (एक) हैं, तो MCU संबंधित इंटरप्ट वेक्टर पर कूद जाएगा। जब इंटरप्ट रूटीन निष्पादित होता है तो फ्लैग साफ़ हो जाता है। वैकल्पिक रूप से, फ्लैग को एक लॉजिकल वन लिखकर साफ़ किया जा सकता है। यह फ्लैग हमेशा तब साफ़ होता है जब INT0 को लेवल इंटरप्ट के रूप में कॉन्फ़िगर किया जाता है।
बिट 5 – PCIF: पिन परिवर्तन इंटरप्ट फ्लैग
जब किसी PCINT[5:0] पिन पर लॉजिक परिवर्तन से इंटरप्ट रिक्वेस्ट ट्रिगर होती है, तो PCIF सेट (एक) हो जाता है। यदि SREG में I-बिट और GIMSK में PCIE बिट सेट (एक) हैं, तो MCU संबंधित इंटरप्ट वेक्टर पर कूद जाएगा। इंटरप्ट रूटीन निष्पादित होने पर फ्लैग साफ़ हो जाता है। वैकल्पिक रूप से, फ्लैग को लॉजिकल वन लिखकर साफ़ किया जा सकता है।
पीसीएमएसके - पिन चेंज मास्क रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | पीसीआईएनटी5 | पीसीआईएनटी4 | पीसीआईएनटी3 | पीसीआईएनटी2 | पीसीआईएनटी1 | पीसीआईएनटी0 | पीसीएमएसके |
पढ़ें/लिखें | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट्स 7:6 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट्स 5:0 – PCINT[5:0]: पिन परिवर्तन सक्षम मास्क 5:0
प्रत्येक PCINT[5:0] बिट यह चुनता है कि संबंधित I/O पिन पर पिन परिवर्तन व्यवधान सक्षम है या नहीं। यदि PCINT[5:0] सेट है और GIMSK में PCIE बिट सेट है, तो संबंधित I/O पिन पर पिन परिवर्तन व्यवधान सक्षम है। यदि PCINT[5:0] साफ़ है, तो संबंधित I/O पिन पर पिन परिवर्तन व्यवधान अक्षम है।
I/O पोर्ट
परिचय
सामान्य डिजिटल I/O पोर्ट के रूप में उपयोग किए जाने पर सभी AVR पोर्ट में सही रीड-मॉडिफाई-राइट कार्यक्षमता होती है। इसका मतलब है कि SBI और CBI निर्देशों के साथ किसी अन्य पिन की दिशा को अनजाने में बदले बिना एक पोर्ट पिन की दिशा बदली जा सकती है। ड्राइव वैल्यू बदलते समय (यदि आउटपुट के रूप में कॉन्फ़िगर किया गया है) या पुल-अप रेसिस्टर्स को सक्षम/अक्षम करते समय (यदि इनपुट के रूप में कॉन्फ़िगर किया गया है) यही बात लागू होती है। प्रत्येक आउटपुट बफर में उच्च सिंक और स्रोत क्षमता दोनों के साथ सममित ड्राइव विशेषताएँ होती हैं। पिन ड्राइवर इतना मजबूत होता है कि वह सीधे LED डिस्प्ले को चला सकता है। सभी पोर्ट पिन में सप्लाई-वॉल्यूम के साथ व्यक्तिगत रूप से चयन योग्य पुल-अप रेसिस्टर्स होते हैंtagई अपरिवर्तनीय प्रतिरोध। सभी I/O पिनों में VCC और ग्राउंड दोनों के लिए सुरक्षा डायोड हैं जैसा कि में दर्शाया गया है चित्र 10-1। को देखें “विद्युत अभिलक्षण” पृष्ठ 161 पर मापदंडों की पूरी सूची के लिए.
चित्र 10-1. I/O पिन समतुल्य योजनाबद्ध
इस खंड में सभी रजिस्टर और बिट संदर्भ सामान्य रूप में लिखे गए हैं। लोअर केस "x" पोर्ट के लिए नंबरिंग अक्षर को दर्शाता है, और लोअर केस "n" बिट संख्या को दर्शाता है। हालाँकि, जब किसी प्रोग्राम में रजिस्टर या बिट डिफाइन का उपयोग किया जाता है, तो सटीक फॉर्म का उपयोग किया जाना चाहिए। उदाहरण के लिएampले, पोर्ट बी में बिट नंबर 3 के लिए PORTB3, यहाँ आम तौर पर PORTxn के रूप में प्रलेखित है। भौतिक I/O रजिस्टर और बिट स्थान सूचीबद्ध हैं “पंजीकरण विवरण” पर पेज 64.
प्रत्येक पोर्ट के लिए तीन I/O मेमोरी एड्रेस लोकेशन आवंटित किए गए हैं, डेटा रजिस्टर - PORTx, डेटा डायरेक्शन रजिस्टर - DDRx, और पोर्ट इनपुट पिन - PINx के लिए एक-एक। पोर्ट इनपुट पिन I/O लोकेशन केवल पढ़ने के लिए है, जबकि डेटा रजिस्टर और डेटा डायरेक्शन रजिस्टर पढ़ने/लिखने के लिए हैं। हालाँकि, PINx रजिस्टर में एक बिट में लॉजिक वन लिखने से डेटा रजिस्टर में संबंधित बिट में टॉगल हो जाएगा। इसके अलावा, MCUCR में पुल-अप डिसेबल - PUD बिट सेट होने पर सभी पोर्ट में सभी पिन के लिए पुल-अप फ़ंक्शन को अक्षम कर देता है।
सामान्य डिजिटल I/O के रूप में I/O पोर्ट का उपयोग करने का वर्णन किया गया है “पोर्ट्स एज़ जनरल डिजिटल I/O” पृष्ठ 53 परअधिकांश पोर्ट पिन डिवाइस पर परिधीय सुविधाओं के लिए वैकल्पिक कार्यों के साथ मल्टीप्लेक्स किए जाते हैं। प्रत्येक वैकल्पिक फ़ंक्शन पोर्ट पिन के साथ कैसे हस्तक्षेप करता है, इसका वर्णन इस प्रकार किया गया है “वैकल्पिक पोर्ट फ़ंक्शन” पृष्ठ 57 परवैकल्पिक कार्यों के पूर्ण विवरण के लिए अलग-अलग मॉड्यूल अनुभाग देखें।
ध्यान दें कि कुछ पोर्ट पिनों के वैकल्पिक कार्य को सक्षम करने से पोर्ट में अन्य पिनों के सामान्य डिजिटल I/O के रूप में उपयोग पर कोई प्रभाव नहीं पड़ता है।
सामान्य डिजिटल I/O के रूप में पोर्ट
ये पोर्ट वैकल्पिक आंतरिक पुल-अप के साथ द्वि-दिशात्मक I/O पोर्ट हैं। चित्र 10-2 एक I/O-पोर्ट पिन का कार्यात्मक विवरण दिखाता है, जिसे यहां सामान्यतः Pxn कहा जाता है।
चित्र 10-2. सामान्य डिजिटल I/O(1)
पिन को कॉन्फ़िगर करना
प्रत्येक पोर्ट पिन में तीन रजिस्टर बिट्स होते हैं: DDxn, PORTxn, और PINxn। जैसा कि चित्र में दिखाया गया है “पंजीकरण विवरण” पर पेज 64, DDxn बिट्स को DDRx I/O पते पर, PORTxn बिट्स को PORTx I/O पते पर, और PINxn बिट्स को PINx I/O पते पर एक्सेस किया जाता है।
DDRx रजिस्टर में DDxn बिट इस पिन की दिशा का चयन करता है। यदि DDxn को लॉजिक वन लिखा जाता है, तो Pxn को आउटपुट पिन के रूप में कॉन्फ़िगर किया जाता है। यदि DDxn को लॉजिक जीरो लिखा जाता है, तो Pxn को इनपुट पिन के रूप में कॉन्फ़िगर किया जाता है।
यदि पिन को इनपुट पिन के रूप में कॉन्फ़िगर किए जाने पर PORTxn को लॉजिक वन लिखा जाता है, तो पुल-अप रेसिस्टर सक्रिय हो जाता है। पुल-अप रेसिस्टर को बंद करने के लिए, PORTxn को लॉजिक जीरो लिखना होगा या पिन को आउटपुट पिन के रूप में कॉन्फ़िगर करना होगा। रीसेट स्थिति सक्रिय होने पर पोर्ट पिन को ट्राई-स्टेट किया जाता है, भले ही कोई क्लॉक न चल रही हो।
यदि पिन को आउटपुट पिन के रूप में कॉन्फ़िगर किए जाने पर PORTxn को लॉजिक वन लिखा जाता है, तो पोर्ट पिन को हाई (एक) पर चलाया जाता है। यदि पिन को आउटपुट पिन के रूप में कॉन्फ़िगर किए जाने पर PORTxn को लॉजिक जीरो लिखा जाता है, तो पोर्ट पिन को लो (शून्य) पर चलाया जाता है।
पिन टॉगल करना
PINxn में लॉजिक वन लिखने से PORTxn का मान टॉगल होता है, जो DDRxn के मान से स्वतंत्र होता है। ध्यान दें कि SBI निर्देश का उपयोग पोर्ट में एक सिंगल बिट को टॉगल करने के लिए किया जा सकता है।
इनपुट और आउटपुट के बीच स्विच करना
ट्राई-स्टेट ({DDxn, PORTxn} = 0b00) और आउटपुट हाई ({DDxn, PORTxn} = 0b11) के बीच स्विच करते समय, पुल-अप सक्षम {DDxn, PORTxn} = 0b01) या आउटपुट लो ({DDxn, PORTxn} = 0b10) के साथ एक मध्यवर्ती स्थिति अवश्य होनी चाहिए। आम तौर पर, पुल-अप सक्षम स्थिति पूरी तरह से स्वीकार्य है, क्योंकि उच्च-प्रतिबाधा वाले वातावरण में एक मजबूत उच्च ड्राइवर और पुल-अप के बीच अंतर नहीं देखा जाएगा। यदि ऐसा नहीं है, तो MCUCR रजिस्टर में PUD बिट को सभी पोर्ट में सभी पुल-अप को अक्षम करने के लिए सेट किया जा सकता है।
पुल-अप और आउटपुट लो के साथ इनपुट के बीच स्विच करने से वही समस्या उत्पन्न होती है। उपयोगकर्ता को मध्यवर्ती चरण के रूप में या तो ट्राई-स्टेट ({DDxn, PORTxn} = 0b00) या आउटपुट हाई स्टेट ({DDxn, PORTxn} = 0b10) का उपयोग करना चाहिए।
तालिका 10-1 पिन मान के लिए नियंत्रण संकेतों को सारांशित करता है।
तालिका 10-1. पोर्ट पिन कॉन्फ़िगरेशन
डीडीएक्सएन | पोर्टxn | दस्ता
(एमसीयूसीआर में) |
आई/ओ | अपने आप को रोकना | टिप्पणी |
0 | 0 | X | इनपुट | नहीं | त्रि-अवस्था (Hi-Z) |
0 | 1 | 0 | इनपुट | हाँ | यदि एक्सटेंशन कम खींचा जाता है तो Pxn स्रोत धारा होगी। |
0 | 1 | 1 | इनपुट | नहीं | त्रि-अवस्था (Hi-Z) |
1 | 0 | X | उत्पादन | नहीं | आउटपुट कम (सिंक) |
1 | 1 | X | उत्पादन | नहीं | आउटपुट उच्च (स्रोत) |
पिन मूल्य पढ़ना
डेटा डायरेक्शन बिट DDxn की सेटिंग से स्वतंत्र, पोर्ट पिन को PINxn रजिस्टर बिट के माध्यम से पढ़ा जा सकता है। जैसा कि चित्र में दिखाया गया है चित्र 10-2, पिनएक्सएन रजिस्टर बिट और पूर्ववर्ती लैच एक सिंक्रोनाइज़र का निर्माण करते हैं। यदि भौतिक पिन आंतरिक घड़ी के किनारे के पास मान बदलता है, तो मेटास्टेबिलिटी से बचने के लिए इसकी आवश्यकता होती है, लेकिन यह देरी भी लाता है। चित्र 10-3 बाहरी रूप से लागू पिन मान को पढ़ते समय सिंक्रोनाइज़ेशन का समय आरेख दिखाता है। अधिकतम और न्यूनतम प्रसार विलंब को क्रमशः tpd,max और tpd,min द्वारा दर्शाया जाता है।
सिस्टम क्लॉक के पहले गिरते किनारे के तुरंत बाद शुरू होने वाली क्लॉक अवधि पर विचार करें। जब क्लॉक कम होता है तो लैच बंद हो जाता है, और जब क्लॉक अधिक होता है तो पारदर्शी हो जाता है, जैसा कि "SYNC LATCH" सिग्नल के छायांकित क्षेत्र द्वारा दर्शाया गया है। जब सिस्टम क्लॉक कम हो जाता है तो सिग्नल मान लैच हो जाता है। इसे अगले सकारात्मक क्लॉक किनारे पर PINxn रजिस्टर में क्लॉक किया जाता है। जैसा कि दो तीरों tpd,max और tpd,min द्वारा दर्शाया गया है, पिन पर एक एकल सिग्नल संक्रमण अभिकथन के समय के आधार पर ½ और 1½ सिस्टम क्लॉक अवधि के बीच विलंबित होगा।
सॉफ़्टवेयर द्वारा निर्दिष्ट पिन मान को वापस पढ़ते समय, एक nop निर्देश डाला जाना चाहिए जैसा कि नीचे दर्शाया गया है चित्र 10-4आउट निर्देश घड़ी के सकारात्मक किनारे पर "SYNC LATCH" सिग्नल सेट करता है। इस मामले में, सिंक्रोनाइज़र के माध्यम से देरी टीपीडी एक सिस्टम क्लॉक अवधि है।
निम्नलिखित कोड पूर्व:ampयह दिखाता है कि पोर्ट बी पिन 0 और 1 को उच्च, 2 और 3 को निम्न कैसे सेट किया जाए, और पोर्ट पिन 4 को निर्दिष्ट पुल-अप के साथ इनपुट के रूप में 5 से 4 तक पोर्ट पिन को कैसे परिभाषित किया जाए। परिणामी पिन मानों को फिर से पढ़ा जाता है, लेकिन जैसा कि पहले चर्चा की गई थी, कुछ पिनों को हाल ही में निर्दिष्ट मूल्य को वापस पढ़ने में सक्षम होने के लिए एक नोप निर्देश शामिल किया गया है।
असेंबली कोड एक्सample(1) |
…
; पुल-अप को परिभाषित करें और आउटपुट को उच्च पर सेट करें ; पोर्ट पिन के लिए दिशा-निर्देश निर्धारित करें ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) आउट पोर्टबी,आर16 आउट डीडीआरबी,आर17 ; सिंक्रनाइज़ेशन के लिए nop डालें नोप ; पोर्ट पिन पढ़ें r16,पिनबी में … |
नोट: असेंबली प्रोग्राम के लिए, दो अस्थायी रजिस्टरों का उपयोग पिन 0, 1 और 4 पर पुल-अप सेट करने से लेकर दिशा बिट्स के सही ढंग से सेट होने तक के समय को कम करने के लिए किया जाता है, बिट 2 और 3 को निम्न के रूप में परिभाषित किया जाता है और बिट 0 और 1 को मजबूत उच्च ड्राइवरों के रूप में पुनः परिभाषित किया जाता है।
सी कोड एक्सample |
अहस्ताक्षरित चार i;
… /* पुल-अप्स को परिभाषित करें और आउटपुट को उच्च सेट करें */ /* पोर्ट पिन के लिए दिशाएँ परिभाषित करें */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /*सिंक्रोनाइज़ेशन के लिए nop डालें*/ _एनओपी(); /* पोर्ट पिन पढ़ें */ i = PINB; … |
डिजिटल इनपुट सक्षम और स्लीप मोड
जैसा कि दिखाया गया है चित्र 10-2, डिजिटल इनपुट सिग्नल को क्ल किया जा सकता हैampश्मिट-ट्रिगर के इनपुट पर ग्राउंड से जोड़ा जाता है। चित्र में स्लीप द्वारा दर्शाया गया सिग्नल, MCU स्लीप कंट्रोलर द्वारा पावर-डाउन मोड में सेट किया जाता है ताकि यदि कुछ इनपुट सिग्नल फ्लोटिंग रह जाएं, या एनालॉग सिग्नल स्तर VCC/2 के करीब हो तो उच्च बिजली खपत से बचा जा सके।
बाहरी इंटरप्ट पिन के रूप में सक्षम पोर्ट पिन के लिए SLEEP को ओवरराइड किया जाता है। यदि बाहरी इंटरप्ट अनुरोध सक्षम नहीं है, तो SLEEP इन पिन के लिए भी सक्रिय है। SLEEP को विभिन्न अन्य वैकल्पिक फ़ंक्शन द्वारा भी ओवरराइड किया जाता है जैसा कि में वर्णित है “वैकल्पिक पोर्ट फ़ंक्शन” पृष्ठ 57 पर.
यदि लॉजिक उच्च स्तर ("एक") एक एसिंक्रोनस बाहरी इंटरप्ट पिन पर मौजूद है जिसे "राइजिंग एज, फॉलिंग एज, या पिन पर किसी भी लॉजिक परिवर्तन पर इंटरप्ट" के रूप में कॉन्फ़िगर किया गया है, जबकि बाहरी इंटरप्ट सक्षम नहीं है, तो संबंधित बाहरी इंटरप्ट फ्लैग को ऊपर उल्लिखित स्लीप मोड से फिर से शुरू करते समय सेट किया जाएगा, क्योंकि क्लampइन स्लीप मोड में रहने से अनुरोधित तर्क परिवर्तन उत्पन्न होता है।
असंबद्ध पिन
यदि कुछ पिन अप्रयुक्त हैं, तो यह सुनिश्चित करना अनुशंसित है कि इन पिनों का एक निर्धारित स्तर हो। भले ही अधिकांश डिजिटल इनपुट ऊपर वर्णित डीप स्लीप मोड में अक्षम हैं, लेकिन सभी अन्य मोड में जहां डिजिटल इनपुट सक्षम हैं (रीसेट, सक्रिय मोड और निष्क्रिय मोड) में करंट खपत को कम करने के लिए फ्लोटिंग इनपुट से बचना चाहिए।
किसी अप्रयुक्त पिन के परिभाषित स्तर को सुनिश्चित करने का सबसे सरल तरीका आंतरिक पुल-अप को सक्षम करना है। इस मामले में, रीसेट के दौरान पुल-अप अक्षम हो जाएगा। यदि रीसेट के दौरान कम बिजली की खपत महत्वपूर्ण है, तो बाहरी पुल-अप या पुलडाउन का उपयोग करने की अनुशंसा की जाती है। अप्रयुक्त पिन को सीधे VCC या GND से कनेक्ट करने की अनुशंसा नहीं की जाती है, क्योंकि यदि पिन गलती से आउटपुट के रूप में कॉन्फ़िगर हो जाता है, तो इससे अत्यधिक धाराएँ उत्पन्न हो सकती हैं।
वैकल्पिक पोर्ट फ़ंक्शन
अधिकांश पोर्ट पिनों में सामान्य डिजिटल I/O के अतिरिक्त वैकल्पिक कार्य भी होते हैं। चित्र 10-5 दिखाता है कि पोर्ट पिन सरलीकृत से संकेतों को कैसे नियंत्रित करता है चित्र 10-2 वैकल्पिक कार्यों द्वारा ओवरराइड किया जा सकता है। ओवरराइडिंग सिग्नल सभी पोर्ट पिन में मौजूद नहीं हो सकते हैं, लेकिन यह आंकड़ा AVR माइक्रोकंट्रोलर परिवार में सभी पोर्ट पिन पर लागू होने वाले सामान्य विवरण के रूप में कार्य करता है।
तालिका 10-2. वैकल्पिक कार्यों के लिए ओवरराइडिंग सिग्नल का सामान्य विवरण
सिग्नल का नाम | पूरा नाम | विवरण |
पीयूओई | पुल-अप ओवरराइड सक्षम करें | यदि यह सिग्नल सेट है, तो पुल-अप सक्षम PUOV सिग्नल द्वारा नियंत्रित होता है। यदि यह सिग्नल साफ़ है, तो पुल-अप सक्षम होता है जब
{DDxn, PORTxn, PUD} = 0b010. |
पुओव | पुल-अप ओवरराइड मान | यदि PUOE सेट है, तो PUOV सेट/क्लियर होने पर पुल-अप सक्षम/अक्षम हो जाता है, भले ही DDxn, PORTxn, और PUD रजिस्टर बिट्स की सेटिंग कुछ भी हो। |
डीडीओई | डेटा दिशा ओवरराइड सक्षम करें | यदि यह सिग्नल सेट है, तो आउटपुट ड्राइवर सक्षम को DDOV सिग्नल द्वारा नियंत्रित किया जाता है। यदि यह सिग्नल साफ़ है, तो आउटपुट ड्राइवर DDxn रजिस्टर बिट द्वारा सक्षम किया जाता है। |
डीडीओवी | डेटा दिशा ओवरराइड मान | यदि DDOE सेट है, तो DDOV सेट/साफ़ होने पर आउटपुट ड्राइवर सक्षम/अक्षम होता है, DDxn रजिस्टर बिट की सेटिंग पर ध्यान दिए बिना। |
पीवीओई | पोर्ट मान ओवरराइड सक्षम करें | यदि यह सिग्नल सेट है और आउटपुट ड्राइवर सक्षम है, तो पोर्ट मान PVOV सिग्नल द्वारा नियंत्रित होता है। यदि PVOE साफ़ है, और आउटपुट ड्राइवर सक्षम है, तो पोर्ट मान PORTxn रजिस्टर बिट द्वारा नियंत्रित होता है। |
पीवीओवी | पोर्ट मान ओवरराइड मान | यदि PVOE सेट है, तो पोर्ट मान PVOV पर सेट किया जाता है, PORTxn रजिस्टर बिट की सेटिंग पर ध्यान दिए बिना। |
पीटीओई | पोर्ट टॉगल ओवरराइड सक्षम करें | यदि PTOE सेट है, तो PORTxn रजिस्टर बिट उलटा होता है। |
डीआईईओई | डिजिटल इनपुट सक्षम ओवरराइड सक्षम | यदि यह बिट सेट है, तो डिजिटल इनपुट सक्षम को DIEOV सिग्नल द्वारा नियंत्रित किया जाता है। यदि यह सिग्नल साफ़ है, तो डिजिटल इनपुट सक्षम को MCU स्थिति (सामान्य मोड, स्लीप मोड) द्वारा निर्धारित किया जाता है। |
डिओव | डिजिटल इनपुट सक्षम ओवरराइड मान | यदि DIEOE सेट है, तो DIEOV सेट/साफ़ होने पर डिजिटल इनपुट सक्षम/अक्षम हो जाता है, चाहे MCU स्थिति (सामान्य मोड, स्लीप मोड) कुछ भी हो। |
DI | डिजिटल इनपुट | यह वैकल्पिक कार्यों के लिए डिजिटल इनपुट है। चित्र में, सिग्नल श्मिट-ट्रिगर के आउटपुट से जुड़ा हुआ है, लेकिन सिंक्रोनाइज़र से पहले। जब तक डिजिटल इनपुट को क्लॉक स्रोत के रूप में उपयोग नहीं किया जाता है, तब तक वैकल्पिक फ़ंक्शन वाला मॉड्यूल अपने स्वयं के सिंक्रोनाइज़र का उपयोग करेगा। |
एआईओ | एनालॉग इनपुट / आउटपुट | यह वैकल्पिक कार्यों के लिए एनालॉग इनपुट/आउटपुट है। सिग्नल सीधे पैड से जुड़ा होता है, और इसे द्वि-दिशात्मक रूप से इस्तेमाल किया जा सकता है। |
निम्नलिखित उपखंड प्रत्येक पोर्ट के लिए वैकल्पिक कार्यों का संक्षिप्त विवरण देते हैं, तथा ओवरराइडिंग सिग्नल को वैकल्पिक कार्य से जोड़ते हैं। अधिक जानकारी के लिए वैकल्पिक कार्य विवरण देखें।
पोर्ट बी के वैकल्पिक कार्य
वैकल्पिक कार्य वाले पोर्ट बी पिन नीचे दिखाए गए हैं तालिका 10-3.
तालिका 10-3. पोर्ट बी पिन के वैकल्पिक कार्य
पोर्ट पिन | वैकल्पिक कार्य |
पीबी5 | ![]() रीसेट: पिन रीसेट करें dW: debugWIRE I/O ADC0: ADC इनपुट चैनल 0 PCINT5: पिन परिवर्तन व्यवधान, स्रोत 5 |
पीबी4 | XTAL2: क्रिस्टल ऑसिलेटर आउटपुट CLKO: सिस्टम क्लॉक आउटपुट ADC2: ADC इनपुट चैनल 2
OC1B: टाइमर/काउंटर1 तुलना मिलान B आउटपुट PCINT4: पिन परिवर्तन इंटरप्ट 0, स्रोत 4 |
पीबी3 | XTAL1: क्रिस्टल ऑसिलेटर इनपुट CLKI: बाहरी क्लॉक इनपुट ADC3: ADC इनपुट चैनल 3
OC1B: पूरक टाइमर/काउंटर1 तुलना मिलान B आउटपुट PCINT3: पिन परिवर्तन इंटरप्ट 0, स्रोत 3 |
पीबी2 | SCK: सीरियल क्लॉक इनपुट ADC1: ADC इनपुट चैनल 1
T0: टाइमर/काउंटर0 घड़ी स्रोत USCK: USI घड़ी (तीन तार मोड) SCL: USI घड़ी (दो तार मोड) INT0: बाहरी रुकावट 0 इनपुट PCINT2: पिन परिवर्तन रुकावट 0, स्रोत 2 |
पीबी1 | MISO: SPI मास्टर डेटा इनपुट / स्लेव डेटा आउटपुट AIN1: एनालॉग तुलनित्र, नकारात्मक इनपुट OC0B: टाइमर/काउंटर0 मिलान B की तुलना करें आउटपुट OC1A: टाइमर/काउंटर1 मिलान A की तुलना करें आउटपुट DO: USI डेटा आउटपुट (तीन तार मोड) PCINT1: पिन परिवर्तन इंटरप्ट 0, स्रोत 1 |
पीबी0 | MOSI:: SPI मास्टर डेटा आउटपुट / स्लेव डेटा इनपुट AIN0: एनालॉग तुलनित्र, सकारात्मक इनपुट
OC0A: टाइमर/काउंटर0 तुलना मिलान A आउटपुट OC1A: पूरक टाइमर/काउंटर1 तुलना मिलान A आउटपुट DI: USI डेटा इनपुट (तीन तार मोड) SDA: USI डेटा इनपुट (दो वायर मोड) AREF: बाहरी एनालॉग संदर्भ PCINT0: पिन परिवर्तन इंटरप्ट 0, स्रोत 0 |
पोर्ट B, बिट 5 – RESET/dW/ADC0/PCINT5
रीसेट: बाहरी रीसेट इनपुट सक्रिय कम है और RSTDISBL फ़्यूज़ को अनप्रोग्रामिंग ("1") करके सक्षम किया जाता है। जब पिन को रीसेट पिन के रूप में उपयोग किया जाता है, तो पुलअप सक्रिय हो जाता है और आउटपुट ड्राइवर और डिजिटल इनपुट निष्क्रिय हो जाते हैं।
dW: जब debugWIRE सक्षम (DWEN) फ़्यूज़ को प्रोग्राम किया जाता है और लॉक बिट्स को अनप्रोग्राम किया जाता है, तो लक्ष्य डिवाइस के भीतर debugWIRE सिस्टम सक्रिय हो जाता है। रीसेट पोर्ट पिन को वायर-एंड (ओपन-ड्रेन) द्वि-दिशात्मक I/O पिन के रूप में कॉन्फ़िगर किया जाता है जिसमें पुल-अप सक्षम होता है और यह लक्ष्य और एमुलेटर के बीच संचार गेटवे बन जाता है।
ADC0: एनालॉग से डिजिटल कनवर्टर, चैनल 0.
PCINT5: पिन परिवर्तन इंटरप्ट स्रोत 5.
पोर्ट B, बिट 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4
XTAL2: चिप क्लॉक ऑसिलेटर पिन 2. आंतरिक कैलिब्रेटेबल RC ऑसिलेटर और बाहरी क्लॉक को छोड़कर सभी चिप क्लॉक स्रोतों के लिए क्लॉक पिन के रूप में उपयोग किया जाता है। जब क्लॉक पिन के रूप में उपयोग किया जाता है, तो पिन को I/O पिन के रूप में उपयोग नहीं किया जा सकता है। चिप क्लॉक स्रोतों के रूप में आंतरिक कैलिब्रेटेबल RC ऑसिलेटर या बाहरी क्लॉक का उपयोग करते समय, PB4 एक साधारण I/O पिन के रूप में कार्य करता है।
CLKO: विभाजित सिस्टम क्लॉक को पिन PB4 पर आउटपुट किया जा सकता है। विभाजित सिस्टम क्लॉक आउटपुट होगा यदि CKOUT फ़्यूज़ को प्रोग्राम किया गया है, PORTB4 और DDB4 सेटिंग की परवाह किए बिना। यह रीसेट के दौरान भी आउटपुट होगा।
ADC2: एनालॉग से डिजिटल कनवर्टर, चैनल 2.
OC1B: आउटपुट तुलना मिलान आउटपुट: PB4 पिन टाइमर/काउंटर1 तुलना मिलान B के लिए बाहरी आउटपुट के रूप में काम कर सकता है जब इसे आउटपुट (DDB4 सेट) के रूप में कॉन्फ़िगर किया जाता है। OC1B पिन PWM मोड टाइमर फ़ंक्शन के लिए आउटपुट पिन भी है।
PCINT4: पिन परिवर्तन इंटरप्ट स्रोत 4.
पोर्ट बी, बिट 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3
XTAL1: चिप क्लॉक ऑसिलेटर पिन 1. आंतरिक कैलिब्रेटेबल RC ऑसिलेटर को छोड़कर सभी चिप क्लॉक स्रोतों के लिए उपयोग किया जाता है। जब क्लॉक पिन के रूप में उपयोग किया जाता है, तो पिन को I/O पिन के रूप में उपयोग नहीं किया जा सकता है।
CLKI: बाहरी घड़ी स्रोत से घड़ी इनपुट, देखें “बाहरी घड़ी” पेज 26 पर.
ADC3: एनालॉग से डिजिटल कनवर्टर, चैनल 3.
OC1B: उलटा आउटपुट तुलना मिलान आउटपुट: PB3 पिन टाइमर/काउंटर1 तुलना मिलान B के लिए बाहरी आउटपुट के रूप में काम कर सकता है जब इसे आउटपुट (DDB3 सेट) के रूप में कॉन्फ़िगर किया जाता है। OC1B पिन PWM मोड टाइमर फ़ंक्शन के लिए उलटा आउटपुट पिन भी है।
PCINT3: पिन परिवर्तन इंटरप्ट स्रोत 3.
पोर्ट बी, बिट 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
SCK: SPI चैनल के लिए मास्टर क्लॉक आउटपुट, स्लेव क्लॉक इनपुट पिन। जब SPI को स्लेव के रूप में सक्षम किया जाता है, तो यह पिन DDB2 की सेटिंग की परवाह किए बिना इनपुट के रूप में कॉन्फ़िगर किया जाता है। जब SPI को मास्टर के रूप में सक्षम किया जाता है, तो इस पिन की डेटा दिशा DDPB2 द्वारा नियंत्रित होती है। जब SPI द्वारा पिन को इनपुट होने के लिए मजबूर किया जाता है, तो पुल-अप को अभी भी PORTB2 बिट द्वारा नियंत्रित किया जा सकता है।
ADC1: एनालॉग से डिजिटल कनवर्टर, चैनल 1.
T0: टाइमर/काउंटर0 काउंटर स्रोत.
यूएससीके: तीन-तार मोड यूनिवर्सल सीरियल इंटरफ़ेस घड़ी।
एससीएल: यूएसआई दो-तार मोड के लिए दो-तार मोड सीरियल घड़ी।
INT0: बाह्य व्यवधान स्रोत 0.
PCINT2: पिन परिवर्तन इंटरप्ट स्रोत 2.
पोर्ट बी, बिट 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1
MISO: SPI चैनल के लिए मास्टर डेटा इनपुट, स्लेव डेटा आउटपुट पिन। जब SPI को मास्टर के रूप में सक्षम किया जाता है, तो यह पिन DDB1 की सेटिंग की परवाह किए बिना इनपुट के रूप में कॉन्फ़िगर किया जाता है। जब SPI को स्लेव के रूप में सक्षम किया जाता है, तो इस पिन की डेटा दिशा DDB1 द्वारा नियंत्रित होती है। जब SPI द्वारा पिन को इनपुट होने के लिए मजबूर किया जाता है, तो पुल-अप को अभी भी PORTB1 बिट द्वारा नियंत्रित किया जा सकता है।
AIN1: एनालॉग तुलनित्र नकारात्मक इनपुट। डिजिटल पोर्ट फ़ंक्शन को एनालॉग तुलनित्र के फ़ंक्शन में हस्तक्षेप करने से रोकने के लिए आंतरिक पुल-अप को बंद करके पोर्ट पिन को इनपुट के रूप में कॉन्फ़िगर करें।
OC0B: आउटपुट तुलना मिलान आउटपुट। PB1 पिन टाइमर/काउंटर0 तुलना मिलान B के लिए बाहरी आउटपुट के रूप में काम कर सकता है। इस फ़ंक्शन को पूरा करने के लिए PB1 पिन को आउटपुट (DDB1 सेट (एक)) के रूप में कॉन्फ़िगर किया जाना चाहिए। OC0B पिन PWM मोड टाइमर फ़ंक्शन के लिए आउटपुट पिन भी है।
OC1A: आउटपुट तुलना मिलान आउटपुट: PB1 पिन टाइमर/काउंटर1 तुलना मिलान B के लिए बाहरी आउटपुट के रूप में काम कर सकता है जब इसे आउटपुट (DDB1 सेट) के रूप में कॉन्फ़िगर किया जाता है। OC1A पिन PWM मोड टाइमर फ़ंक्शन के लिए आउटपुट पिन भी है।
DO: थ्री-वायर मोड यूनिवर्सल सीरियल इंटरफ़ेस डेटा आउटपुट। थ्री-वायर मोड डेटा आउटपुट PORTB1 मान को ओवरराइड करता है और डेटा दिशा बिट DDB1 सेट होने पर इसे पोर्ट पर भेजा जाता है (एक)। यदि दिशा इनपुट है और PORTB1 सेट है (एक), तो PORTB1 अभी भी पुल-अप को सक्षम करता है।
PCINT1: पिन परिवर्तन इंटरप्ट स्रोत 1.
पोर्ट बी, बिट 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
MOSI: SPI चैनल के लिए SPI मास्टर डेटा आउटपुट, स्लेव डेटा इनपुट। जब SPI को स्लेव के रूप में सक्षम किया जाता है, तो यह पिन DDB0 की सेटिंग की परवाह किए बिना इनपुट के रूप में कॉन्फ़िगर किया जाता है। जब SPI को मास्टर के रूप में सक्षम किया जाता है, तो इस पिन की डेटा दिशा DDB0 द्वारा नियंत्रित होती है। जब SPI द्वारा पिन को इनपुट होने के लिए मजबूर किया जाता है, तो पुल-अप को अभी भी PORTB0 बिट द्वारा नियंत्रित किया जा सकता है।
AIN0: एनालॉग तुलनित्र सकारात्मक इनपुट। डिजिटल पोर्ट फ़ंक्शन को एनालॉग तुलनित्र के फ़ंक्शन में हस्तक्षेप करने से रोकने के लिए आंतरिक पुल-अप को बंद करके पोर्ट पिन को इनपुट के रूप में कॉन्फ़िगर करें।
OC0A: आउटपुट तुलना मिलान आउटपुट। PB0 पिन टाइमर/काउंटर0 तुलना मिलान A के लिए बाहरी आउटपुट के रूप में काम कर सकता है जब इसे आउटपुट (DDB0 सेट (एक)) के रूप में कॉन्फ़िगर किया जाता है। OC0A पिन PWM मोड टाइमर फ़ंक्शन के लिए आउटपुट पिन भी है।
OC1A: उलटा आउटपुट तुलना मिलान आउटपुट: PB0 पिन टाइमर/काउंटर1 तुलना मिलान B के लिए बाहरी आउटपुट के रूप में काम कर सकता है जब इसे आउटपुट (DDB0 सेट) के रूप में कॉन्फ़िगर किया जाता है। OC1A पिन PWM मोड टाइमर फ़ंक्शन के लिए उलटा आउटपुट पिन भी है।
एसडीए: दो-तार मोड सीरियल इंटरफ़ेस डेटा।
AREF: ADC के लिए बाहरी एनालॉग संदर्भ। जब पिन को बाहरी संदर्भ या आंतरिक वॉल्यूम के रूप में उपयोग किया जाता है, तो PB0 पर पुलअप और आउटपुट ड्राइवर अक्षम हो जाते हैंtagई. एआरईएफ पिन पर बाह्य संधारित्र के साथ संदर्भ।
DI: USI थ्री-वायर मोड में डेटा इनपुट। USI थ्री-वायर मोड सामान्य पोर्ट फ़ंक्शन को ओवरराइड नहीं करता है, इसलिए पिन को DI फ़ंक्शन के लिए इनपुट के रूप में कॉन्फ़िगर किया जाना चाहिए।
PCINT0: पिन परिवर्तन इंटरप्ट स्रोत 0.
तालिका 10-4 और तालिका 10-5 पोर्ट बी के वैकल्पिक कार्यों को दिखाए गए ओवरराइडिंग सिग्नल से संबंधित करें चित्र 10-5 पर पेज 58.
तालिका 10-4. पीबी[5:3] में वैकल्पिक कार्यों के लिए ओवरराइडिंग सिग्नल
सिग्नल का नाम | PB5/रीसेट/ ADC0/PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
पीयूओई | ![]() |
0 | 0 |
पुओव | 1 | 0 | 0 |
डीडीओई | आरएसटीडीआईएसबीएल(1) • ड्वेन(1) | 0 | 0 |
डीडीओवी | डिबगवायर ट्रांसमिट | 0 | 0 |
पीवीओई | 0 | OC1B सक्षम करें | ![]() OC1B सक्षम करें |
पीवीओवी | 0 | OC1B | OC1B |
पीटीओई | 0 | 0 | 0 |
डीआईईओई | ![]() आरएसटीडीआईएसबीएल(1) + (पीसीआईएनटी5 • पीसीआईई + एडीसी0डी) |
पीसीआईएनटी4 • पीसीआईई + एडीसी2डी | पीसीआईएनटी3 • पीसीआईई + एडीसी3डी |
डिओव | एडीसी0डी | एडीसी2डी | एडीसी3डी |
DI | PCINT5 इनपुट | PCINT4 इनपुट | PCINT3 इनपुट |
एआईओ | रीसेट इनपुट, ADC0 इनपुट | ADC2 इनपुट | ADC3 इनपुट |
नोट: जब फ्यूज "0" (प्रोग्राम्ड) हो।
तालिका 10-5. पीबी[2:0] में वैकल्पिक कार्यों के लिए ओवरराइडिंग सिग्नल
सिग्नल का नाम | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
पीसीआईएनटी0 |
पीयूओई | यूएसआई_TWO_WIRE | 0 | यूएसआई_TWO_WIRE |
पुओव | 0 | 0 | 0 |
डीडीओई | यूएसआई_TWO_WIRE | 0 | यूएसआई_TWO_WIRE |
डीडीओवी | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (एसडीए + पोर्टबी0) • डीडीबी0 |
पीवीओई | USI_TWO_WIRE • DDB2 | OC0B सक्षम + OC1A सक्षम + USI_THREE_WIRE | ![]() OC0A सक्षम + OC1A सक्षम + (USI_TWO_WIRE डीडीबी0) |
पीवीओवी | 0 | OC0B + OC1A + डीओ | ![]() ओसी0ए + ओसी1ए |
पीटीओई | यूएसआईटीसी | 0 | 0 |
डीआईईओई | पीसीआईएनटी2 • पीसीआईई + एडीसी1डी + यूएसआईएसआईई | पीसीआईएनटी1 • पीसीआईई + एआईएन1डी | PCINT0 • PCIE + AIN0D + USISIE |
डिओव | एडीसी1डी | एआईएन1डी | एआईएन0डी |
DI | टी0/यूएससीके/एससीएल/INT0/
PCINT2 इनपुट |
PCINT1 इनपुट | DI/SDA/PCINT0 इनपुट |
एआईओ | ADC1 इनपुट | एनालॉग तुलनित्र नकारात्मक इनपुट | एनालॉग तुलनित्र सकारात्मक इनपुट |
रजिस्टर विवरण
MCUCR – MCU नियंत्रण रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | बीओडीएस | दस्ता | SE | एसएम1 | एसएम0 | बोडसे | ISC01 | ISC00 | एमसीयूसीआर |
पढ़ें/लिखें | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | R | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
बिट 6 – PUD: पुल-अप अक्षम
जब इस बिट को एक में लिखा जाता है, तो I/O पोर्ट में पुल-अप अक्षम हो जाते हैं, भले ही DDxn और PORTxn रजिस्टर पुल-अप को सक्षम करने के लिए कॉन्फ़िगर किए गए हों ({DDxn, PORTxn} = 0b01)। देखें “पिन कॉन्फ़िगर करना” पेज 54 पर इस सुविधा के बारे में अधिक जानकारी के लिए यहां क्लिक करें.
PORTB – पोर्ट B डेटा रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | पोर्टबी5 | पोर्टबी4 | पोर्टबी3 | पोर्टबी2 | पोर्टबी1 | पोर्टबी0 | पोर्टो |
पढ़ें/लिखें | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
डीडीआरबी – पोर्ट बी डेटा डायरेक्शन रजिस्टर
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | डीडीबी5 | डीडीबी4 | डीडीबी3 | डीडीबी2 | डीडीबी1 | डीडीबी0 | डीडीआरबी |
पढ़ें/लिखें | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
पिनबी – पोर्ट बी इनपुट पिन पता
अंश | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | पिनब ५ | पिनब ५ | पिनब ५ | पिनब ५ | पिनब ५ | पिनब ५ | पिनब |
पढ़ें/लिखें | R | R | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | आर/डब्ल्यू | |
आरंभिक मूल्य | 0 | 0 | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए | एन/ए |
8-बिट टाइमर/काउंटर0 PWM के साथ
विशेषताएँ
दो स्वतंत्र आउटपुट तुलना इकाइयाँ
डबल बफ़र्ड आउटपुट तुलना रजिस्टर
तुलना मिलान पर टाइमर साफ़ करें (स्वतः पुनः लोड)
गड़बड़ी मुक्त, चरण सही पल्स चौड़ाई मॉड्यूलेटर (PWM)
परिवर्तनीय PWM अवधि
आवृत्ति जनरेटर
तीन स्वतंत्र व्यवधान स्रोत (TOV0, OCF0A, और OCF0B)
ऊपरview
टाइमर/काउंटर0 एक सामान्य प्रयोजन 8-बिट टाइमर/काउंटर मॉड्यूल है, जिसमें दो स्वतंत्र आउटपुट तुलना इकाइयाँ हैं, और PWM समर्थन है। यह सटीक प्रोग्राम निष्पादन समय (इवेंट प्रबंधन) और तरंग उत्पादन की अनुमति देता है।
8-बिट टाइमर/काउंटर का सरलीकृत ब्लॉक आरेख नीचे दिखाया गया है चित्र 11-1I/O पिनों के वास्तविक स्थान के लिए, देखें “पिनआउट ATtiny25/45/85” पृष्ठ 2 पर. CPU एक्सेसिबल I/O रजिस्टर, जिसमें I/O बिट्स और I/O पिन शामिल हैं, बोल्ड में दिखाए गए हैं। डिवाइस-विशिष्ट I/O रजिस्टर और बिट स्थान सूची में सूचीबद्ध हैं। “रजिस्टर विवरण” पृष्ठ 77 पर.
टाइमर/काउंटर (TCNT0) और आउटपुट तुलना रजिस्टर (OCR0A और OCR0B) 8-बिट रजिस्टर हैं। इंटरप्ट रिक्वेस्ट (चित्र में Int.Req. के रूप में संक्षिप्त) सिग्नल सभी टाइमर इंटरप्ट फ्लैग रजिस्टर (TIFR) में दिखाई देते हैं। सभी इंटरप्ट को टाइमर इंटरप्ट मास्क रजिस्टर (TIMSK) के साथ व्यक्तिगत रूप से मास्क किया जाता है। चित्र में TIFR और TIMSK नहीं दिखाए गए हैं।
टाइमर/काउंटर को आंतरिक रूप से, प्रीस्केलर के माध्यम से, या T0 पिन पर बाहरी क्लॉक स्रोत द्वारा क्लॉक किया जा सकता है। क्लॉक सेलेक्ट लॉजिक ब्लॉक नियंत्रित करता है कि टाइमर/काउंटर अपने मूल्य को बढ़ाने (या घटाने) के लिए किस क्लॉक स्रोत और किनारे का उपयोग करता है। जब कोई क्लॉक स्रोत नहीं चुना जाता है तो टाइमर/काउंटर निष्क्रिय हो जाता है। क्लॉक सेलेक्ट लॉजिक से आउटपुट को टाइमर क्लॉक (clkT0) कहा जाता है।
डबल बफर्ड आउटपुट तुलना रजिस्टर (OCR0A और OCR0B) की तुलना हर समय टाइमर/काउंटर मान से की जाती है। तुलना के परिणाम का उपयोग आउटपुट तुलना पिन (OC0A और OC0B) पर PWM या परिवर्तनीय आवृत्ति आउटपुट उत्पन्न करने के लिए वेवफॉर्म जेनरेटर द्वारा किया जा सकता है। पृष्ठ 69 पर “आउटपुट तुलना इकाई” देखें। अधिक जानकारी के लिए देखें। तुलना मिलान इवेंट तुलना ध्वज (OCF0A या OCF0B) भी सेट करेगा जिसका उपयोग आउटपुट तुलना इंटरप्ट अनुरोध उत्पन्न करने के लिए किया जा सकता है।
परिभाषाएं
इस अनुभाग में कई रजिस्टर और बिट संदर्भ सामान्य रूप में लिखे गए हैं। एक लोअर केस “n” टाइमर/काउंटर नंबर की जगह लेता है, इस मामले में 0. एक लोअर केस “x” आउटपुट तुलना इकाई की जगह लेता है, इस मामले में तुलना इकाई A या तुलना इकाई B. हालाँकि, जब किसी प्रोग्राम में रजिस्टर या बिट परिभाषित का उपयोग किया जाता है, तो सटीक रूप का उपयोग किया जाना चाहिए, यानी, टाइमर/काउंटर0 काउंटर मान और इसी तरह तक पहुँचने के लिए TCNT0.
परिभाषाएँ तालिका 11-1 पूरे दस्तावेज़ में भी व्यापक रूप से उपयोग किया गया है।
तालिका 11-1. परिभाषाएं
स्थिर | विवरण |
तल | जब काउंटर 0x00 हो जाता है तो यह नीचे पहुंच जाता है |
मैक्स | काउंटर अपने अधिकतम स्तर पर तब पहुंचता है जब यह 0xFF (दशमलव 255) हो जाता है |
शीर्ष | काउंटर TOP पर तब पहुंचता है जब यह गिनती अनुक्रम में उच्चतम मान के बराबर हो जाता है। TOP मान को निश्चित मान 0xFF (MAX) या OCR0A रजिस्टर में संग्रहीत मान के रूप में निर्दिष्ट किया जा सकता है। असाइनमेंट ऑपरेशन के मोड पर निर्भर करता है |
टाइमर/काउंटर प्रीस्केलर और घड़ी स्रोत
टाइमर/काउंटर को आंतरिक या बाहरी क्लॉक स्रोत द्वारा क्लॉक किया जा सकता है। क्लॉक स्रोत का चयन क्लॉक सेलेक्ट लॉजिक द्वारा किया जाता है जिसे टाइमर/काउंटर0 कंट्रोल रजिस्टर (TCCR0B) में स्थित क्लॉक सेलेक्ट (c) बिट्स द्वारा नियंत्रित किया जाता है।
प्रीस्केलर के साथ आंतरिक घड़ी स्रोत
टाइमर/काउंटर0 को सीधे सिस्टम क्लॉक द्वारा क्लॉक किया जा सकता है (CS0[2:0] = 1 सेट करके)। यह सबसे तेज़ संचालन प्रदान करता है, जिसमें अधिकतम टाइमर/काउंटर क्लॉक आवृत्ति सिस्टम क्लॉक आवृत्ति (fCLK_I/O) के बराबर होती है। वैकल्पिक रूप से, प्रीस्केलर से चार टैप में से एक को क्लॉक स्रोत के रूप में इस्तेमाल किया जा सकता है। प्रीस्केल्ड क्लॉक की आवृत्ति या तो होती है
प्रीस्केलर रीसेट
प्रीस्केलर स्वतंत्र रूप से चलता है, यानी यह टाइमर/काउंटर0 के क्लॉक सेलेक्ट लॉजिक से स्वतंत्र रूप से संचालित होता है। चूंकि प्रीस्केलर टाइमर/काउंटर के क्लॉक सेलेक्ट से प्रभावित नहीं होता है, इसलिए प्रीस्केलर की स्थिति उन स्थितियों के लिए निहितार्थ होगी जहां प्रीस्केल्ड क्लॉक का उपयोग किया जाता है। एक उदाहरणampप्रीस्केलिंग आर्टिफैक्ट की शुरुआत तब होती है जब टाइमर/काउंटर को सक्षम किया जाता है और प्रीस्केलर द्वारा क्लॉक किया जाता है (6 > CS0[2:0] > 1)। टाइमर सक्षम होने से लेकर पहली गिनती होने तक सिस्टम क्लॉक चक्रों की संख्या 1 से N+1 सिस्टम क्लॉक चक्रों तक हो सकती है, जहाँ N प्रीस्केलर विभाजक (8, 64, 256, या 1024) के बराबर होता है।
टाइमर/काउंटर को प्रोग्राम निष्पादन के साथ समन्वयित करने के लिए प्रीस्केलर रीसेट का उपयोग करना संभव है।
बाहरी घड़ी स्रोत
T0 पिन पर लागू बाहरी घड़ी स्रोत को टाइमर/काउंटर घड़ी (clkT0) के रूप में इस्तेमाल किया जा सकता है। T0 पिन कोampपिन सिंक्रोनाइजेशन लॉजिक द्वारा प्रत्येक सिस्टम क्लॉक चक्र में एक बार नेतृत्व किया जाता है।ampएलईडी) सिग्नल तब पारित किया जाता है
एज डिटेक्टर के माध्यम से. चित्र 11-2 T0 सिंक्रोनाइजेशन और एज डिटेक्टर लॉजिक का एक कार्यात्मक समतुल्य ब्लॉक आरेख दिखाता है। रजिस्टर आंतरिक सिस्टम क्लॉक (clkI/O) के सकारात्मक किनारे पर क्लॉक किए जाते हैं। आंतरिक सिस्टम क्लॉक की उच्च अवधि में लैच पारदर्शी होता है।
एज डिटेक्टर प्रत्येक सकारात्मक (CS0[0:2] = 0) या नकारात्मक (CS7[0:2] = 0) एज के लिए एक clkT6 पल्स उत्पन्न करता है।
किसी भी पल्स चौड़ाई मॉड्यूलेशन (PWM) मोड का उपयोग करते समय OCR0x रजिस्टर डबल बफर्ड होते हैं। संचालन के सामान्य और क्लियर टाइमर ऑन कम्पेयर (CTC) मोड के लिए, डबल बफरिंग अक्षम है। डबल बफरिंग OCR0x कम्पेयर रजिस्टर के अपडेट को गिनती अनुक्रम के ऊपर या नीचे सिंक्रोनाइज़ करता है। सिंक्रोनाइज़ेशन विषम-लंबाई, गैर-सममित PWM पल्स की घटना को रोकता है, जिससे आउटपुट गड़बड़-मुक्त हो जाता है।
OCR0x रजिस्टर एक्सेस जटिल लग सकता है, लेकिन ऐसा नहीं है। जब डबल बफरिंग सक्षम होती है, तो CPU के पास OCR0x बफर रजिस्टर तक पहुंच होती है, और यदि डबल बफरिंग अक्षम होती है तो CPU सीधे OCR0x तक पहुंच जाएगा।
बल आउटपुट की तुलना करें
गैर-PWM तरंग निर्माण मोड में, तुलनित्र के मिलान आउटपुट को फोर्स आउटपुट कम्पेयर (FOC0x) बिट में एक लिखकर मजबूर किया जा सकता है। तुलना मिलान को मजबूर करने से OCF0x फ्लैग सेट नहीं होगा या टाइमर को फिर से लोड/साफ़ नहीं किया जाएगा, लेकिन OC0x पिन को अपडेट किया जाएगा जैसे कि एक वास्तविक तुलना मिलान हुआ था (COM0x[1:0] बिट्स सेटिंग परिभाषित करती है कि OC0x पिन सेट है, साफ़ है या टॉगल किया गया है)।
TCNT0 द्वारा मिलान अवरोधन की तुलना करें लिखें
TCNT0 रजिस्टर में सभी CPU लेखन ऑपरेशन अगले टाइमर क्लॉक चक्र में होने वाले किसी भी तुलना मिलान को ब्लॉक कर देंगे, भले ही टाइमर बंद हो। यह सुविधा OCR0x को टाइमर/काउंटर क्लॉक सक्षम होने पर बिना किसी रुकावट के TCNT0 के समान मान पर आरंभ करने की अनुमति देती है।
आउटपुट तुलना इकाई का उपयोग करना
चूँकि किसी भी संचालन मोड में TCNT0 लिखने से एक टाइमर क्लॉक चक्र के लिए सभी तुलना मिलान अवरुद्ध हो जाएँगे, आउटपुट तुलना इकाई का उपयोग करते समय TCNT0 को बदलने पर जोखिम शामिल हैं, चाहे टाइमर/काउंटर चल रहा हो या नहीं। यदि TCNT0 में लिखा गया मान OCR0x मान के बराबर है, तो तुलना मिलान छूट जाएगा, जिसके परिणामस्वरूप गलत तरंग निर्माण होगा। इसी तरह, जब काउंटर डाउन-काउंटिंग कर रहा हो, तो TCNT0 मान को BOTTOM के बराबर न लिखें।
पोर्ट पिन के लिए डेटा डायरेक्शन रजिस्टर को आउटपुट पर सेट करने से पहले OC0x का सेटअप किया जाना चाहिए। OC0x मान सेट करने का सबसे आसान तरीका नॉर्मल मोड में फ़ोर्स आउटपुट कम्पेयर (FOC0x) स्ट्रोब बिट्स का उपयोग करना है। OC0x रजिस्टर वेवफ़ॉर्म जेनरेशन मोड के बीच बदलते समय भी अपना मान बनाए रखते हैं।
ध्यान रखें कि COM0x[1:0] बिट्स को तुलना मान के साथ डबल बफर नहीं किया जाता है। COM0x[1:0] बिट्स को बदलने से तुरंत प्रभाव पड़ेगा।
आउटपुट यूनिट की तुलना करें
तुलना आउटपुट मोड (COM0x[1:0]) बिट्स के दो कार्य हैं। वेवफॉर्म जेनरेटर अगले तुलना मैच में आउटपुट तुलना (OC0x) स्थिति को परिभाषित करने के लिए COM1x[0:0] बिट्स का उपयोग करता है। इसके अलावा, COM0x[1:0] बिट्स OC0x पिन आउटपुट स्रोत को नियंत्रित करते हैं। चित्र 11-6 COM0x[1:0] बिट सेटिंग द्वारा प्रभावित तर्क का एक सरलीकृत योजनाबद्ध दिखाता है। चित्र में I/O रजिस्टर, I/O बिट्स और I/O पिन बोल्ड में दिखाए गए हैं। केवल सामान्य I/O पोर्ट कंट्रोल रजिस्टर (DDR और PORT) के वे हिस्से दिखाए गए हैं जो COM0x[1:0] बिट्स से प्रभावित होते हैं। OC0x स्थिति का संदर्भ देते समय, संदर्भ आंतरिक OC0x रजिस्टर के लिए है, OC0x पिन के लिए नहीं। यदि सिस्टम रीसेट होता है, तो OC0x रजिस्टर "0" पर रीसेट हो जाता है।
जब OC0A/OC0B को I/O पिन से जोड़ा जाता है, तो COM0A[1:0]/COM0B[1:0] बिट्स का कार्य WGM0[2:0] बिट सेटिंग पर निर्भर करता है। तालिका 11-2 जब WGM0[1:0] बिट्स को सामान्य या CTC मोड (गैर-PWM) पर सेट किया जाता है, तो COM0x[2:0] बिट कार्यक्षमता दिखाता है।
तालिका 11-2. आउटपुट मोड, नॉन-PWM मोड की तुलना करें
COM0A1 COM0B1 | COM0A0 COM0B0 | विवरण |
0 | 0 | सामान्य पोर्ट संचालन, OC0A/OC0B डिस्कनेक्ट. |
0 | 1 | तुलना मिलान पर OC0A/OC0B टॉगल करें |
1 | 0 | तुलना मिलान पर OC0A/OC0B साफ़ करें |
1 | 1 | तुलना मिलान पर OC0A/OC0B सेट करें |
तालिका 11-3 जब WGM0[1:0] बिट्स को तेज़ PWM मोड पर सेट किया जाता है, तो COM0x[2:0] बिट कार्यक्षमता दिखाता है।
तालिका 11-3. आउटपुट मोड, फ़ास्ट PWM मोड की तुलना करें(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | विवरण |
0 | 0 | सामान्य पोर्ट संचालन, OC0A/OC0B डिस्कनेक्ट. |
0 | 1 | सुरक्षित |
1 | 0 | तुलना मिलान पर OC0A/OC0B साफ़ करें, OC0A/OC0B को नीचे सेट करें (नॉन-इनवर्टिंग मोड) |
1 | 1 | OC0A/OC0B को तुलना मिलान पर सेट करें, BOTTOM पर OC0A/OC0B को साफ़ करें (इनवर्टिंग मोड) |
नोट: एक विशेष स्थिति तब होती है जब OCR0A या OCR0B बराबर TOP होता है और COM0A1/COM0B1 सेट होता है। इस मामले में, तुलना मिलान को अनदेखा किया जाता है, लेकिन सेट या क्लियर BOTTOM पर किया जाता है। देखें “फास्ट पीडब्लूएम मोड” पृष्ठ 73 पर अधिक जानकारी के लिए.
तालिका 11-4 जब WGM0[1:0] बिट्स को चरण सही PWM मोड पर सेट किया जाता है, तो COM0x[2:0] बिट कार्यक्षमता दिखाता है।
तालिका 11-4. आउटपुट मोड, फेज़ करेक्ट PWM मोड की तुलना करें(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | विवरण |
0 | 0 | सामान्य पोर्ट संचालन, OC0A/OC0B डिस्कनेक्ट. |
0 | 1 | सुरक्षित |
1 | 0 | ऊपर-गिनती करते समय तुलना मिलान पर OC0A/OC0B साफ़ करें। नीचे-गिनती करते समय तुलना मिलान पर OC0A/OC0B सेट करें। |
1 | 1 | ऊपर की गिनती करते समय तुलना मिलान पर OC0A/OC0B सेट करें। नीचे की गिनती करते समय तुलना मिलान पर OC0A/OC0B साफ़ करें। |
नोट: 1. एक विशेष स्थिति तब होती है जब OCR0A या OCR0B बराबर TOP होता है और COM0A1/COM0B1 सेट होता है। इस मामले में, तुलना मिलान को अनदेखा किया जाता है, लेकिन TOP पर सेट या क्लियर किया जाता है। देखें “फ़ेज़ करेक्ट PWM मोड” पृष्ठ 74 पर अधिक जानकारी के लिए.
बिट्स 3:2 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट्स 1:0 – WGM0[1:0]: वेवफॉर्म जनरेशन मोड
TCCR02B रजिस्टर में पाए जाने वाले WGM0 बिट के साथ संयुक्त रूप से, ये बिट काउंटर के गिनती अनुक्रम, अधिकतम (TOP) काउंटर मान के स्रोत, तथा किस प्रकार के तरंग निर्माण का उपयोग किया जाना है, को नियंत्रित करते हैं, देखें तालिका 11-5टाइमर/काउंटर इकाई द्वारा समर्थित संचालन के मोड हैं: सामान्य मोड (काउंटर), तुलना मिलान पर क्लियर टाइमर (सीटीसी) मोड, और दो प्रकार के पल्स चौड़ाई मॉड्यूलेशन (पीडब्लूएम) मोड (देखें) “संचालन के तरीके” पेज 71 पर).
तालिका 11-5. वेवफॉर्म जनरेशन मोड बिट विवरण
तरीका | महिला महानिरीक्षक 02 | महिला महानिरीक्षक 01 | महिला महानिरीक्षक 00 | टाइमर/काउंटर संचालन का तरीका | शीर्ष | OCRx का अद्यतन | TOV ध्वज सेट करें |
0 | 0 | 0 | 0 | सामान्य | 0xएफएफ | तुरंत | मैक्स(1) |
1 | 0 | 0 | 1 | पीडब्लूएम, चरण सही | 0xएफएफ | शीर्ष | तल(2) |
2 | 0 | 1 | 0 | सीटीसी | ओसीआरए | तुरंत | मैक्स(1) |
3 | 0 | 1 | 1 | तेज़ पीडब्लूएम | 0xएफएफ | तल(2) | मैक्स(1) |
4 | 1 | 0 | 0 | सुरक्षित | – | – | – |
5 | 1 | 0 | 1 | पीडब्लूएम, चरण सही | ओसीआरए | शीर्ष | तल(2) |
6 | 1 | 1 | 0 | सुरक्षित | – | – | – |
7 | 1 | 1 | 1 | तेज़ पीडब्लूएम | ओसीआरए | तल(2) | शीर्ष |
बिट 7 – FOC0A: बल आउटपुट तुलना A
FOC0A बिट केवल तभी सक्रिय होता है जब WGM बिट गैर-PWM मोड निर्दिष्ट करता है।
हालांकि, भविष्य के उपकरणों के साथ संगतता सुनिश्चित करने के लिए, PWM मोड में संचालन करते समय TCCR0B लिखते समय इस बिट को शून्य पर सेट किया जाना चाहिए। FOC0A बिट में लॉजिकल वन लिखते समय, वेवफॉर्म जनरेशन यूनिट पर तत्काल तुलना मिलान को मजबूर किया जाता है। OC0A आउटपुट को इसके COM0A[1:0] बिट सेटिंग के अनुसार बदला जाता है। ध्यान दें कि FOC0A बिट को स्ट्रोब के रूप में लागू किया जाता है। इसलिए यह COM0A[1:0] बिट में मौजूद मान है जो मजबूर तुलना के प्रभाव को निर्धारित करता है।
FOC0A स्ट्रोब कोई भी रुकावट उत्पन्न नहीं करेगा, न ही यह OCR0A को TOP के रूप में उपयोग करते हुए CTC मोड में टाइमर को साफ़ करेगा। FOC0A बिट को हमेशा शून्य के रूप में पढ़ा जाता है।
बिट 6 – FOC0B: बल आउटपुट तुलना बी
FOC0B बिट केवल तभी सक्रिय होता है जब WGM बिट गैर-PWM मोड निर्दिष्ट करता है।
हालांकि, भविष्य के उपकरणों के साथ संगतता सुनिश्चित करने के लिए, PWM मोड में संचालन करते समय TCCR0B लिखते समय इस बिट को शून्य पर सेट किया जाना चाहिए। FOC0B बिट में लॉजिकल वन लिखते समय, वेवफॉर्म जनरेशन यूनिट पर तत्काल तुलना मिलान को मजबूर किया जाता है। OC0B आउटपुट को इसके COM0B[1:0] बिट सेटिंग के अनुसार बदला जाता है। ध्यान दें कि FOC0B बिट को स्ट्रोब के रूप में लागू किया जाता है। इसलिए यह COM0B[1:0] बिट में मौजूद मान है जो मजबूर तुलना के प्रभाव को निर्धारित करता है।
FOC0B स्ट्रोब कोई व्यवधान उत्पन्न नहीं करेगा, न ही यह OCR0B को TOP के रूप में उपयोग करते हुए CTC मोड में टाइमर को साफ़ करेगा।
FOC0B बिट को हमेशा शून्य के रूप में पढ़ा जाता है।
बिट्स 5:4 – रेस: आरक्षित बिट्स
ये बिट्स ATtiny25/45/85 में आरक्षित बिट्स हैं और हमेशा शून्य के रूप में पढ़े जाएंगे।
बिट 3 – WGM02: वेवफॉर्म जनरेशन मोड
विवरण देखें “TCCR0A – टाइमर/काउंटर कंट्रोल रजिस्टर A” पृष्ठ 77 पर.
बिट्स 2:0 – CS0[2:0]: घड़ी का चयन करें
तीन क्लॉक सिलेक्ट बिट्स टाइमर/काउंटर द्वारा उपयोग किए जाने वाले क्लॉक स्रोत का चयन करते हैं।
तालिका 11-6. घड़ी चयन बिट विवरण
सीएस02 | सीएस01 | सीएस00 | विवरण |
0 | 0 | 0 | कोई घड़ी स्रोत नहीं (टाइमर/काउंटर बंद) |
0 | 0 | 1 | clkI/O/(कोई प्रीस्केलिंग नहीं) |
0 | 1 | 0 | clkI/O/8 (प्रिसकेलर से) |
0 | 1 | 1 | clkI/O/64 (प्रिसकेलर से) |
1 | 0 | 0 | clkI/O/256 (प्रिसकेलर से) |
1 | 0 | 1 | clkI/O/1024 (प्रिसकेलर से) |
1 | 1 | 0 | T0 पिन पर बाह्य घड़ी स्रोत। गिरते किनारे पर घड़ी। |
1 | 1 | 1 | T0 पिन पर बाह्य घड़ी स्रोत। बढ़ते किनारे पर घड़ी। |
यदि टाइमर/काउंटर0 के लिए बाहरी पिन मोड का उपयोग किया जाता है, तो T0 पिन पर संक्रमण काउंटर को क्लॉक करेगा, भले ही पिन को आउटपुट के रूप में कॉन्फ़िगर किया गया हो। यह सुविधा गिनती के सॉफ़्टवेयर नियंत्रण की अनुमति देती है।
इकाइयों की गणना और तुलना करें
टाइमर/काउंटर1 के सामान्य प्रचालन का वर्णन एसिंक्रोनस मोड में किया गया है तथा सिंक्रोनस मोड में प्रचालन का उल्लेख केवल तभी किया गया है जब इन दोनों मोडों के बीच अंतर हो। चित्र 12-2 टाइमर/काउंटर 1 सिंक्रोनाइजेशन रजिस्टर ब्लॉक डायग्राम और रजिस्टरों के बीच सिंक्रोनाइजेशन देरी दिखाता है। ध्यान दें कि सभी क्लॉक गेटिंग विवरण चित्र में नहीं दिखाए गए हैं। टाइमर/काउंटर1 रजिस्टर मान आंतरिक सिंक्रोनाइजेशन रजिस्टरों से गुजरते हैं, जो काउंटर ऑपरेशन को प्रभावित करने से पहले इनपुट सिंक्रोनाइजेशन देरी का कारण बनते हैं। रजिस्टर TCCR1, GTCCR, OCR1A, OCR1B और OCR1C को रजिस्टर लिखने के तुरंत बाद वापस पढ़ा जा सकता है। इनपुट और आउटपुट सिंक्रोनाइजेशन के कारण टाइमर/काउंटर1 (TCNT1) रजिस्टर और फ्लैग (OCF1A, OCF1B और TOV1) के लिए रीड बैक मान विलंबित होते हैं।
टाइमर/काउंटर1 में उच्च रिज़ॉल्यूशन और उच्च सटीकता का उपयोग होता है, जिसमें प्रीस्केलिंग के कम अवसर होते हैं। यह 8 मेगाहर्ट्ज (या कम गति मोड में 64 मेगाहर्ट्ज) तक की क्लॉक स्पीड का उपयोग करके दो सटीक, उच्च गति, 32-बिट पल्स चौड़ाई मॉड्यूलेटर का भी समर्थन कर सकता है। इस मोड में, टाइमर/काउंटर1 और आउटपुट तुलना रजिस्टर गैर-ओवरलैपिंग गैर-उल्टे और उल्टे आउटपुट के साथ दोहरे स्टैंड-अलोन PWM के रूप में काम करते हैं। देखें पेज 86 इस फ़ंक्शन पर विस्तृत विवरण के लिए। इसी तरह, उच्च प्रीस्केलिंग अवसर इस इकाई को कम गति वाले फ़ंक्शन या अनियमित क्रियाओं वाले सटीक समय फ़ंक्शन के लिए उपयोगी बनाते हैं।
चित्र 12-2. टाइमर/काउंटर 1 सिंक्रोनाइजेशन रजिस्टर ब्लॉक आरेख।
टाइमर/काउंटर 1 और प्रीस्केलर सीपीयू को किसी भी क्लॉक स्रोत से चलाने की अनुमति देते हैं, जबकि प्रीस्केलर एसिंक्रोनस मोड में तेज 64 मेगाहर्ट्ज (या कम गति मोड में 32 मेगाहर्ट्ज) पीसीके क्लॉक पर काम कर रहा होता है।
ध्यान दें कि सिस्टम क्लॉक आवृत्ति PCK आवृत्ति के एक तिहाई से कम होनी चाहिए। एसिंक्रोनस टाइमर/काउंटर1 के सिंक्रोनाइज़ेशन मैकेनिज्म को सिस्टम क्लॉक के उच्च होने पर PCK के कम से कम दो किनारों की आवश्यकता होती है। यदि सिस्टम क्लॉक की आवृत्ति बहुत अधिक है, तो डेटा या नियंत्रण मान खो जाने का जोखिम है।
निम्नलिखित चित्र 12-3 टाइमर/काउंटर1 के लिए ब्लॉक आरेख दिखाता है।
तालिका 12-1. PWM मोड में तुलना मोड चयन
COM1x1 | COM1x0 | आउटपुट तुलना पिन पर प्रभाव |
0 | 0 | OC1x कनेक्ट नहीं है. OC1x कनेक्ट नहीं है. |
0 | 1 | OC1x तुलना मिलान पर साफ़ किया गया। जब TCNT1 = $00 हो तो सेट करें। OC1x तुलना मिलान पर सेट किया गया। जब TCNT1 = $00 हो तो साफ़ किया गया। |
1 | 0 | OC1x तुलना मिलान पर साफ़ हो गया। TCNT1 = $00 होने पर सेट करें। OC1x कनेक्ट नहीं है। |
1 | 1 | OC1x तुलना मिलान पर सेट है। TCNT1= $00 होने पर साफ़ किया गया। OC1x कनेक्ट नहीं है। |
एडीसी विशेषताएँ
तालिका 21-8. ADC विशेषताएँ, सिंगल एंडेड चैनल. TA = -40°C से +85°C
प्रतीक | पैरामीटर | स्थिति | मिन | प्रकार | अधिकतम | इकाइयों |
संकल्प | 10 | बिट्स | ||||
पूर्ण सटीकता (आईएनएल, डीएनएल, तथा क्वांटिज़ेशन, लाभ और ऑफसेट त्रुटियों सहित) | वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz |
2 | एलएसबी | |||
वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 1 मेगाहर्ट्ज |
3 | एलएसबी | ||||
वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz शोर में कमी मोड |
1.5 | एलएसबी | ||||
वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 1 मेगाहर्ट्ज शोर में कमी मोड |
2.5 | एलएसबी | ||||
इंटीग्रल नॉन-लीनियरिटी (आईएनएल) (ऑफसेट और लाभ अंशांकन के बाद सटीकता) | वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz |
1 | एलएसबी | |||
विभेदक गैर-रैखिकता (डीएनएल) | वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz |
0.5 | एलएसबी | |||
लाभ त्रुटि | वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz |
2.5 | एलएसबी | |||
ऑफसेट त्रुटि | वीआरईएफ = 4V, वीसीसी = 4V,
एडीसी घड़ी = 200 kHz |
1.5 | एलएसबी | |||
रूपांतरण का समय | निःशुल्क चालू रूपांतरण | 14 | 280 | μs | ||
घड़ी की आवृत्ति | 50 | 1000 | किलोहर्ट्ज़ | |||
विन | इनपुट वॉल्यूमtage | जीएनडी | वीआरईएफ | V | ||
इनपुट बैंडविड्थ | 38.4 | किलोहर्ट्ज़ | ||||
आरिफ | बाह्य संदर्भ खंडtage | 2.0 | वीसीसी | V | ||
विंट | आंतरिक वॉल्यूमtagई संदर्भ | 1.0 | 1.1 | 1.2 | V | |
आंतरिक 2.56V संदर्भ (1) | वीसीसी > 3.0V | 2.3 | 2.56 | 2.8 | V | |
आरआरईएफ | 32 | को | ||||
बारिश | एनालॉग इनपुट प्रतिरोध | 100 | एमΩ | |||
एडीसी आउटपुट | 0 | 1023 | एलएसबी |
नोट: 1. मान केवल दिशानिर्देश हैं।
तालिका 21-9. ADC विशेषताएँ, विभेदक चैनल (यूनिपोलर मोड). TA = -40°C से +85°C
प्रतीक | पैरामीटर | स्थिति | मिन | प्रकार | अधिकतम | इकाइयों |
संकल्प | लाभ = 1x | 10 | बिट्स | |||
लाभ = 20x | 10 | बिट्स | ||||
पूर्ण सटीकता (आईएनएल, डीएनएल और सहित)
परिमाणीकरण, लाभ और ऑफसेट त्रुटियाँ) |
लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
10.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
20.0 | एलएसबी | ||||
इंटीग्रल नॉन-लीनियरिटी (आईएनएल) (ऑफसेट और गेन कैलिब्रेशन के बाद सटीकता) | लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
4.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
10.0 | एलएसबी | ||||
लाभ त्रुटि | लाभ = 1x | 10.0 | एलएसबी | |||
लाभ = 20x | 15.0 | एलएसबी | ||||
ऑफसेट त्रुटि | लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
3.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
4.0 | एलएसबी | ||||
रूपांतरण का समय | निःशुल्क चालू रूपांतरण | 70 | 280 | μs | ||
घड़ी की आवृत्ति | 50 | 200 | किलोहर्ट्ज़ | |||
विन | इनपुट वॉल्यूमtage | जीएनडी | वीसीसी | V | ||
वीडीआईएफएफ | इनपुट डिफरेंशियल वॉल्यूमtage | वीआरईएफ/लाभ | V | |||
इनपुट बैंडविड्थ | 4 | किलोहर्ट्ज़ | ||||
आरिफ | बाह्य संदर्भ खंडtage | 2.0 | वीसीसी – 1.0 | V | ||
विंट | आंतरिक वॉल्यूमtagई संदर्भ | 1.0 | 1.1 | 1.2 | V | |
आंतरिक 2.56V संदर्भ (1) | वीसीसी > 3.0V | 2.3 | 2.56 | 2.8 | V | |
आरआरईएफ | संदर्भ इनपुट प्रतिरोध | 32 | को | |||
बारिश | एनालॉग इनपुट प्रतिरोध | 100 | एमΩ | |||
एडीसी रूपांतरण आउटपुट | 0 | 1023 | एलएसबी |
नोट: मान केवल दिशानिर्देश हैं.
तालिका 21-10. ADC विशेषताएँ, विभेदक चैनल (द्विध्रुवी मोड). TA = -40°C से +85°C
प्रतीक | पैरामीटर | स्थिति | मिन | प्रकार | अधिकतम | इकाइयों |
संकल्प | लाभ = 1x | 10 | बिट्स | |||
लाभ = 20x | 10 | बिट्स | ||||
पूर्ण सटीकता (आईएनएल, डीएनएल और सहित)
परिमाणीकरण, लाभ और ऑफसेट त्रुटियाँ) |
लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
8.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
8.0 | एलएसबी | ||||
इंटीग्रल नॉन-लीनियरिटी (आईएनएल) (ऑफसेट और गेन कैलिब्रेशन के बाद सटीकता) | लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
4.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
5.0 | एलएसबी | ||||
लाभ त्रुटि | लाभ = 1x | 4.0 | एलएसबी | |||
लाभ = 20x | 5.0 | एलएसबी | ||||
ऑफसेट त्रुटि | लाभ = 1x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
3.0 | एलएसबी | |||
लाभ = 20x
वीआरईएफ = 4वी, वीसीसी = 5वी एडीसी घड़ी = 50 – 200 kHz |
4.0 | एलएसबी | ||||
रूपांतरण का समय | निःशुल्क चालू रूपांतरण | 70 | 280 | μs | ||
घड़ी की आवृत्ति | 50 | 200 | किलोहर्ट्ज़ | |||
विन | इनपुट वॉल्यूमtage | जीएनडी | वीसीसी | V | ||
वीडीआईएफएफ | इनपुट डिफरेंशियल वॉल्यूमtage | वीआरईएफ/लाभ | V | |||
इनपुट बैंडविड्थ | 4 | किलोहर्ट्ज़ | ||||
आरिफ | बाह्य संदर्भ खंडtage | 2.0 | वीसीसी – 1.0 | V | ||
विंट | आंतरिक वॉल्यूमtagई संदर्भ | 1.0 | 1.1 | 1.2 | V | |
आंतरिक 2.56V संदर्भ (1) | वीसीसी > 3.0V | 2.3 | 2.56 | 2.8 | V | |
आरआरईएफ | संदर्भ इनपुट प्रतिरोध | 32 | को | |||
बारिश | एनालॉग इनपुट प्रतिरोध | 100 | एमΩ | |||
एडीसी रूपांतरण आउटपुट | -512 | 511 | एलएसबी |
निर्देश सेट सारांश
स्मृती-विज्ञान | ऑपरेंड | विवरण | संचालन | झंडे | # क्लॉक |
रचनात्मक और तार्किक निर्देश | |||||
जोड़ना | आरडी, आरआर | दो रजिस्टर जोड़ें | आरडी ← आरडी + आरआर | जेड, सी, एन, वी, एच | 1 |
एडीसी | आरडी, आरआर | कैर्री टू रजिस्टर के साथ जोड़ें | आरडी ← आरडी + आरआर + सी | जेड, सी, एन, वी, एच | 1 |
एडीआईडब्लू | आरडीएल,के | Word में तत्काल जोड़ें | Rdh:Rdl ← Rdh:Rdl + K | जेड,सी,एन,वी,एस | 2 |
उप | आरडी, आरआर | दो रजिस्टरों को घटाएं | आरडी ← आरडी – आरआर | जेड, सी, एन, वी, एच | 1 |
सुबी | आर डी, के | रजिस्टर से लगातार घटाना | Rd ← Rd – K | जेड, सी, एन, वी, एच | 1 |
एसबीसी | आरडी, आरआर | कैरी दो रजिस्टरों के साथ घटाना | आरडी ← आरडी – आरआर – सी | जेड, सी, एन, वी, एच | 1 |
एसबीसीआई | आर डी, के | Reg से कैरी कॉन्स्टेंट के साथ घटाना। | Rd ← Rd – K – C | जेड, सी, एन, वी, एच | 1 |
एसबीआईडब्लू | आरडीएल,के | वर्ड से तत्काल घटाएँ | Rdh:Rdl ← Rdh:Rdl – के | जेड,सी,एन,वी,एस | 2 |
और | आरडी, आरआर | तार्किक और रजिस्टर | आरडी ← आरडी ∙ आरआर | जेड, एन, वी | 1 |
ए.एन.डी.आई. | आर डी, के | तार्किक और रजिस्टर और लगातार | आरडी ← आरडी ∙ के | जेड, एन, वी | 1 |
OR | आरडी, आरआर | तार्किक या रजिस्टर | आरडी ← आरडी वी आरआर | जेड, एन, वी | 1 |
मूल | आर डी, के | तार्किक या रजिस्टर और लगातार | आरडी ← आरडी बनाम के | जेड, एन, वी | 1 |
ईओआर | आरडी, आरआर | अनन्य या रजिस्टर | आरडी ← आरडी ⊕ आरआर | जेड, एन, वी | 1 |
कॉम | Rd | एक के पूरक | आरडी ← 0xFF − आरडी | जेड, सी, एन, वी | 1 |
NEG | Rd | दो का अनुपूरण | आरडी ← 0x00 − आरडी | जेड, सी, एन, वी, एच | 1 |
एसबीआर | आर डी, के | रजिस्टर में Bit (s) सेट करें | आरडी ← आरडी बनाम के | जेड, एन, वी | 1 |
सीबीआर | आर डी, के | रजिस्टर में बिट (ओं) को साफ़ करें | Rd ← Rd ∙ (0xFF – K) | जेड, एन, वी | 1 |
कांग्रेस | Rd | वेतन वृद्धि | आरडी ← आरडी + १ | जेड, एन, वी | 1 |
दिसम्बर | Rd | घटती | आरडी ← आरडी − १ | जेड, एन, वी | 1 |
TST | Rd | जीरो या माइनस के लिए टेस्ट | आरडी ← आरडी ∙ आरडी | जेड, एन, वी | 1 |
सीएलआर | Rd | रजिस्टर साफ़ करें | आरडी ← आरडी ⊕ आरडी | जेड, एन, वी | 1 |
एसईआर | Rd | रजिस्टर सेट करें | आरडी ← 0xFF | कोई नहीं | 1 |
शाखाएँ निर्देश | |||||
आरजेएमपी | k | सापेक्ष कूद | पीसी ← पीसी + के + १ | कोई नहीं | 2 |
आईजेएमपी | अप्रत्यक्ष रूप से (Z) पर जाएं | पीसी ← Z | कोई नहीं | 2 | |
आरकॉल | k | रिश्तेदार सबरूटिन कॉल | पीसी ← पीसी + के + १ | कोई नहीं | 3 |
मैंने कॉल की | (Z) पर अप्रत्यक्ष कॉल | पीसी ← Z | कोई नहीं | 3 | |
गीला करना | सबरूटीन रिटर्न | पीसी ← स्टैक | कोई नहीं | 4 | |
रेती | इंटरप्ट रिटर्न | पीसी ← स्टैक | I | 4 | |
सीपीएसई | आरडी, आरआर | तुलना करें, छोड़ें यदि समान | यदि (Rd = Rr) PC ← PC + 2 या 3 | कोई नहीं | 1/2/3 |
CP | आरडी, आरआर | तुलना करना | आरडी − आरआर | जेड, एन, वी, सी, एच | 1 |
सीपीसी | आरडी, आरआर | कैरी से तुलना करें | आरडी − आरआर − सी | जेड, एन, वी, सी, एच | 1 |
भाकपा | आर डी, के | तत्काल के साथ रजिस्टर की तुलना करें | आरडी − के | जेड, एन, वी, सी, एच | 1 |
एसबीआरसी | आरआर, बी | अगर बिट इन रजिस्टर क्लियर हो जाए तो छोड़ दें | यदि (Rr(b)=0) PC ← PC + 2 या 3 | कोई नहीं | 1/2/3 |
एसबीआरएस | आरआर, बी | अगर बिट इन रजिस्टर सेट है तो छोड़ें | यदि (Rr(b)=1) PC ← PC + 2 या 3 | कोई नहीं | 1/2/3 |
एसबीआईसी | पी, बी | अगर I / O रजिस्टर क्लियर हो गया है तो छोड़ें | यदि (P(b)=0) PC ← PC + 2 या 3 | कोई नहीं | 1/2/3 |
एसबीआईएस | पी, बी | अगर I / O रजिस्टर में बिट सेट है तो छोड़ें | यदि (P(b)=1) PC ← PC + 2 या 3 | कोई नहीं | 1/2/3 |
बीआरबीएस | एस, के | यदि शाखा ध्वज सेट करें | यदि (SREG(s) = 1) तो PC←PC+k + 1 | कोई नहीं | 1/2 |
बीआरबीसी | एस, के | यदि स्थिति ध्वज साफ़ हो गया तो शाखा | यदि (SREG(s) = 0) तो PC←PC+k + 1 | कोई नहीं | 1/2 |
ब्रेक | k | शाखा अगर बराबर हो | यदि (Z = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
Brně | k | शाखा यदि बराबर न हो | यदि (Z = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरसी | k | ब्रांच अगर कैरी सेट | यदि (C = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरसीसी | k | ब्रांच अगर कैरी क्लीयर हो जाए | यदि (C = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
ब्रज | k | शाखा यदि समान या उच्चतर | यदि (C = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरएलओ | k | शाखा अगर कम है | यदि (C = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरएमआई | k | शाखा अगर माइनस | यदि (N = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरपीएल | k | शाखा अगर प्लस | यदि (N = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरजीई | k | शाखा यदि ग्रेटर या बराबर, हस्ताक्षरित | यदि (N ⊕ V= 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरएलटी | k | शून्य से कम होने पर शाखा, हस्ताक्षरित | यदि (N ⊕ V= 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बी.आर.एच.एस. | k | हाफ कैरी फ्लैग सेट अगर ब्रांच | यदि (H = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरएचसी | k | अगर हाफ कैरी फ्लैग को क्लियर किया जाए तो ब्रांच | यदि (H = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरटीएस | k | यदि टी फ्लैग सेट है तो शाखा | यदि (T = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरटीसी | k | यदि टी फ्लैग क्लियर हो जाए तो ब्रांच | यदि (T = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरवीएस | k | ओवरफ्लो फ्लैग सेट होने पर शाखा | यदि (V = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
बीआरवीसी | k | ओवरफ्लो फ्लैग क्लियर होने पर ब्रांच | यदि (V = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
ब्री | k | ब्रांच अगर इंटरप्ट इनेबल्ड | यदि ( I = 1) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
ब्रिड | k | शाखा बाधित अगर निष्क्रिय | यदि ( I = 0) तो PC ← PC + k + 1 | कोई नहीं | 1/2 |
BIT और BIT-TEST के निर्देश | |||||
एसबीआई | पी, बी | I / O रजिस्टर में बिट सेट करें | आई/ओ(पी,बी) ← १ | कोई नहीं | 2 |
सीबीआई | पी, बी | I / O रजिस्टर में क्लियर बिट | आई/ओ(पी,बी) ← १ | कोई नहीं | 2 |
एलएसएल | Rd | तार्किक बदलाव बाएं | Rd(n+1) ← Rd(n), Rd(0) ← 0 | जेड, सी, एन, वी | 1 |
एलएसआर | Rd | तार्किक बदलाव दायाँ | आरडी(एन) ← आरडी(एन+1), आरडी(7) ← 0 | जेड, सी, एन, वी | 1 |
ROL | Rd | लेफ्ट के जरिए कैरी करें | आरडी(0)←सी,आरडी(एन+1)← आरडी(एन),सी←आरडी(7) | जेड, सी, एन, वी | 1 |
आतंक विरोधी | Rd | कैर्री के माध्यम से सही घुमाएँ | आरडी(7)←सी,आरडी(एन)← आरडी(एन+1),सी←आरडी(0) | जेड, सी, एन, वी | 1 |
अस्र | Rd | अंकगणित शिफ्ट राइट | आरडी(एन) ← आरडी(एन+1), एन=0..6 | जेड, सी, एन, वी | 1 |
स्मृती-विज्ञान | ऑपरेंड | विवरण | संचालन | झंडे | # क्लॉक |
बदलना | Rd | स्वैप निबल | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | कोई नहीं | 1 |
बीएसईटी | s | ध्वज सेट करें | एसआरईजी(एस) ← 1 | SREG (s) | 1 |
बीसीएलआर | s | झंडा साफ करें | एसआरईजी(एस) ← 0 | SREG (s) | 1 |
बीएसटी | आरआर, बी | रजिस्टर से टी तक बिट स्टोर | टी ← आरआर(बी) | T | 1 |
बीएलडी | आर डी, बी | टी से रजिस्टर करने के लिए बिट लोड | आरडी(बी) ← टी | कोई नहीं | 1 |
सेकंड | कैरी सेट करें | सी ← १ | C | 1 | |
सीएलसी | साफ कैरी | सी ← १ | C | 1 | |
सेन | नकारात्मक ध्वज सेट करें | एन ← १ | N | 1 | |
सीएलएन | साफ नकारात्मक झंडा | एन ← १ | N | 1 | |
सेज | शून्य ध्वज सेट करें | ज़ेड ← १ | Z | 1 | |
सीएलजेड | जीरो फ्लैग क्लियर करें | ज़ेड ← १ | Z | 1 | |
एसईआई | ग्लोबल इंटरप्ट सक्षम करें | मैं ← १ | I | 1 | |
सीएलआई | ग्लोबल इंटरप्ट डिसेबल | मैं ← १ | I | 1 | |
सत्र | हस्ताक्षरित परीक्षण ध्वज सेट करें | एस ← १ | S | 1 | |
सीएलएस | साफ़ हस्ताक्षरित टेस्ट फ्लैग | एस ← १ | S | 1 | |
सेव | सेट टूज़ पूरक ओवरफ़्लो. | वी ← १ | V | 1 | |
सीएलवी | क्लीयर टिवोस पूरक ओवरफ्लो | वी ← १ | V | 1 | |
तय करना | SREG में T सेट करें | टी ← १ | T | 1 | |
सीएलटी | एसआरईजी में स्पष्ट टी | टी ← १ | T | 1 | |
SEH | SREG में हाफ कैरी फ्लैग सेट करें | एच ← १ | H | 1 | |
सीएलएच | SREG में हाफ कैरी फ्लैग साफ़ करें | एच ← १ | H | 1 | |
डेटा स्थानांतरण निर्देश | |||||
एमओवी | आरडी, आरआर | रजिस्टर के बीच ले जाएँ | आरडी ← आरआर | कोई नहीं | 1 |
एमओवीडब्लू | आरडी, आरआर | कॉपी रजिस्टर वर्ड | Rd+1:Rd ← आरआर+1:आरआर | कोई नहीं | 1 |
एलडीआई | आर डी, के | तत्काल लोड करें | आरडी ← के | कोई नहीं | 1 |
LD | रोड, एक्स | अप्रत्यक्ष लोड करें | आरडी ← (एक्स) | कोई नहीं | 2 |
LD | रोड, एक्स+ | लोड अप्रत्यक्ष और पोस्ट-इंक. | आरडी ← (एक्स), एक्स ← एक्स + १ | कोई नहीं | 2 |
LD | रोड, – एक्स | लोड अप्रत्यक्ष और पूर्व-दिसंबर। | एक्स ← एक्स – 1, आरडी ← (एक्स) | कोई नहीं | 2 |
LD | रोड, वाई | अप्रत्यक्ष लोड करें | आरडी ← (वाई) | कोई नहीं | 2 |
LD | रोड, वाई+ | लोड अप्रत्यक्ष और पोस्ट-इंक. | आरडी ← (वाई), वाई ← वाई + १ | कोई नहीं | 2 |
LD | रोड, – वाई | लोड अप्रत्यक्ष और पूर्व-दिसंबर। | वाई ← वाई – 1, आरडी ← (वाई) | कोई नहीं | 2 |
एलडीडी | आरडी, वाई+क्यू | विस्थापन के साथ अप्रत्यक्ष भार | आरडी ← (वाई + क्यू) | कोई नहीं | 2 |
LD | रोड, जेड | अप्रत्यक्ष लोड करें | आरडी ← (जेड) | कोई नहीं | 2 |
LD | रोड, जेड+ | लोड अप्रत्यक्ष और पोस्ट-इंक. | Rd ← (Z), Z ← Z+1 | कोई नहीं | 2 |
LD | आरडी, -जेड | लोड अप्रत्यक्ष और पूर्व-दिसंबर। | Z ← Z – 1, Rd ← (Z) | कोई नहीं | 2 |
एलडीडी | आरडी, जेड+क्यू | विस्थापन के साथ अप्रत्यक्ष भार | आरडी ← (जेड + क्यू) | कोई नहीं | 2 |
एलडीएस | रोड, के | SRAM से सीधे लोड करें | आरडी ← (के) | कोई नहीं | 2 |
ST | एक्स, आरआर | अप्रत्यक्ष स्टोर करें | (X) ← आरआर | कोई नहीं | 2 |
ST | एक्स+, आरआर | स्टोर अप्रत्यक्ष और पोस्ट-इंक. | (एक्स) ← आरआर, एक्स ← एक्स + १ | कोई नहीं | 2 |
ST | – एक्स, आरआर | स्टोर अप्रत्यक्ष और पूर्व-दिसंबर। | एक्स ← एक्स – 1, (एक्स) ← आरआर | कोई नहीं | 2 |
ST | वाई, आरआर | अप्रत्यक्ष स्टोर करें | (वाई) ← आरआर | कोई नहीं | 2 |
ST | वाई+, आरआर | स्टोर अप्रत्यक्ष और पोस्ट-इंक. | (Y) ← आरआर, वाई ← वाई + १ | कोई नहीं | 2 |
ST | – वाई, आरआर | स्टोर अप्रत्यक्ष और पूर्व-दिसंबर। | वाई ← वाई – 1, (वाई) ← आरआर | कोई नहीं | 2 |
कक्षा | वाई+क्यू,आरआर | विस्थापन के साथ अप्रत्यक्ष स्टोर करें | (Y + q) ← आरआर | कोई नहीं | 2 |
ST | जेड, आरआर | अप्रत्यक्ष स्टोर करें | (Z) ← आरआर | कोई नहीं | 2 |
ST | जेड+, आरआर | स्टोर अप्रत्यक्ष और पोस्ट-इंक. | (Z) ← आरआर, Z ← Z + 1 | कोई नहीं | 2 |
ST | -जेड, आरआर | स्टोर अप्रत्यक्ष और पूर्व-दिसंबर। | Z ← Z – 1, (Z) ← आरआर | कोई नहीं | 2 |
कक्षा | जेड+क्यू,आरआर | विस्थापन के साथ अप्रत्यक्ष स्टोर करें | (Z + q) ← आरआर | कोई नहीं | 2 |
अनुसूचित जनजातियों | के, आरआर | SRAM में सीधे स्टोर करें | (क) ← आरआर | कोई नहीं | 2 |
एलपीएम | लोड प्रोग्राम मेमोरी | R0 ← (Z) | कोई नहीं | 3 | |
एलपीएम | रोड, जेड | लोड प्रोग्राम मेमोरी | आरडी ← (जेड) | कोई नहीं | 3 |
एलपीएम | रोड, जेड+ | लोड प्रोग्राम मेमोरी और पोस्ट-इंक | Rd ← (Z), Z ← Z+1 | कोई नहीं | 3 |
एसपीएम | प्रोग्राम मेमोरी संग्रहित करें | (z) ← R1:R0 | कोई नहीं | ||
IN | आरडी, पी | पोर्ट में | आरडी ← पी | कोई नहीं | 1 |
बाहर | पी, आरआर | पोर्ट से बाहर | पी ← आरआर | कोई नहीं | 1 |
धकेलना | Rr | स्टैक पर रजिस्टर पुश करें | स्टैक ← आरआर | कोई नहीं | 2 |
जल्दी से आना | Rd | स्टैक से पॉप रजिस्टर | Rd ← स्टैक | कोई नहीं | 2 |
एमसीयू नियंत्रण निर्देश | |||||
एनओपी | कोई ऑपरेशन नहीं | कोई नहीं | 1 | ||
नींद | नींद | (नींद समारोह के लिए विशिष्ट descr देखें) | कोई नहीं | 1 | |
डब्ल्यूडीआर | वॉचडॉग रीसेट | (WDR/टाइमर के लिए विशिष्ट विवरण देखें) | कोई नहीं | 1 | |
तोड़ना | तोड़ना |
गति (मेगाहर्ट्ज) (1) | आपूर्ति वॉल्यूमtagई (वी) | तापमान की रेंज | पैकेट (2) | कोड भेजने का आदेश (3) |
10 | 1.8 – 5.5 | औद्योगिक
(-40 डिग्री सेल्सियस से + 85 डिग्री सेल्सियस) (4) |
8पी3 | एटीटिनी45V-10PU |
8एस2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20एम1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | औद्योगिक
(-40 डिग्री सेल्सियस से + 85 डिग्री सेल्सियस) (4) |
8पी3 | एटीटिनी45-20पीयू |
8एस2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20एम1 | ATtiny45-20MU ATtiny45-20MUR |
नोट: 1. गति बनाम आपूर्ति मात्रा के लिएtagई, अनुभाग देखें 21.3 पृष्ठ 163 पर “गति”.
सभी पैकेज Pb-मुक्त, हैलाइड-मुक्त और पूर्णतः हरित हैं तथा वे खतरनाक पदार्थों के प्रतिबंध के लिए यूरोपीय निर्देश (RoHS) का अनुपालन करते हैं।
कोड संकेतक
H: NiPdAu लीड फिनिश
यू: मैट टिन
आर: टेप और रील
इन उपकरणों को वेफर फॉर्म में भी आपूर्ति की जा सकती है। विस्तृत ऑर्डरिंग जानकारी और न्यूनतम मात्रा के लिए कृपया अपने स्थानीय एटमेल बिक्री कार्यालय से संपर्क करें।
इरेटा
त्रुटियाँ ATtiny25
इस खंड में संशोधन पत्र ATtiny25 डिवाइस के संशोधन को संदर्भित करता है।
रेव डी – एफ
कोई ज्ञात इरेटा नहीं।
रेव बी – सी
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
कम क्लॉक आवृत्तियों और/या कम आपूर्ति वॉल्यूम पर EEPROM को पढ़ने का प्रयास करनाtagइसके परिणामस्वरूप डेटा अमान्य हो सकता है.
समस्या समाधान/समाधान
जब क्लॉक आवृत्ति 1MHz से कम हो और आपूर्ति वॉल्यूम XNUMXmAh से कम हो तो EEPROM का उपयोग न करें।tagई 2V से नीचे है। यदि ऑपरेटिंग आवृत्ति 1MHz से ऊपर नहीं बढ़ाई जा सकती है तो आपूर्ति वॉल्यूमtagई 2V से अधिक होना चाहिए। इसी तरह, यदि आपूर्ति मात्राtagयदि इसे 2V से ऊपर नहीं बढ़ाया जा सकता तो प्रचालन आवृत्ति 1MHz से अधिक होनी चाहिए।
यह विशेषता तापमान पर निर्भर मानी जाती है, लेकिन इसका वर्णन नहीं किया गया है। दिशा-निर्देश केवल कमरे के तापमान के लिए दिए गए हैं।
रेव ए
नहींampएलईडी।
त्रुटियाँ ATtiny45
इस खंड में संशोधन पत्र ATtiny45 डिवाइस के संशोधन को संदर्भित करता है।
रेव एफ – जी
कोई ज्ञात त्रुटि नहीं
रेव डी – ई
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
कम क्लॉक आवृत्तियों और/या कम आपूर्ति वॉल्यूम पर EEPROM को पढ़ने का प्रयास करनाtagइसके परिणामस्वरूप डेटा अमान्य हो सकता है.
समस्या समाधान/समाधान
जब क्लॉक आवृत्ति 1MHz से कम हो और आपूर्ति वॉल्यूम XNUMXmAh से कम हो तो EEPROM का उपयोग न करें।tagई 2V से नीचे है। यदि ऑपरेटिंग आवृत्ति 1MHz से ऊपर नहीं बढ़ाई जा सकती है तो आपूर्ति वॉल्यूमtagई 2V से अधिक होना चाहिए। इसी तरह, यदि आपूर्ति मात्राtagयदि इसे 2V से ऊपर नहीं बढ़ाया जा सकता तो प्रचालन आवृत्ति 1MHz से अधिक होनी चाहिए।
यह विशेषता तापमान पर निर्भर मानी जाती है, लेकिन इसका वर्णन नहीं किया गया है। दिशा-निर्देश केवल कमरे के तापमान के लिए दिए गए हैं।
रेव बी – सी
PLL लॉक नहीं हो रहा है
अनुप्रयोग कोड से पढ़ा गया EEPROM लॉक बिट मोड 3 में काम नहीं करता है
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
टाइमर काउंटर 1 OC1B- XOC1B पर PWM आउटपुट जनरेशन सही ढंग से काम नहीं करता है
PLL लॉक नहीं हो रहा है
6.0 मेगाहर्ट्ज से कम आवृत्तियों पर, PLL लॉक नहीं होगा
समस्या का समाधान / समाधान
पीएलएल का उपयोग करते समय, 6.0 मेगाहर्ट्ज या उससे अधिक पर चलाएं।
अनुप्रयोग कोड से पढ़ा गया EEPROM लॉक बिट मोड 3 में काम नहीं करता है
जब मेमोरी लॉक बिट्स LB2 और LB1 को मोड 3 पर प्रोग्राम किया जाता है, तो EEPROM रीड अनुप्रयोग कोड से काम नहीं करता है।
समस्या का समाधान/समाधान
जब अनुप्रयोग कोड को EEPROM से पढ़ने की आवश्यकता हो तो लॉक बिट प्रोटेक्शन मोड 3 सेट न करें।
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
कम क्लॉक आवृत्तियों और/या कम आपूर्ति वॉल्यूम पर EEPROM को पढ़ने का प्रयास करनाtagइसके परिणामस्वरूप डेटा अमान्य हो सकता है.
समस्या समाधान/समाधान
जब क्लॉक आवृत्ति 1MHz से कम हो और आपूर्ति वॉल्यूम XNUMXmAh से कम हो तो EEPROM का उपयोग न करें।tagई 2V से नीचे है। यदि ऑपरेटिंग आवृत्ति 1MHz से ऊपर नहीं बढ़ाई जा सकती है तो आपूर्ति वॉल्यूमtagई 2V से अधिक होना चाहिए। इसी तरह, यदि आपूर्ति मात्राtagयदि इसे 2V से ऊपर नहीं बढ़ाया जा सकता तो प्रचालन आवृत्ति 1MHz से अधिक होनी चाहिए।
यह विशेषता तापमान पर निर्भर मानी जाती है, लेकिन इसका वर्णन नहीं किया गया है। दिशा-निर्देश केवल कमरे के तापमान के लिए दिए गए हैं।
टाइमर काउंटर 1 OC1B पर PWM आउटपुट जनरेशन - XOC1B सही ढंग से काम नहीं करता है
टाइमर काउंटर 1 PWM आउटपुट OC1B-XOC1B सही ढंग से काम नहीं करता है। केवल उस स्थिति में जब नियंत्रण बिट्स, COM1B1 और COM1B0 क्रमशः COM1A1 और COM1A0 के समान मोड में होते हैं, OC1B-XOC1B आउटपुट सही ढंग से काम करता है।
समस्या का समाधान/समाधान
एकमात्र समाधान COM1A[1:0] और COM1B[1:0] नियंत्रण बिट्स पर समान नियंत्रण सेटिंग का उपयोग करना है, डेटा शीट में तालिका 14-4 देखें। Tiny45 rev D के लिए समस्या को ठीक कर दिया गया है।
रेव ए
बहुत अधिक पावर डाउन बिजली की खपत
DebugWIRE एकल चरण में व्यवधान आने पर संचार खो देता है
PLL लॉक नहीं हो रहा है
अनुप्रयोग कोड से पढ़ा गया EEPROM लॉक बिट मोड 3 में काम नहीं करता है
कम आपूर्ति वॉल्यूम पर EEPROM रीड विफल हो सकता हैtagई / कम घड़ी आवृत्ति
बहुत अधिक पावर डाउन बिजली की खपत
तीन स्थितियाँ ऐसी होंगी जिनके कारण बिजली की खपत बहुत अधिक हो जाएगी। ये हैं:
फ़्यूज़ द्वारा एक बाह्य घड़ी का चयन किया जाता है, लेकिन I/O पोर्ट अभी भी आउटपुट के रूप में सक्षम होता है।
बिजली बंद करने से पहले EEPROM को पढ़ा जाता है।
वी.सी.सी. 4.5 वोल्ट या उससे अधिक है।
अस्वीकरण: इस दस्तावेज़ में दी गई जानकारी एटमेल उत्पादों के संबंध में दी गई है। इस दस्तावेज़ द्वारा या एटमेल उत्पादों की बिक्री के संबंध में किसी भी बौद्धिक संपदा अधिकार के लिए कोई लाइसेंस, व्यक्त या निहित, एस्टोपल या अन्यथा प्रदान नहीं किया गया है। एटमेल पर स्थित बिक्री के एटमेल नियमों और शर्तों में बताए गए को छोड़कर WEBसाइट, ATMEL किसी भी तरह की देनदारी नहीं मानती है और अपने उत्पादों से संबंधित किसी भी व्यक्त, निहित या वैधानिक वारंटी को अस्वीकार करती है, जिसमें व्यापारिकता की निहित वारंटी, किसी विशेष उद्देश्य के लिए उपयुक्तता, या गैर-उल्लंघन शामिल है, लेकिन यह सीमित नहीं है। किसी भी स्थिति में ATMEL किसी भी प्रत्यक्ष, अप्रत्यक्ष, परिणामी, दंडात्मक, विशेष या आकस्मिक नुकसान के लिए उत्तरदायी नहीं होगा (बिना किसी सीमा के नुकसान और लाभ, व्यापार रुकावट, या जानकारी की हानि के लिए नुकसान) उपयोग या उपयोग करने में असमर्थता से उत्पन्न यह दस्तावेज़, भले ही ATMEL को ऐसे नुकसान की संभावना के बारे में सलाह दी गई हो।
Atmel इस दस्तावेज़ की सामग्री की सटीकता या पूर्णता के संबंध में कोई प्रतिनिधित्व या वारंटी नहीं देता है और बिना सूचना के किसी भी समय विनिर्देशों और उत्पादों के विवरण में परिवर्तन करने का अधिकार सुरक्षित रखता है। Atmel इसमें निहित जानकारी को अद्यतन करने के लिए कोई प्रतिबद्धता नहीं करता है। जब तक विशेष रूप से अन्यथा प्रदान नहीं किया जाता है, तब तक Atmel उत्पाद ऑटोमोटिव अनुप्रयोगों के लिए उपयुक्त नहीं होते हैं और न ही इनका उपयोग किया जाएगा। Atmel उत्पादों को जीवन का समर्थन करने या बनाए रखने के उद्देश्य से अनुप्रयोगों में घटकों के रूप में उपयोग के लिए अभिप्रेत, अधिकृत या वारंट नहीं किया गया है।