हाँ, आप मैन्युअल रूप से स्रोत कोड में EEPROM को डिफ़ॉल्ट डेटा लिख सकते हैं। पहले, EEPROM पर AVR: डीन के AVR EEPROM ट्यूटोरियल के साथ इस भयानक गाइड की जाँच करें । इसके अलावा, मुझे यह जोड़ना चाहिए कि यह एक बेहतर विचार है। एक मेकाइल का उपयोग करके EEPROM डेटा युक्त एक .P फ़ाइल बनाना है जिसे स्रोत कोड के साथ डिवाइस पर प्रोग्राम किया जाएगा। हालांकि, यदि आप विभिन्न मेकफाइल और लिंकर संचालन से अपरिचित हैं, तो यह अभी भी आपके स्रोत कोड फ़ाइल के भीतर से किया जा सकता है - यह सिर्फ सर्किट के संचालित होने के साथ ही होगा, प्रारंभिक प्रोग्राम ऑपरेशन को रोकते हुए।
कार्यक्रम की शुरुआत में (मुख्य लूप के किसी भी प्रकार से पहले) आप कुछ ऐसा कर सकते हैं:
#include <avr/eeprom.h>
#define ADDRESS_1 46 // This could be anything from 0 to the highest EEPROM address
#define ADDRESS_2 52 // This could be anything from 0 to the highest EEPROM address
#define ADDRESS_3 68 // This could be anything from 0 to the highest EEPROM address
uint8_t dataByte1 = 0x7F; // Data for address 1
uint8_t dataByte2 = 0x33; // Data for address 2
uint8_t dataByte3 = 0xCE; // Data for address 3
eeprom_update_byte((uint8_t*)ADDRESS_1, dataByte1);
eeprom_update_byte((uint8_t*)ADDRESS_2, dataByte2);
eeprom_update_byte((uint8_t*)ADDRESS_3, dataByte3);
"अपडेट" फ़ंक्शन पहले यह देखने के लिए जांचता है कि क्या यह मूल्य पहले से ही है, अनावश्यक लिखने पर बचाने के लिए, ईईपीआरओ जीवन को संरक्षित करना। हालाँकि, बहुत सारे स्थान के लिए ऐसा करने में काफी समय लग सकता है। किसी एक स्थान की जाँच करना बेहतर हो सकता है। यदि यह वांछित मूल्य है, तो बाकी अपडेट को पूरी तरह से छोड़ दिया जा सकता है। उदाहरण के लिए:
if(eeprom_read_byte((uint8_t*)SOME_LOCATION) != DESIRED_VALUE){
eeprom_write_byte((uint8_t*)SOME_LOCATION, DESIRED_VALUE);
eeprom_update_byte((uint8_t*)ADDRESS_1, dataByte1);
eeprom_update_byte((uint8_t*)ADDRESS_2, dataByte2);
eeprom_update_byte((uint8_t*)ADDRESS_3, dataByte3);
}
यदि आप बड़ी मात्रा में डेटा अपडेट करना चाह रहे हैं, तो अन्य कार्यों जैसे कि उपयोग करने का प्रयास करें eeprom_update_block(...)
। और उस ट्यूटोरियल को जरूर पढ़ें; यह अच्छी तरह से लिखा गया है।
आप सभी EEPROM अपडेट स्टेटमेंट को एक एकल प्रीप्रोसेसर कंडीशनल स्टेटमेंट में रख सकते हैं। यह करना बहुत आसान है:
#if defined _UPDATE_EEPROM_
#define ADDRESS_1 46 // This could be anything from 0 to the highest EEPROM address
uint8_t dataByte = 0x7F; // Data for address 1
eeprom_update_byte((uint8_t*)ADDRESS_1, dataByte1);
#endif // _UPDATE_EEPROM_
जब तक आप निम्न कार्य नहीं करेंगे तब तक यह बिट कोड भी संकलित नहीं किया जाएगा:
#define _UPDATE_EEPROM_
आप इसे एक टिप्पणी के रूप में छोड़ सकते हैं, फिर अगर आपको डिफ़ॉल्ट EEPROM मानों को बदलने की आवश्यकता है तो असहजता। सी प्रीप्रोसेसर पर अधिक जानकारी के लिए, यह ऑनलाइन मैनुअल देखें । मुझे लगता है कि आप मैक्रोज़ और सशर्त बयानों के अनुभागों में सबसे अधिक दिलचस्पी ले सकते हैं।