صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 15
Like Tree11 لایک

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

  1. #1
    Junior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    5

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

    سلام
    من میخوام اطلاعاتی رو در حافظه eeprom یا حافظه flash ذخیره سازی کنم و بتونم این اطلاعات را برای چک کردن با اطلاعات ورودی جستجو کنم . لطفا اگه کسی میتونه کمکم کنه
    ممنون

  2. #2
    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 در ساعت 11:11 AM

  3. #3
    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);
    }

  4. #4
    Member
    تاریخ عضویت
    Aug 2014
    نوشته ها
    76
    اطلاعات بیشتر در لینک زیر
    Arduino - EEPROM
    لایک کردن

  5. #5
    Junior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    5
    سپاسگذار لطفتون اما من این برنامه ها رو تو مثالها دیده بودم من در اصل میخوام uid که از rc522 استخراج میشه(پس از انطباق uid مستر کارت که تو برنامه ثبت شده و رفتن به زیر برنامه مدیریت و ثبت کارتها) رو بریزم تو حافظه و در موقع نیاز (خواندن کارت جدید)حافظه رو جستجو کنم و در صورت انطباق کار لازم رو انجام بدم ممنون میشم اگه راهنمایی کنید

  6. #6
    Senior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    183
    نقل قول نوشته اصلی توسط malip نمایش پست ها
    سپاسگذار لطفتون اما من این برنامه ها رو تو مثالها دیده بودم من در اصل میخوام uid که از rc522 استخراج میشه(پس از انطباق uid مستر کارت که تو برنامه ثبت شده و رفتن به زیر برنامه مدیریت و ثبت کارتها) رو بریزم تو حافظه و در موقع نیاز (خواندن کارت جدید)حافظه رو جستجو کنم و در صورت انطباق کار لازم رو انجام بدم ممنون میشم اگه راهنمایی کنید
    یعنی الان میخواید کل برنامه رو براتون بنویسیم؟

    از طرفی اگر تعداد کارت ها زیاد شه حافظه جواب گو نیست بهتره از Sd card استفاده کنید

  7. #7
    Junior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    5
    نه آقای محترم همین که کمی راهنمایی کنید ممنون میشم
    بقیه شو بعدا میپرسم

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

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

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

    How to write a string in eeprom ?

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

  10. #10
    مدیر گروه
    تاریخ عضویت
    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));
    }

صفحه 1 از 2 12 آخرینآخرین

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

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

SEO by vBSEO