نمایش نتایج: از 1 به 10 از 15
Like Tree11 لایک

موضوع: نوشتن ، خواندن و جستجو در eeprom یا حافظه flash

Hybrid View

  1. #1
    Member
    تاریخ عضویت
    Aug 2014
    نوشته ها
    76
    نقل قول نوشته اصلی توسط malip نمایش پست ها
    سلام
    من میخوام اطلاعاتی رو در حافظه eeprom یا حافظه flash ذخیره سازی کنم و بتونم این اطلاعات را برای چک کردن با اطلاعات ورودی جستجو کنم . لطفا اگه کسی میتونه کمکم کنه
    ممنون
    سلام
    میکروکنترلری که روی برد های آردوینو هست ، 512 بایت حافظه EEPROM وجود دارد (به جز میکرو های 1280 و 2560 که دارای 4096 بایت معادل 4 کیلوبایت حافظه هستند) که می توان برای کار های مختلف روی آنها نوشت یا اطلاعات آنرا خواند. این اطلاعات پس از خاموش شدن بورد از بین نخواهند رفت.

    برای کار با EEPROM آردوینو ابتدا لازمه کتابخانه EEPROM.H رو فراخوانی کنید

    برای نوشتن اطلاعات باید از تابع EEPROM.write() استفاده کنید ، این تابع دارای دو پارامتر آدرس و مقدار است.

    نمونه کد زیر اطلاعاتی را از پین آنالوگ دریافت کرده و آنها را به ترتیب در خانه های EEPROM ذخیره می کند


    کد:
     
    #include <EEPROM.h>
    
    int addr = 0;
    
    void setup()
    {
    }
    
    void loop()
    {
      int val = analogRead(0) / 4;
     
       EEPROM.write(addr, val);
     
       addr = addr + 1;
      if (addr == 512)
        addr = 0;
     
      delay(100);
    }
    ویرایش توسط bunnysa : 08-23-2014 در ساعت 12:11 PM

  2. #2
    Member
    تاریخ عضویت
    Aug 2014
    نوشته ها
    76
    و اما برای خواندن اطلاعات از روی EEPROM لازم است ابتدا کتابخانه مربوطه را فراخوانی کرده و بعد با استفاده از تابع EEPROM.Read اطلاعات درون حافظه را بازخوانی کنید
    تابع Read یک پارامتر دارد که آن هم چیزی نمی تواند باشد جز آدرس

    نمونه کد زیر هم اطلاعات هر خانه از EEPROM را به ترتیب می خواند و در کنسول (روی سریال) خروجی می دهد.

    کد:
    #include <EEPROM.h>
    
    
    int address = 0;
    byte value;
    
    void setup()
    {
    
      Serial.begin(9600);
      
    }
    
    void loop()
    {
    
      value = EEPROM.read(address);
     
      Serial.print(address);
      Serial.print("\t");
      Serial.print(value, DEC);
      Serial.println();
     
    
      address = address + 1;
     
      if (address == 512)
        address = 0;
       
      delay(100);
    }

  3. #3
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    برای نوشتن در حافظه EEPROM باید فقط از int استفاده کنم؟
    یعنی نمیتونم یه متغیر string رو در این حافظه بنویسم؟

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    برای نوشتن در حافظه EEPROM باید فقط از int استفاده کنم؟
    یعنی نمیتونم یه متغیر string رو در این حافظه بنویسم؟

    ظاهرا بایت بایت می فرسته

    How to write a string in eeprom ?

    Arduino Playground - EEPROMWriteAnything
    لایک کردن

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    ممنون از پاسختون
    اما مشکلی که هست من فایل EEPROMAnything.h رو میسازم اما وقتی میخوام اون رو اد کنم به پروژه اصلی ارور میده و فایل رو پاک میکنه مشکل کجا هست؟
    خب از این کد استفاده کنید:
    کد:
    #include <avr/eeprom.h>
    
    struct settings_t
    {
    long alarm;
    int mode;
    } settings;
    
    void setup()
    {
      eeprom_read_block((void*)&settings,(void*)0,sizeof(settings));
    // ...
    }
    void loop()
    {
    // let the user adjust their alarm settings
    // let the user adjust their mode settings
    // ...
    
    // if they push the "Save" button, save their configuration
    if(digitalRead(13)== HIGH)
          eeprom_write_block((constvoid*)&settings,(void*)0,sizeof(settings));
    }

  6. #6
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    خب از این کد استفاده کنید:
    کد:
    #include <avr/eeprom.h>
    
    struct settings_t
    {
    long alarm;
    int mode;
    } settings;
    
    void setup()
    {
      eeprom_read_block((void*)&settings,(void*)0,sizeof(settings));
    // ...
    }
    void loop()
    {
    // let the user adjust their alarm settings
    // let the user adjust their mode settings
    // ...
    
    // if they push the "Save" button, save their configuration
    if(digitalRead(13)== HIGH)
          eeprom_write_block((constvoid*)&settings,(void*)0,sizeof(settings));
    }
    فایل رو موفق شدم اد کنم
    اما متوجه نمیشم کد زیر چیکار میکنه
    برای خواندن از روی حافظه قاعدتا باید فقط آدرس بخواد اما این configuration رو هم نیاز داره

    struct config_t
    {
    long alarm;
    int mode;
    } configuration;

    من میخوام یک متغیر string رو روی EEPROM بنویسم و بعدش بخونم اما هنوز موفق نشدم

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    فایل رو موفق شدم اد کنم
    اما متوجه نمیشم کد زیر چیکار میکنه
    برای خواندن از روی حافظه قاعدتا باید فقط آدرس بخواد اما این configuration رو هم نیاز داره

    struct config_t
    {
    long alarm;
    int mode;
    } configuration;

    من میخوام یک متغیر string رو روی EEPROM بنویسم و بعدش بخونم اما هنوز موفق نشدم

    اگر عجلیه دارید می تونید فعلا یه معادل براش در نظر بگیرید تا منم دنبال راه حل بگردم

  8. #8
    Junior Member
    تاریخ عضویت
    Mar 2016
    نوشته ها
    29
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    اگر عجلیه دارید می تونید فعلا یه معادل براش در نظر بگیرید تا منم دنبال راه حل بگردم
    نه فعلا عجله ای نیست
    خیلی هم متشکرم از پاسختون

  9. #9
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammad pc نمایش پست ها
    فایل رو موفق شدم اد کنم
    اما متوجه نمیشم کد زیر چیکار میکنه
    برای خواندن از روی حافظه قاعدتا باید فقط آدرس بخواد اما این configuration رو هم نیاز داره
    من میخوام یک متغیر string رو روی EEPROM بنویسم و بعدش بخونم اما هنوز موفق نشدم
    اینم بخونید لطفا :
    Arduino Playground - EepromUtil
    لایک کردن

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO