نحوه محافظت از حافظه eeprom از پاک شدن

Mahdavi

همکار جدید
حافظه eeprom میکرو زمانی پاک میشود که ولتاز تغذیه میکرو با شیب افزایش یا کاهش پیدا کند .که برای جلوگیری از پاک شدن eeprom باید فیوز بیت BODEN رو فعال کرد .و وظیفه این فیوز بیت این هستش که اگه ولتاژ میکرو از یه مقداری کم بشه میکرو رو در حالت ریست نگه میداره .photo_2016-04-06_15-04-38.jpg
photo_2016-04-06_14-40-42.jpg
که برای تعیین مقدار سطح ولتاژ باید باید از فیوزبیت BOODLEVEL استفاده کنید. البته سطح ولتاژ باتوجه به نوع میکرو میتواند تعداد و اعداد متفاوتی داشته باشد مثلا برای مگا8 نوعا 2.7 و4 ولت وبرای TINY2313مقدار 1.8 ، 2.7 و 4.3 ولت می باشد که با استفاده از فیوزبیت BODLEVEL می شود مقدار آن را تعیین کرد.
1.png photo_2016-04-06_14-54-38.jpg
البته کار دیگه ای که باید علاوه بر این انجام بدیم و از پاک شدن حافظه EEPROM جلوگیری کنیم این هستش که اطلاعات رو در چند بایت اول ذخیره نکنیم.
با تشکر فراوان از اقای هادی اسدی به خاطر اطلاعات مفیدشون
 
آخرین ویرایش:
  • Like
واکنش‌ها[ی پسندها]: Alma

mohammad_azizi

همکار
کسی کتابخانه EEPROM داره
واسه avr میخوام یه عدد 16 بیتی میخوام توش بریزم و بخونم
 

Alma

مدیر
پرسنل مدیریت
کسی کتابخانه EEPROM داره
واسه avr میخوام یه عدد 16 بیتی میخوام توش بریزم و بخونم

میخوایید از eeprom داخلی استفاده کنید ؟؟؟
برای این کار که نیازی به کتابخونه نیست


اگر کامپایلر شما GCC باشه فقط کافیه یه متغیر از نوع EEMEMتعریف کنید

کد:
EEMEM    uint16_t    E_data;

قبلش هم باید فایل eeprom.h رو به پروژه اضافه کنید

کد:
#include <avr/eeprom.h>

فقط توجه داشته باشید که نوشتن این متغیرمحدودیت داره و نباید مدام اقدام به نوشتن کنید در ضمن بعد از نوشتن برای تکمیل عملیات نوشتن حتما حدود 1 میلی ثانیه تاخیر ایجاد کنید

برای خوندن و نوشتن متغیر فوق هم باید از توابع خاصی استفاده بشه برای مثال برای خوندن یک متغیر 16 بیت باید از تابع eeprom_read_word و برای نوشتن اون از تابع eeprom_write_word استفاده کنید

کد:
eeprom_write_word(&E_data, 125);
....
val = eeprom_read_word(&E_data);

برای اطلاعات بیشتر و روش استفاده از توابع به این لینک میتونید رجوع کنید
 

mohammad_azizi

همکار
آقا شرمنده من یادم رفته بود بگم External Eeprom

24cxx
نمیدونم چرا سوال ها رو درست مطرح نمی کنم منو ببخشید
 

Alma

مدیر
پرسنل مدیریت
آقا شرمنده من یادم رفته بود بگم External Eeprom

24cxx
نمیدونم چرا سوال ها رو درست مطرح نمی کنم منو ببخشید

در این صورت نیاز به کتابخونه هست

میتونید از کتابخونه ای که ضمیمه پست شده استفاده کنید که I2C به صورت سخت افزاری پیکر بندی شده

برای اینکه بتونید به صورت نرمافزاری استفاده کنید میتونید با اعمال تغییراتی I2C رو به صورت نرم افزاری بنویسید که باز کتابخونه بعدی SoftI2Clib_for_AVR.zip این کارو میکنه
 

پیوست‌ها

  • at24cxxx.rar
    3.7 کیلوبایت · بازدیدها: 3
  • SoftI2Clib_for_AVR.zip
    129.9 کیلوبایت · بازدیدها: 3
بالا پایین