EEPROM का वास्तविक जीवनकाल क्या है?


21

ATMEL का कहना है कि EEPROM सेल का सेल जीवनकाल लगभग 100,000 लिखना चक्र / सेल है। यह वास्तव में कैसे EEPROM जंगली में प्रदर्शन करता है?

यदि मैं किसी सेल का मान नहीं बदलता, तो क्या यह जीवन भर का तनाव है? उदाहरण के लिए, अगर मैं मान लिखना 0xFFबार-बार एक ही सेल करने के लिए, इस लेखन के लिए किसी भी तरह से अलग है 0x00, 0xFF, 0x00आदि

जवाबों:


19

जैसा कि आप कहते हैं, आंतरिक EEPROM का जीवनकाल 100,000 लिखने का चक्र है। यह अनुमान नहीं है - ATmega328 का एक बहुत महत्वपूर्ण अनुपात इस अंक तक पहुंच जाएगा, जिसमें कोई समस्या नहीं होगी। मैंने पहले तीन प्रोसेसर का परीक्षण किया है, और सभी बिना किसी समस्या के 150,000 150,000 तक पहुंच गए हैं।

EEPROM की विफलता मोड को नोट करना महत्वपूर्ण है। अधिकांश "EEPROM विध्वंसक" परियोजनाएं बार-बार पढ़ / लिखती हैं जब तक कि डेटा बिल्कुल नहीं लिखा जाता है। इस बिंदु से पहले, EEPROM अभी भी क्षतिग्रस्त हो जाएगा। यह उचित अवधि के लिए डेटा को बनाए नहीं रखने से प्रकट होगा। इस कारण से 100,000 से अधिक लेखन चक्रों पर भरोसा करना नासमझी है।

EEPROM एक ATmega पर RAM के लिए अलग है। इसे लिखना सरल या त्वरित नहीं है, लेकिन यह उपयोगकर्ता से इस जटिलता को छिपाते हुए, एक अनुकूल Arduino लाइब्रेरी में लिपटा हुआ है ।

अप्रत्यक्ष स्तर का पहला स्तर EEPROM पुस्तकालय है , जो मामूली रूप से सरल है], सिर्फ पढ़ने और लिखने के लिए दो अन्य कार्यों को बुला रहा है। यह यहाँ पाया eeprom_write_byte कहता है

यह फ़ंक्शन इनलाइन असेंबली का उपयोग करता है, इसलिए इसे आसानी से नहीं समझा जा सकता है। एक टिप्पणी है जो हालांकि आसानी से समझ में आती है:

प्रोग्रामिंग मोड सेट करें: मिटाएं और लिखें

यह EEPROM से निपटने की जटिलताओं में से एक को संकेत देता है - इसे लिखने के लिए, आपको पहले इसे मिटाना होगा। इसका अर्थ है कि यदि आप EEPROM.write () कहते हैं, तो यह आपके द्वारा लिखे जा रहे मूल्य की परवाह किए बिना एक लेखन चक्र का प्रदर्शन करेगा।

इसका अर्थ है कि बार-बार 0xFF लिखने का प्रभाव 0xFF, 0x00,0xFF, 0x00 आदि लिखने के समान होगा।

इसके चारों ओर काम करने के तरीके हैं - आप EEPROM.read () से पहले EEPROM.read () को कॉल करने का प्रयास कर सकते हैं यह देखने के लिए कि क्या मूल्य पहले से ही समान है, लेकिन इसमें अतिरिक्त समय लगता है।

अत्यधिक EEPROM पहनने से बचने के लिए अन्य तकनीकें हैं, लेकिन उनका उपयोग आपके आवेदन पर निर्भर करता है।


3
EEPROM के लिए लेवलिंग पहनें: Electronics.stackexchange.com/questions/60342/…
jippie

9

मैंने एक बार 1 मिलियन अधिकतम रेटेड चक्रों के साथ एक बाहरी EEPROM पर एक प्रयोग चलाया। बड़े पैमाने पर भ्रष्ट होने में लगभग 6 मिलियन चक्र लगे और इससे पहले यह भ्रष्टाचार की छिटपुट मात्रा में आगे बढ़ चुका था।

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


2

http://hackaday.com/2011/05/16/destroying-an-arduinos-eeprom/

Arduino को एक दीवार के मस्से में लगाया गया और बैठ गया, "कुछ महीनों के लिए एक सोफे के पीछे।" EEPROM ने देखा कि यह 47 दिनों और 1,230,163 चक्रों के बाद पहली बार त्रुटि लिखना है। यह Atmel डेटाशीट पर कल्पना से बेहतर परिमाण का एक आदेश है, लेकिन समान प्रयोगों के परिणामों के समान है।


यह बहुत अधिक लगता है। मैंने पहले 150k से 200k के बारे में सुना था, लेकिन यह कभी नहीं: o
asheeshr

5
समस्या यह है कि यह सभी विफलता मोड का पता नहीं लगाता है। जब EEPROM क्षतिग्रस्त हो जाता है, तो क्या होता है समय की लंबाई है कि यह डेटा को बनाए रखेगा धीरे-धीरे कम हो जाता है। 100,000 साइकिल पर, Atmel 20 साल के डेटा प्रतिधारण की गारंटी देता है। इसके अलावा, डेटा प्रतिधारण कम हो जाता है। जब 1.2 मीटर साइकिल पहुंच जाती है, और आपको एक त्रुटि दिखाई देती है, तो यह तत्काल त्रुटि है। 1,230,160 चक्रों पर, तत्काल त्रुटि नहीं हो सकती है, लेकिन डेटा केवल दिनों के लिए बनाए रखा जा सकता है।
Cybergibbons

0

जादू का समाधान - यदि आप लिखना नहीं चाहते हैं कि साइबर्ग रिबन ने लिखने से पहले पढ़ने के बारे में क्या कहा, तो EEPROM.update () फ़ंक्शन है। यह वास्तव में ऐसा करता है:

EEPROM.update (पता, मूल्य);

यदि मेमोरी पहले से ही स्टोर की गई है, तो वैल्यू केवल लिख और स्ट्रेस करेगी।

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