نمایش نتایج 1 تا 6 از 6

نام تاپیک: دخیره اطلاعات بصورت دائم در avr

  1. #1
    کاربر دائمی آواتار vaheeed
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    287

    دخیره اطلاعات بصورت دائم در avr

    سلام
    من با atmega8 میخوام یه عدد رو داخل حافظه اش ذخیره کنم که با قطع و وصل برق از بین نره ،چون عددم 4 رقمی است باید در 2 خونه بنویسم تا جایی که خوندم باید با دستورات زیر کار کنم که داخل eeprom ذخیره بشه ، اول 2 خونه 200 و 300 رو میخونم :
     EEAR=200;
    EECR=0x01;
    num1=EEDR;

    EEAR=300;
    EECR=0x01;
    num2=EEDR;
    num=(num1*100)+num2;


    بعد رمز رو میگیرم و اینطوری ذخیره میکنم :
     newPass=1234;
    num1=newPass/100;
    EEDR=num1;
    EEAR=200;
    EECR=0x04;
    EECR=0x02;
    while((EECR&0x02)==1);

    num2=newPass-(num1*100);
    EEDR=num2;
    EEAR=300;
    EECR=0x04;
    EECR=0x02;
    while((EECR&0x02)==1);


    حالا بلافاصله با این دستور میخونم دوباره همون 2 تا خونه رو :

     EEAR=200;
    EECR=0x01;
    num1=EEDR;

    EEAR=300;
    EECR=0x01;
    num2=EEDR;
    num=(num1*100)+num2;


    عدد 1234 رو بصورت 3434 نشون میده !!!
    جالب اینجاست که برق رو قطع و وصل میکنم حالا همون اول که میخواد این 2 تا خونه رو بخونه عدد 1455 نشون میده !!!! میشه راهنمایی کنید ممنون از همگی

  2. #2
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: دخیره اطلاعات بصورت دائم در avr

    سلام
    دوست عزیز ، شما فراموش کرده اید که در محیط C هستید و دقیقا عملیات مشابه اسمبلی انجام می دهید . البته مشکلی نیست و چنانچه خطایی نداشته باشید به نتیجه مطلوب می رسید.
    اما براحتی میتوانید موارد فوق رو در دو سه خط بنویسید

    eeprom unsigned char pass_lsb @200, pass_msb @300;
    int newPass;
    //...............................
    newPass=1234;
    pass_lsb=(unsigned char)newPass ;
    pass_msb=(unsigned char)(newPass>>8);

  3. #3
    کاربر دائمی آواتار vaheeed
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    287

    نقل قول: دخیره اطلاعات بصورت دائم در avr

    ممنون از جوابتون من اینو یه جا خوندم و استفاده کردم ، میشه کدی که نوشتید رو توضیح بدید متوجه نمیشم تا جایی که فهمیدم دو تا متغییر تعریف کردید به اسم pass_lsb , pass_msb که ادرس های 200 و 300 رو دارن و متغییر pass_lcb مقدار newpass رو گرفته خط بعدش چیه ؟؟ و اینکه این خط ها دارن اطلاعات داخل حافظه eeprom میریزن حالا واسه خوندن ازش باید چیکار کنم؟؟ میشه اگه منبع خوب واسه دستورات avr در c دارین معرفی کنید ؟؟ ممنون

  4. #4
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: دخیره اطلاعات بصورت دائم در avr

    نقل قول نوشته شده توسط vaheeed مشاهده تاپیک
    ممنون از جوابتون من اینو یه جا خوندم و استفاده کردم ، میشه کدی که نوشتید رو توضیح بدید متوجه نمیشم تا جایی که فهمیدم دو تا متغییر تعریف کردید به اسم pass_lsb , pass_msb که ادرس های 200 و 300 رو دارن و متغییر pass_lcb مقدار newpass رو گرفته خط بعدش چیه ؟؟ و اینکه این خط ها دارن اطلاعات داخل حافظه eeprom میریزن حالا واسه خوندن ازش باید چیکار کنم؟؟ میشه اگه منبع خوب واسه دستورات avr در c دارین معرفی کنید ؟؟ ممنون
    خط شماره 5 بایت کم ارزش newPass رو در pass_lsb ذخیره میکنه و خط 6 بایت پر ارزش آن را در pass_msb.
    اگر هم خواستید آن مقدار رو بخونید و مثلا در همان متغیر newPassکه از نوع Integer هست بریزید :

    newPass = pass_lsb + (pass_msb << 8)


    برای راهنما هم هم کتب مربوط به زبان سی و هم Help محیطی که در آن برنامه نویسی میکنید(,...CodeVision,AtmelStudio) را مطالعه کنید

  5. #5
    کاربر دائمی آواتار vaheeed
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    مشهد
    پست
    287

    نقل قول: دخیره اطلاعات بصورت دائم در avr

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

  6. #6
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: دخیره اطلاعات بصورت دائم در avr

    سلام
    اگر بعد از ریست شدن میکرو تغییرات ایجاد شده ، به این معنی است که کد اشکالی ندارد . شما آن قسمتی از برنامه که نوشته اید و به مشکل خورده اید را نمایش بدید تا بررسی شود.

تاپیک های مشابه

  1. چرا اطلاعات بصورت علامت سوال ذخیره میشه ؟
    نوشته شده توسط mehdi_moosavi در بخش برنامه نویسی در Delphi
    پاسخ: 10
    آخرین پست: یک شنبه 26 شهریور 1391, 19:01 عصر
  2. راهنمایی : ذخیره اطلاعات بصورت رکوردی
    نوشته شده توسط Sabeghi در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: سه شنبه 07 آذر 1385, 01:20 صبح
  3. مشکل در ذخیره اطلاعات بصورت text
    نوشته شده توسط bijanborjian در بخش Access
    پاسخ: 8
    آخرین پست: شنبه 28 مرداد 1385, 09:47 صبح
  4. نمایش اطلاعات بصورت گروه بندی
    نوشته شده توسط FirstLine در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: جمعه 11 شهریور 1384, 02:21 صبح
  5. نوشتن اطلاعات بصورت overlay بر روی فیلم در حال نمایش
    نوشته شده توسط mnodehi در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: دوشنبه 25 اسفند 1382, 11:42 صبح

قوانین ایجاد تاپیک در تالار

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