AVR पर टाइमर 0 का उपयोग न करने का कोई कारण?


10

बस एक बुनियादी सवाल ... Arduino / avr / ATMega328 के लिए मुझे Timer1 (वहाँ भी इसके लिए एक पूरी लाइब्रेरी है) का उपयोग करके बहुत सारे उदाहरण मिलते हैं, लेकिन शायद ही कोई ऐसा हो जो Timer0 (या Timer2) का उपयोग करता हो।

अब, मुझे पता है कि ISR विधि को नियंत्रित करने के लिए इनमें से किसी भी टाइमर का उपयोग करने पर यह संबंधित पिनों पर PWM के उपयोग को अक्षम कर देगा, लेकिन क्या कोई विशिष्ट कारण है कि लोग Timer0 से दूर रहने लगते हैं? क्या यह आंतरिक रूप से किसी और चीज के लिए उपयोग किया जाता है जिसे किसी के साथ खिलवाड़ नहीं करना चाहिए?

मेरा वर्तमान अनुप्रयोग टिमर 1 का उपयोग करके ठीक है, अगर मैं इन अन्य अक्सर उपेक्षित टाइमर के बारे में कुछ याद कर रहा हूं तो मैं उत्सुक हूं।

जवाबों:


16

यदि प्रश्न नंगे AVR माइक्रोकंट्रोलर के बारे में है, तो नहीं, किसी भी टाइमर का उपयोग करने पर कोई बाधा नहीं है

  • Arduino के लिए, Timer0 सबसे अच्छा बचा जाता है, क्योंकि millis(), delay()और Arduino पुस्तकालयों में सभी आंतरिक टाइमकीपिंग इस टाइमर का उपयोग करते हैं। यह लगातार बदलते समय का प्रभाव इन परिचालनों पर पड़ेगा।
  • Timer1 , जैसा कि प्रश्न कहता है, किसी टाइमर / काउंटर कार्यों के लिए लोकप्रिय पहली पसंद है, जैसे TimerOne पुस्तकालय , साथ ही प्रत्यक्ष हेरफेर के माध्यम से पुस्तकालयों के माध्यम से । यह एक 16-बिट टाइमर है, इस प्रकार 8-बिट टाइमर की तुलना में बेहतर रिज़ॉल्यूशन है।
  • Timer2 का उपयोग टोन () लाइब्रेरी द्वारा किया जाता है, लेकिन चूँकि इसका इतना सर्वव्यापी उपयोग नहीं किया जाता है, msTimer2 लाइब्रेरी भी है जो बहुत उपयोगी है, बहुत कुछ TimerOne की तरह है। टाइमर 2 का सीधा हेरफेर भी ठीक है।
  • मेगा, पर अतिरिक्त टाइमर Timer3 , Timer4 और timer5 , प्रत्येक एक 16-बिट टाइमर, यदि आप एक का उपयोग करें, उपयोग के लिए भी उपलब्ध हैं, Arduino मेगा बोर्ड।

9

संबद्ध PWM अन्य कारणों को अक्षम करने के अलावा मैं सोच सकता हूं:

  • TIMER0 एक 8-बिट टाइमर है जबकि TIMER1 16-बिट टाइमर है।

  • Arduino दुनिया में TIMER0 का उपयोग देरी () और मिली () जैसे टाइमर के कार्यों के लिए किया जाता है। बहुत सारे अन्य कोड मैंने देखे हैं कि यह उसी तरह उपयोग करता है क्योंकि 8-बिट रिज़ॉल्यूशन सामान्य रूप से पर्याप्त है।

  • TIMER2 भी एक 8-बिट है, मैं विशेष रूप से बचने के लिए एक कारण के बारे में नहीं सोच सकता कि अगर केवल 8-बिट की आवश्यकता है। यह हालांकि Arduino टोन () फ़ंक्शन द्वारा उपयोग किया जाता है।

इसलिए मुझे लगता है कि TIMER1 एक काफी सामान्य पसंद के रूप में निकलता है और 16-बिट टाइमर की आवश्यकता होने पर छोटे AVRs पर एकमात्र विकल्प होता है। AVR मेगा उपकरणों में TIMER3 - TIMER5 भी शामिल हैं जो सभी 16-बिट हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.