NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4827 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 6 از 6

موضوع: مشکل یا ایپرام - کدویژن

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2009
    نوشته ها
    42
    تشکر
    10
    تشکر شده 2 بار در 2 پست

    پیش فرض مشکل یا ایپرام - کدویژن

    سلام
    خسته نباشید
    دوستان میشه یه نفر ما رو در مورد این ایپرام شیرفهم کنه ؟
    ببینین فرض کنین من می خام یوزرنیم و پسورد رو توی ایپرام ذخیره کنم (که به صورت پیش فرض هم مقدار اولیه داشته باشن) و بعد کاربر بتونه از توی برنامه اونا رو تغییر بده .

    حالا من از این کد استفاده کردم :

    [PHP]#pragma warn-
    eeprom char user[]="admin";
    eeprom char pass[]="123456";
    #pragma warn+
    [/PHP]خوب حالا برنامه رو که کامپایل کنیم یه فایل .eep داریم . من اونو باس بریزم روی ایپرام میکرو .

    سوال 1 - حالا از این به بعد که برنامه رو دارم دستکاری می کنم دیگه نیازی به پروگرم کردم ایپرام نیست دیگه ؟ فقط فلش رو باس پروگرم کنم دیگه ؟
    بعد اون کد رو بعد از اینکه ایپرام رو پروگرم کردم به این صورت تغییر بدم ؟
    [PHP] #pragma warn-
    eeprom char user[];
    eeprom char pass[];
    #pragma warn+
    [/PHP]///////////////
    سوال 2 -
    حالا توی برنامه چطور این دو تا متغیر رو بریزم توی رم ؟ تا بتونم استفاده کنم ؟ و بعد از رم بریزم توی ایپرام مثلن ؟

    من از این کد استفاده کردم :
    [PHP]
    char r[];

    void main(){

    char flash *ptr_to_flash;
    char eeprom *ptr_to_eeprom;
    char *ptr_to_ram;


    ptr_to_flash=f;
    ptr_to_eeprom=e;


    ptr_to_eeprom=user;
    ptr_to_ram=r;
    while (*ptr_to_eeprom)
    *ptr_to_ram++=*ptr_to_eeprom++;
    lcd_print(5,5,r);

    ptr_to_eeprom=pass;
    ptr_to_ram=r;
    while (*ptr_to_eeprom)
    *ptr_to_ram++=*ptr_to_eeprom++;
    lcd_print(5,7,r);
    *ptr_to_ram=0;

    while (1);

    } // end main[/PHP]اما این روش به من فقط محتویات متغیر اول رو نشون میده . و برای متغیر دوم دیتای نامعتبر میده (مثلا همون متغیر اولو نشون میده)
    کلن یه مثال جامع از کار کردن به چند تا متغیر تو ایپرام اگه بگین خیلی ممنون میشم
    ویرایش توسط piremard : 26-12-2010 در ساعت 22:36

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    سلام

    شما چرا برای دسترسی به حافظه eeprom از حافظه اصلی خودتون استفاده نمی کنید ؟
    منظورم اینه که نیازی به بار کردن کدی تو حافظه eeprom نیست .

    براحتی می تونید با استفاده از تعریف متغییر هایی که با استفاده از دستور eeprom char این کار رو انجام بدین .
    روند کار خیلی آسونتر از اونی هست که شما فکرش رو می کنید . !

    مراحل به صورت زیر هستش :
    1-تعریف متغییر در حافظه eeprom
    2- ذخیره کردن دیتای وردی در متغییر تعریف شده در حافظه eeprom
    3- همین !

    مثالش هم به صورت زیر میشه :

    کد:
    #include <mega64.h>
    #include <mem.h>
    
    
    eeprom  char x;
    
    
    void write_eeprom(unsigned char y)
     {
       x=y;    
     }   
    
    
    
    void main(void) 
     {  
        int i;
        i=25;
        write_eeprom(i);
     }
    تو این مثال روند خیلی ساده هستش ( البته مطمئن هستم که خودتون متوجه شدین) مقدار متغییر i در متغییر y ذخیره شده و ادامه این مقدار در حافظه eeprom (متغییر x) ذخیره میشه .

    فقط یه بار اول کاری حافظه eeprom رو پاکش کنید و بزارید سیستم کار خودش رو انجام بده که نهایتاً نتیجه این میشه که هر نوع مقداری رو به متغییر i بدین در متغییر x واقع در لوکیشن eeprom ذخیره میشه .
    می تونید براحتی دیتای i رو از محیط بیرون (از طریق یکی از اینترفیس ها) به میکرو بدین .
    برنامه ای که شما نوشتین در بحث لایبری های دینامیک خروجی از حافظه eeprom کاربرد داره . یکی از کاربردهاش هم درایور نویسی lcd های خاص هستش(که البته الان فکر نکنم دیگه کسی از این شیوه استفاده کنه) .

    موفق باشید .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  4. کاربران : 2 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  5. #3
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2009
    نوشته ها
    42
    تشکر
    10
    تشکر شده 2 بار در 2 پست

    پیش فرض

    بسیار ممنون
    فقط در مورد این قسمتش :

    نقل قول نوشته اصلی توسط PGT نمایش پست ها
    برنامه ای که شما نوشتین در بحث لایبری های دینامیک خروجی از حافظه eeprom کاربرد داره . یکی از کاربردهاش هم درایور نویسی lcd های خاص هستش(که البته الان فکر نکنم دیگه کسی از این شیوه استفاده کنه) .
    اون قسمتایی که من نوشتم برای انتقال مقدار ایپرام به رم بود . راه بهتری هست براش ؟ مثال خود کدویژن اینطور بود .
    (به این خاطر تو رم ریختم که بتونم به توابع دیگه بفرستم مقدارشو)

    ممنون

  6. #4
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    سلام

    اون قسمتایی که من نوشتم برای انتقال مقدار ایپرام به رم بود . راه بهتری هست براش ؟
    خب این کار رو می تونستید به صورت استاتیک تو حافظه فلش انجام بدین دیگه .
    یعنی کد دستور تو حافظه فلش ذخیره بشه ولی منطقه عملیاتی روی حافظه eeprom باشه ( یعنی دقیقا همین روشی که تو مثال ذکر شد)

    مثال خود کدویژن اینطور بود .
    موردی نداره شاید یه مثال کلی بوده، همون طور که ذکر کردم یه مورد دیگر از کاربردش لایبری دینامیک برای راه اندازی lcd هستش .

    موفق باشید .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  7. کاربران : 2 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  8. #5
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2009
    نوشته ها
    42
    تشکر
    10
    تشکر شده 2 بار در 2 پست

    پیش فرض

    نقل قول نوشته اصلی توسط pgt نمایش پست ها
    سلام



    خب این کار رو می تونستید به صورت استاتیک تو حافظه فلش انجام بدین دیگه .
    یعنی کد دستور تو حافظه فلش ذخیره بشه ولی منطقه عملیاتی روی حافظه eeprom باشه ( یعنی دقیقا همین روشی که تو مثال ذکر شد)
    ممنون
    +
    و ببخشید بازم که من هنوز متوجه نشدم که شما دقیقا برای قرار دادن یک مقدار از ایپرام توی یه متغیر در حافظه فلش چه کدی رو گفتین ؟ مثال شما در مورد رایت کردن تو فلش بود .

  9. #6
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    سلام

    مثال شما در مورد رایت کردن تو فلش بود .
    میشه بگید دستوری که من نوشتم چی کار می کنه ؟

    کد:
    write_eeprom(i);
    دستور بالایی انتقال از FLASH به EEPROM هستش !( یعنی همون چیزی که قبلاً خودتون خواسته بودین !
    خواهشا دقت کنید


    شما دقیقا برای قرار دادن یک مقدار از ایپرام توی یه متغیر در حافظه فلش چه کدی رو گفتین ؟
    خیلی ساده هستش، همون که رفته برش می گردونید دیگه(جای مبدا و مقصد رو باید عوض کنید(با یکمی تغییرات جزئی))
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  10. تشکرها از این نوشته :


موضوعات مشابه

  1. برنامه کیپد 4*4
    توسط payameashena در انجمن AT91 series (ATMEL)
    پاسخ: 0
    آخرين نوشته: 09-11-2013, 20:29
  2. مشکل با کیپد 4*4
    توسط payameashena در انجمن AT91 series (ATMEL)
    پاسخ: 3
    آخرين نوشته: 20-09-2013, 22:40
  3. مشکل با تایمر 0 و کیپد!
    توسط behnam6500 در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 19-04-2013, 19:59
  4. ترتیب پایه ها کیپد
    توسط kendab در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 10-03-2013, 18:13
  5. مشکل با کیپد
    توسط M3R در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 01-08-2010, 12:12

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

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