اطلاعیه

Collapse
No announcement yet.

نوشتن و خواندن از eeprom داخلی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نوشتن و خواندن از eeprom داخلی

    سلام بر دوستان عزیز

    چطور می تونم یه مقدار ثابت رو در eeprom داخلی میکرو با استفاده از ccs بنویسم؟ من این کار رو با استفاده از توابع write_eeprom وread_eeprom انجام می دم، ولی مقادیر به صورت ثابت نیستن و هر بار با ریست شدن میکرو این توابع اجرا شده و مقادیر از اول نوشته می شن.

    یادم میاد وقتی با کدویا¾ژن می خواستم همچین کاری انجام بدم، مثلا متغییر رو به صورت زیر تعریف می کردم :

    کد:
    eeprom char mychar;
    دنبال همچین دستوری واسه ccs می گردم. در ضمن ازمیکروی سری 18F به شماره ی 18f4620 که 1کیلو بایت eeprom داره استفاده می کنم. پیشاپیش ممنون از راهنماییتون
    مشکلی نیست که آسان نشود مرد میخواهد که هراسان نشود

    #2
    پاسخ : نوشتن و خواندن از eeprom داخلی

    سلام
    منظورتون رو درست نگرفتم
    اگر منظورتون فقط یک مقدار ثابته خوب این میشه همون ثابت ها ، constants یا تعاریف که با دستور define در ccs تعریف میشن.
    اگر منظورتون مقدار دهی اولیه به متغیر های داخل EEPROM هست یا اینکه می خواین از یک اسم برای کار با آدرس EEPROM استفاده کنید، این نمونه رو که من از خودم در آوردم و ازش استفاده می کنم و مشکلی باهاش نداشتم رو نگاه کنید. اگر متوجه نشدید بگید خدمتتون عرض کنم:

    کد:
    //-----------------------EEPROM--------------------------------
    #define min_add   0x10
    #define hou_add   0x20
    #define all_add   0x30
    #define all_min_add 0x38//end is 0x3f
    #define firsttime  0x40
    #define last_takhir_add 0x50
    #define filter_finished_add 0x60
    #define byhand_add  0x70
    #define byfoot_add  0x80
    #define count_add  0x90
    #define version_add 0xa0
    #define service_add 0xb0
    //-----------------------Values-----------------------------
    #define notfirsttime 0x55
    کد:
    if(read_eeprom(firsttime)!=notfirsttime)//its first time
      {
       write_eeprom(firsttime,notfirsttime);
       takhir=7000;
       min=0;
       hou=0;
       filter_finished=0;
       write_eeprom(min_add,min);
       write_eeprom(hou_add,hou);
       write_long_eeprom(last_takhir_add,takhir);
       write_long_eeprom(all_add,0);
       write_eeprom(all_min_add,0);
       write_eeprom(filter_finished_add,0);
       write_eeprom(version_add,1);
       write_eeprom(count_add,1);
       write_eeprom(byhand_add,0);
       write_eeprom(byfoot_add,0);
       write_eeprom(service_add,0);
      }
      else if(read_eeprom(firsttime)==notfirsttime)//machine is used and have some setting from before
      {
       min=read_eeprom(min_add);
       hou=read_eeprom(hou_add);
       takhir=read_long_eeprom(last_takhir_add);
       filter_finished=read_eeprom(filter_finished_add);
       byhand=read_eeprom(byhand_add);
       byfoot=read_eeprom(byfoot_add);
       continuous=read_eeprom(count_add);
       power=continuous;
       service_required=read_eeprom(service_add);
      }
    این رو البته از وسط برنامه ی یکی از دستگاه هام برداشتم.
    دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

    دیدگاه


      #3
      پاسخ : نوشتن و خواندن از eeprom داخلی

      سلام

      لوپ کلام هدف من اینه : نوشتن یک سری دیتا روی eeprom ،که مربوط به کالیبراسیون دستگاه هستن. و قفل کردن eeprom ، در حالی که فلش لاک نشده باشه. در ضمن دیتای کالیبراسیون هر دستگاه هم با اون یکی فرق می کنه.

      البته با همین کلکی که شما زدی firsttime و notfirsttime می شه یه کارایی کرد. :smile:

      مشکلی نیست که آسان نشود مرد میخواهد که هراسان نشود

      دیدگاه


        #4
        پاسخ : نوشتن و خواندن از eeprom داخلی

        نوشته اصلی توسط رضا
        سلام

        لوپ کلام هدف من اینه : نوشتن یک سری دیتا روی eeprom ،که مربوط به کالیبراسیون دستگاه هستن. و قفل کردن eeprom ، در حالی که فلش لاک نشده باشه. در ضمن دیتای کالیبراسیون هر دستگاه هم با اون یکی فرق می کنه.

        البته با همین کلکی که شما زدی firsttime و notfirsttime می شه یه کارایی کرد. :smile:

        فقط یادتون باشه که موقع تعریف مقدار برای firsttime variabale اون رو چیزی مثل ff یا 0 ندید . چون ممکنه که این مقدار پیش فرض حافظه باشه و اونوقت این کد بی تاثیر میشه.( من اینجا 55 گذاشتم که به عنوان مقدار اولیه چیز بعیدیه)
        بد نیست قبل از این که این کار رو بکیند با پروگرامر یک آی سی نو رو بردارید eeprom اون رو بخونید تا یه وقت این دوتا یکی نباشن
        دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

        دیدگاه

        لطفا صبر کنید...
        X