जवाबों:
हाँ तुम कर सकते हो। मैंने कई बार ऐसा किया है।
हालांकि, अलग EEPROM का उपयोग करने के लिए कुछ कमियां हैं:
कई PIC18 की मेमोरी EEPROM है, आकार में 1K तक। दुर्भाग्य से PIC18F46J50 आप संदर्भ नहीं है। यदि EEPROM उपलब्ध है, तो यह आपके डेटा के लिए पर्याप्त बड़ा है, तो यह बेहतर विकल्प है, क्योंकि EEPROM में न्यूनतम 1,000,000 मिटा / चक्र हैं, और फ्लैश केवल 10,000 है।
अधिकांश अन्य माइक्रोकंट्रोलर्स की तरह PIC18, हार्वर्ड आर्किटेक्चर कहलाता है, जिसका अर्थ है कि प्रोग्राम और डेटा के लिए भौतिक रूप से अलग-अलग पता योग्य क्षेत्र हैं (यानी आपके पास प्रोग्राम एड्रेस 4 और डेटा एड्रेस 4 हो सकते हैं, और वे समान नहीं हैं)। इसलिए आप सी या असेंबली भाषा में सामान्य तरीकों का उपयोग करके फ्लैश मेमोरी को पढ़ या लिख नहीं सकते हैं।
इसके बजाय, PIC18 परिवार पर, आप TBLPTR नामक एक 22-बिट रजिस्टर में एक प्रारंभिक पता सेट करते हैं। फ्लैश से बाइट्स पढ़ने के लिए, आप एक TBLRD निर्देश का उपयोग करते हैं। आपके द्वारा मैन्युअल रूप से ऐसा करने की आवश्यकता नहीं है पढ़ने के बाद पते को स्वचालित रूप से बढ़ाने या घटाने का विकल्प है।
फ्लैश मेमोरी को लिखने के लिए, आपको फ्लैश मेमोरी के एक या अधिक 64-बाइट ब्लॉक को मिटाना होगा जो पहले लिखा जाएगा। TBLPTR में फिर से शुरुआती पता लगाने के बाद, और मिटाए गए ऑपरेशन को शुरू करने के लिए कुछ अन्य रजिस्टरों में मानों को बाधित किया जाता है, इंटरप्ट को अक्षम किया जाता है और फिर आपको 0x55 के बाद तुरंत 0xAA को एक रजिस्टर में लिखना होगा; यह इरेज़ कमांड को अनलॉक करता है और गलत कोड को गलती से मेमोरी को मिटा देने से रोकने के लिए आवश्यक है। अंत में वास्तव में मिटाए जाने की आज्ञा को क्रियान्वित किया जाता है, इसके बाद इंटरप्ट को फिर से सक्षम किया जाता है।
मेमोरी को राइट करना मिटाने के समान है, सिवाय ब्लॉक साइज के छोटा है। लेखन वास्तव में एक TBLWT अनुदेश का उपयोग करके निष्पादित किया जाता है, जो TBLRD अनुदेश की तरह ऑटो वेतन वृद्धि / गिरावट भी देता है।
कॉन्फ़िगरेशन डेटा को सहेजने के अलावा, फ्लैश मेमोरी को लिखने से किसी को अपने फर्मवेयर को "हवा में फर्मवेयर" कहा जाता है। आपको फर्मवेयर की एक निश्चित ब्लॉक की आवश्यकता होती है, आमतौर पर प्रोग्राम मेमोरी की शुरुआत में, जो ब्लूटूथ मॉड्यूल, वाई-फाई, सेलुलर मॉड्यूल या यहां तक कि वायर्ड कनेक्शन से अपडेट प्राप्त कर सकता है, और एक निश्चित बिंदु से ऊपर फ्लैश को अपडेट कर सकता है। नए कोड के साथ कार्यक्रम (जैसे "बाड़")। अपडेट पूरा होने के बाद, एक रीसेट शुरू किया जाता है, और नया कोड उपयोग में लाया जाता है।
PIC परिवार के अलावा कई अन्य माइक्रोकंट्रोलर अपनी फ्लैश मेमोरी को अपडेट करने की क्षमता रखते हैं; अधिकांश विन्यास रजिस्टर, एक पता सूचक, और विशेष निर्देशों के कुछ संयोजन का उपयोग करते हैं।