क्या ATmega के नए "PB" वेरिएंट ब्राउन-आउट डिटेक्टर में एक बग है?


9

हम अपने कई उत्पादों में कई वर्षों से सफलतापूर्वक ATmega48 / 88/168/328 माइक्रोकंट्रोलर का उपयोग कर रहे हैं। हमने अब A और PA वेरिएंट से नए PB वेरिएंट में स्विच करने पर विचार किया है (क्योंकि हमें नए उत्पादों में अतिरिक्त पिन, टाइमर और UARTs की आवश्यकता होगी, क्योंकि यह सस्ता हो गया है, और क्योंकि ऐसा लगता है कि पुराने वेरिएंट को बंद कर दिया जाएगा,) इसलिए हमने ATmega328PB के साथ एक ATmega328A स्विच किया। ऐसा लगता है कि बिजली की रुकावट के बाद बहुत बार हाइयरवायर जाता है । पुरानी वैरिएंट के साथ ऐसी समस्याएं कभी नहीं हुईं।

हमारे उत्पादों के उपयोग के लिए नियमित बिजली व्यवधान सामान्य हैं। हम 5V पर सेट होने वाली स्विचिंग पॉवर सप्लाई (जैसे यह ) का उपयोग करते हैं , और ATmega के VCC पर 220µF रेंज में कैपेसिटर रखते हैं, SRAM को कई मिनटों की रेंज में पावर रुकावट के लिए जिंदा रखने के लिए, आंतरिक राज्यों को संग्रहीत करने के लिए जो मिशन नहीं है महत्वपूर्ण लेकिन महत्वपूर्ण रूप से पुनः आरंभ होने पर तुरंत उपलब्ध होने से उपयोगकर्ता अनुभव को बढ़ाता है (ये राज्य अक्सर EEPROM को अनुपयुक्त बनाने के लिए पर्याप्त बदलते हैं)। इसने हमेशा काम किया है।

हालाँकि, नए ATmega328PB के साथ, एक पॉवर रुकावट के बाद, MCUSR में एक रीसेट स्थिति में चिप के बिना चिप रीसेट हो जाता है, और घड़ी हाइयरवायर जाती है।

  • ब्राउन-आउट डिटेक्टर फ्यूज प्रति सेट है। हमने हर उपलब्ध बॉडीवेल की कोशिश की, बग उन सभी पर होता है।
  • हम बाहरी 20 मेगाहर्ट्ज का उपयोग करते हैं, प्रति फ्यूज भी सही ढंग से सेट करते हैं।
  • हमने 3 अलग-अलग चिप्स आज़माए, इसलिए यह एक सोल्डरिंग या अन्य हार्डवेयर विफलता नहीं थी।

बग होने के बाद, घड़ी अक्सर 2.5x धीमी गति पर सेट होती है, यह दर्शाता है कि mcu को 8 मेगाहर्ट्ज आंतरिक थरथरानवाला द्वारा देखा जा रहा है। हालांकि, कभी-कभी मंदी 6x के आसपास होती है। इसका मतलब यह है कि यह सॉफ्टवेयर डिवाइडर हो सकता है जो घड़ी के डिवाइडर को बदल सकता है, क्योंकि मैं सॉफ्टवेयर से फ़्यूज़ सेट नहीं कर सकता, और क्लॉक डिवाइडर घड़ी को 2.5 या 6 से विभाजित नहीं कर सकता।

इसलिए, मेरा पहला संदेह नया क्लॉक फेल्योर डिटेक्शन फ्यूज था। हालांकि, कोई फर्क नहीं पड़ता कि यह चालू या बंद है, व्यवहार समान रहता है।

सॉफ़्टवेयर की विशिष्टताओं को नियंत्रित करने के लिए, मैंने स्क्रैच से एक सरल परीक्षण कार्यक्रम लिखा, जो टाइमर अवरोध से 100 हर्ट्ज के साथ आउटपुट के अलावा और कुछ नहीं करता है, और प्रत्येक पुनरारंभ के बाद एल ई डी के साथ इंगित करता है जो रीसेट स्थितियां सक्रिय हुई थीं (जैसा कि एमसीआरआर से पढ़ा गया था)। हार्डवेयर के बाकी हिस्सों को भी हटा दिया गया था, केवल mcu और नियामक हैं (और संकेतक श्रृंखला प्रतिरोधों के साथ लीड करता है)।

परिणाम

समय के 2/3, दिलचस्प कुछ भी नहीं होता है। पावर रुकावट के बाद, mcu ने अपना काम फिर से शुरू कर दिया, दोनों ब्राउन-आउट रीसेट और पावर-ऑन रीसेट संकेतक जलाए गए।

(छवि पर, लाल टॉगल किया गया पिन है, और नीला VCC है। इस छवि पर, 2.7 V ब्रोंवॉन-आउट स्पष्ट रूप से दिखाई देता है। मैंने अन्य ब्राउन-आउट सेटिंग्स के साथ एक ही परीक्षण किया, परिणाम बिल्कुल समान हैं, इसलिए मैं उन तस्वीरों को छोड़ दूंगा)

यह ठीक है

मोटे तौर पर समय के 1/3, ऊपर उल्लिखित बग होता है, और सत्ता वापस फिर से है जब, कोई भी भूरे बाहर रीसेट और रीसेट संकेतक शक्ति-ऑन की जलाया कर रहे हैं! आउटपुट अलग है, जैसे कि एमक्यू एक अजीब घड़ी के साथ टिक गया था। यह अराजक नहीं है, हालांकि, यह एक ही आवृत्ति के साथ टिक जाता है।

यह एक पागल अवस्था में पुनः आरंभ होता है

दिलचस्प बात यह है कि इस स्थिति में, ब्राउन-आउट डिटेक्टर पूरी तरह से निष्क्रिय प्रतीत होता है, क्योंकि अगले पावर रुकावट के बाद (जहां सही घड़ी कभी-कभी बहाल होती है, कभी-कभी नहीं), यह स्पष्ट रूप से दिखाई देता है कि आउटपुट भूरे रंग के बाद अच्छी तरह से टॉगल करता रहता है- आउट लेवल पास किया गया है। ऐसी स्थितियों में, घड़ी कभी-कभी तेज हो जाती है, दूसरी बार धीमी हो जाती है:

कोई ब्राउन-आउट नहीं, घड़ी तेज़ हो जाती है कोई ब्राउन-आउट नहीं, घड़ी धीमी हो जाती है

इन परीक्षणों के दौरान मैंने स्टार्ट-अप विलंब के लिए 16K CK / 14CK + 4.1 ms का उपयोग किया (लेकिन 65 ms देरी समस्याओं से बचती नहीं है)।

यहाँ एक चित्र ज़ूम किया गया है, जहाँ आप स्पष्ट रूप से देख सकते हैं कि VCC 2 V के तहत 5 V पर स्थिर अवस्था में पहुँचता है:

सफल शुरुआत, ज़ूम इन

उपरोक्त तस्वीर में, एमसीयू सही ढंग से शुरू हुआ।

दिलचस्प है, जब ऐसा नहीं होता है, तो आपूर्ति वोल्टेज एक स्थिर 5 वी तक भी जल्दी हो जाता है (ऐसा लगता है कि एमसीयू के कई हिस्से बिजली नहीं देते हैं, इसलिए यह स्टार्टअप के दौरान कम वर्तमान खींचता है)

नीचे एक असफल शुरुआत से एक छवि है:

असफल शुरुआत, ज़ूम इन हुई

कृपया ध्यान दें, कि आपूर्ति वोल्टेज स्थिर हो जाने के बाद, सॉफ्टवेयर एमएस 85% से अधिक चलने लगता है, इसके बजाय 10.5 एमएस की आवश्यकता होती है। स्टार्टअप देरी के लिए फ़्यूज़ अभी भी समान हैं, 16K CK / 14CK + 4.1 एमएस।

यह भी ध्यान रखना दिलचस्प है, कि आपूर्ति बंद होने के बाद, वीसीसी लगभग 1.1 से 1.2 वोल्ट पर स्थिर हो जाती है (पुराना, एटीमेगा 328 ए संस्करण लगभग 0.6 - 0.7 वी तक नीचे चला गया)। यह कई मिनट के लिए रहता है। यदि मैं लंबे समय तक प्रतीक्षा करता हूं (आधे घंटे या उससे अधिक के आदेश पर), एमसीयू हमेशा सही ढंग से शुरू होता है! तो ऐसा लगता है कि समस्या यह है कि चारों ओर 1.1 वोल्ट है, जो डेटाशीट के अनुसार, पावर-ऑन रीसेट के लिए पर्याप्त होने की गारंटी नहीं है। लेकिन यह भूरा-आउट रीसेट के लिए पर्याप्त होना चाहिए!

इन स्थितियों को छोड़कर, ब्राउन-आउट डिटेक्टर ठीक काम करता है। यह पहली छवि पर दिखाई देता है (आउटपुट सिग्नल बंद हो जाता है जब बोडलवेल तक पहुंच गया है, और वोल्टेज ड्रॉप धीमा हो जाता है, क्योंकि एमसीयू के हिस्से बंद हो जाते हैं)। मैंने परीक्षण किया जब मैंने bCClevel से थोड़ा नीचे VCC को कम किया और इसे फिर से चढ़ने दिया, mcu ने हमेशा ऐसी स्थितियों के तहत सही ढंग से पुनः आरंभ किया, जिसमें केवल ब्राउन-आउट रीसेट संकेतक जलाया गया था।

क्या मुझे कुछ स्पष्ट याद आ रहा है, या क्या ATmega328PB अपने ब्राउन-आउट डिटेक्टर में एक गंभीर बग है?

संपादित करें:

दिलचस्प रूप से, उपरोक्त समस्याएं केवल तब उत्पन्न होती हैं जब मैं नियामक के सामने आपूर्ति में बाधा डालती हूं। अगर मैं इसे रेगुलेटर के बाद बाधित करता हूं (या लैब पावर सप्लाई का उपयोग करता हूं), तो समस्याएं कभी नहीं होती हैं। जैसे कि बढ़ते वोल्टेज के आकार ने समस्याओं का कारण बना। हालांकि, जैसा कि आप पिछली छवि से देख सकते हैं, वोल्टेज वृद्धि काफी अच्छी है और यह जल्दी से स्थिर हो जाती है।

EDIT 2

मैंने इसे 20 मेगाहर्ट्ज के बजाय 16 मेगाहर्ट्ज के साथ आजमाया, लेकिन ठीक यही समस्या है।


क्या आपने Atmel से संपर्क किया है या उनके इरेटा में देखा है? इस दिन और उम्र में आईसी डिजाइन की गलतियां काफी आम हैं।
एडगर ब्राउन

मैंने इरेटास के माध्यम से देखा है (इस दिशा में कुछ भी नहीं मिला है), और हम Atmel से संपर्क करने पर विचार कर रहे हैं, लेकिन कुछ और परीक्षण करने से पहले और थोड़ा और अधिक देखने के बारे में नहीं।

3
मेरे अनुभव से निर्माता से संपर्क करने या उनके मंचों का उपयोग करने से पहले समय बर्बाद न करें। आपने बहुत मजबूत मामले को प्रस्तुत करने के लिए पर्याप्त डिबगिंग से अधिक बनाया है। इससे बहुत कम के साथ, टीआई ने मुझे उनके आंतरिक (अप्रकाशित) इरेटा में से एक को उनके आईसीएस के लिए भेजा जिसने हमारे मुद्दे को प्रलेखित किया।
एडगर ब्राउन

मेरे दो सेंट का मूल्य: मैंने अन्य सीपीयू के साथ समस्याओं को देखा है अगर बिजली बहुत तेज़ी से बढ़ती है। कुछ निर्माता अधिकतम वृद्धि समय निर्दिष्ट करते हैं लेकिन अधिक बार इसका उल्लेख नहीं किया जाता है।
ओल्डफार्ट

जवाबों:


3

मुझे नहीं लगता कि यह ब्राउन-आउट डिटेक्टर के साथ एक बग है, लेकिन आप चिप का उपयोग कैसे करते हैं।

जैसा कि आपने स्वयं कहा, पावर-ऑन रिसेट थ्रेशोल्ड 1.1 V तक नहीं पहुंचता है यदि पावर को केवल संक्षेप में हटा दिया जाता है और कनेक्ट किया जाता है, तो कोई POR नहीं होगा।

ब्राउन-आउट डिटेक्टर यहां बहुत मदद नहीं कर सकता है। आप 20 मेगाहर्ट्ज पर AVR का उपयोग कर रहे हैं, और इसके लिए आपूर्ति वोल्टेज 4.5 V या इसके बाद के संस्करण की आवश्यकता होती है, या आप चश्मा का उल्लंघन कर रहे हैं। और BOD यह गारंटी नहीं देता है कि यह 4.5 V पर यात्रा करेगा, यह आमतौर पर उससे कम है, 4.3 V का कहना है। इसलिए BOD ट्रिगर से पहले भी, इस बात की कोई गारंटी नहीं है कि AVR किस स्थिति में समाप्त होता है, लेकिन BOD को ट्रिगर करना चाहिए, सिवाय इसके कि यह हो सकता है आपके 20 मेगाहर्ट्ज घड़ी के कारण काम नहीं कर रहा है। जब वोल्टेज फिर से बढ़ने लगता है, तो आपूर्ति वोल्टेज फिर से सुरक्षित 4.5 V स्तर पर होने से पहले BOD निष्क्रिय हो जाता है। अगर इसे सही ढंग से ट्रिगर किया गया था। स्टार्ट-अप देरी का समय तब पर्याप्त रूप से सेट होना चाहिए कि आंतरिक रीसेट जारी होने से पहले वोल्टेज में बीओडी डिएक्टिवेशन स्तर से 4.5 वी तक वृद्धि हो।

लेकिन यह सब विफल हो सकता है क्योंकि इसे 20 मेगाहर्ट्ज पर चलाने के लिए कम से कम 4.5 वी की आवश्यकता होती है। AVR डेटाशीट में यह उल्लेख है कि यदि आंतरिक रीसेट सिस्टम अनुपयुक्त है, तो एक बाहरी रीसेट चिप का उपयोग करें, और इस मामले में ऐसा लगता है कि यह AVR को रीसेट करने के लिए आपके मुद्दों को हल करेगा इससे पहले कि वोल्टेज 4.5 V तक गिर जाए।


मुझे लगता है कि बीओडी खुद प्रोसेसर का उपयोग नहीं करता है लेकिन यह एक समर्पित हार्डवेयर है। शायद उन्होंने इसे पीबी संस्करण के लिए बदल दिया? मुझे आश्चर्य होगा यदि वे अब 20 मेगाहर्ट्ज के लिए बीओडी का समर्थन नहीं करते हैं। उच्चतम बोडलवेल 4.3 वी है, इसलिए 20 मेगाहर्ट्ज के लिए बाहरी बीओडी की आवश्यकता होगी? फिर भी, मुझे संदेह है कि यह एकमात्र कारण है। मैंने 20 मेगाहर्ट्ज, 2.7V बॉडीलेवल के साथ एक परीक्षण किया, वीसीसी को 3 वी पर सेट किया, यह ठीक चला। जब मैंने वोल्टेज को मैन्युअल रूप से 2.7 से थोड़ा कम कर दिया, तो आउटपुट बंद हो गया, जब मैंने इसे 2.7 से ऊपर बढ़ा दिया तो आउटपुट फिर से शुरू हो गया, हमेशा, यह कभी असफल नहीं हुआ, एक बार भी नहीं। केवल 1.1 V से एक स्टार्टअप BOD को अक्षम करता है।
१०

सबसे अधिक संभावना है कि यह समर्पित हार्डवेयर है, लेकिन बीओडी में किक करने से पहले अंडरवॉल्टेज के दौरान, क्या आप सुनिश्चित कर सकते हैं कि सीपीयू निष्पादन के लिए सही डेटा फ्लैश से प्राप्त होता है, और क्या सीपीयू उन्हें सही तरीके से निष्पादित करता है? यह आरक्षित रजिस्टरों के लिए यादृच्छिक डेटा लिख ​​सकता है जो अनिर्दिष्ट सामान करता है। पीबी संस्करण के लिए चश्मा बदल गए हैं, और उन्होंने पुराने चिप पर 20MHz के लिए BOD का समर्थन नहीं किया है। PB वैरिएंट में BOD और POR दोनों कर्व्स वास्तव में अलग-अलग हैं और बाद में निचले वोल्टेज में किक करते हैं।
Justme

कृपया मेरी दूसरी तस्वीर देखें। BOD सही ढंग से लगा हुआ था और उसने चिप को रीसेट कर दिया है। यह केवल अगले स्टार्टअप पर आरंभ करने में विफल रहता है। इसके अलावा, मैंने इस चिप को 3 V पर चलाया है और यह सही ढंग से कार्य करता है, कभी भी एक बार विफल नहीं हुआ।
१18 बजे १/१ '

खैर मेरी राय में चिप को सुरक्षित ऑपरेटिंग क्षेत्र से बाहर काम करने की आवश्यकता नहीं है, लेकिन चलो जारी रखें। BOD घड़ी विफलता डिटेक्टर को रीसेट नहीं करेगा, इसलिए केवल Power-On रीसेट और बाहरी रीसेट आंतरिक घड़ी से बाहर हो जाएगा। तो CFD फ्यूज सेटिंग्स को दोबारा जांचें। क्या आप बाहरी क्रिस्टल या बाहरी घड़ी का उपयोग कर रहे हैं? CFD फ्यूज पहले फुल स्विंग फ्यूज हो सकता था। और चूंकि पूर्ण स्विंग फ्यूज नहीं है, इसलिए क्रिस्टल के लिए अधिकतम आवृत्ति 16MHz है, और 20MHz को बाहरी तर्क स्तर घड़ी संकेत की आवश्यकता होती है। तो एक क्रिस्टल स्टार्टअप मुद्दा भी हो सकता है, इसलिए क्रिस्टल पिन पर भी गुंजाइश रखें।
Justme

मैं एक क्रिस्टल का उपयोग करता हूं। अच्छा आइडिया, मैं उस पर गौर करूंगा। कृपया ध्यान दें, वही चित्र जो मैंने छवियों के साथ दर्शाया है, कोई फर्क नहीं पड़ता कि सीएफडी चालू या बंद था।
१०:२५ बजे १/१ '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.