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

شروع موضوع توسط Mahdavi ‏6/4/16 در انجمن AVR

  1. Mahdavi

    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 جلوگیری کنیم این هستش که اطلاعات رو در چند بایت اول ذخیره نکنیم.
    با تشکر فراوان از اقای هادی اسدی به خاطر اطلاعات مفیدشون
    آخرین ویرایش: ‏6/4/16
    Alma از این پست تشکر کرده است.
  2. mohammad_azizi

    mohammad_azizi همکار

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

    Alma مدیر عضو کادر مدیریت

    میخوایید از 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);

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

    mohammad_azizi همکار

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

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

    Alma مدیر عضو کادر مدیریت

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

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

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

    پیوست ها:

به اشتراک بگذارید