سلام. من با میکرویی کار میکنم که eeprom داخلی نداره(سری 18f67j). از طرفی استفاده ازeeprom خارجی مقدور نیست چون تمام I/O ها استفاده شدن و همینطور PCB زده شده. مشکل اینه که من باید مقدار یه سری متغیرهامو در هر صورت(قطع برق) حفظ کنم.
حالا من میخواستم از طریق دستورات CCS و قابلیت خود میکرو در write/read کد برنامه متغیر هایی رو در قسمتی از کد برنامه (مثل بوت لودر) تعریف کنم و اینطوری از از دست رفتن اونا با قطع برق جلوگیری کنم.
من با دستور :
write_program_eeprom (0x1000, data[0]);
write_program_eeprom (0x1002, data[1]);
write_program_eeprom (0x1004, data[2]);
write_program_eeprom (0x1006, data[3]);
output_d( read_program_eeprom (0x1000) );
output_d( read_program_eeprom (0x1002) );
output_d( read_program_eeprom (0x1004) );
output_d( read_program_eeprom (0x1006 );
توی آدرسای ذکر شده مقادیرمو مینویسم و میخونم اما چیزی که میخونم اشتباهه.
اینم فهمیدم که مشکل توی write مفدیره و read درست انجام میشه.
اگه ممکنه دوستان راهنمایی و کمک کنن.
یا اگه راهی نیست یکم دلداری بدن :mrgreen:
حالا من میخواستم از طریق دستورات CCS و قابلیت خود میکرو در write/read کد برنامه متغیر هایی رو در قسمتی از کد برنامه (مثل بوت لودر) تعریف کنم و اینطوری از از دست رفتن اونا با قطع برق جلوگیری کنم.
من با دستور :
#org 0x1000,0x2000{}
یه قسمت از کد برنامه رو آزاد نگه میدارم تا کامپایلر ازش استفاده نکنه. بعد با دستورات:write_program_eeprom (0x1000, data[0]);
write_program_eeprom (0x1002, data[1]);
write_program_eeprom (0x1004, data[2]);
write_program_eeprom (0x1006, data[3]);
output_d( read_program_eeprom (0x1000) );
output_d( read_program_eeprom (0x1002) );
output_d( read_program_eeprom (0x1004) );
output_d( read_program_eeprom (0x1006 );
توی آدرسای ذکر شده مقادیرمو مینویسم و میخونم اما چیزی که میخونم اشتباهه.
اینم فهمیدم که مشکل توی write مفدیره و read درست انجام میشه.
اگه ممکنه دوستان راهنمایی و کمک کنن.
یا اگه راهی نیست یکم دلداری بدن :mrgreen:
دیدگاه