پاسخ : خواند و نوشتن روی eeprom میکرو avr
اگر منظورت رو خوب متوجه شده باشم میگی تو روتین وقفه ممکنه r16 تغییر کنه و اینطوری eedr هم مقدارش اون چیزی که ما میخوایم نمیشه.
خوب ما ۳۲ رجیستر کاری بیشتر نداریم،شما فرض کن ۲۰/۰۰۰ خط برنامه بنویسیم که هر جایی ممکنه وقفه ای رخ بده،خوب حالا با این اوصاف که ممکنه هر جایی از برنامه مشکلی پیش بیاد.
برای همین اگر قراره تو روتین وقفه مثلاً از r16 استفاده بشه،قبل استفاده مقدار قبلی r16 رو یه جایی ذخیره میکنیم(اصطلاحاً پوش میکنیم) و بعد انجام عملیات قبل دستور reti دوباره مقدار قبلی r16 رو برمیگردونیم(اصطلاحاً پاپ میکنیم)
avr که خوبه ۳۲ رجیستر داره،pic فقط یه رجیستر کاری بیشتر نداره و ازش باید تو روتین های مختلف استفاده بشه،حتماً باید از دستور پوش و پاپ استفاده کنیم
اینا که گفتم برا برنامه نویسی در سطح اسمبلی هست،واگرنه اگه کد اسمبلی تولید شده توسط کدویژن رو نگاه کنید متوجه خواهید شد که این کار رو انجام میده،پس این تصور اشتباهه که با اومدن یه وقفه مقدار رجیستر های کاری تغییر میکنه در هنگام بازگشت.
البته بعضی موقع نیازه که تغییرات رجیستر در روتین وقفه بعد بازگشت هم باقی بمونند که اون فرق میکنه
به هر حال این برنامه نویسه که باید با توجه به نیاز از پوش و پاپ استفاده کنه
اگر منظورت رو خوب متوجه شده باشم میگی تو روتین وقفه ممکنه r16 تغییر کنه و اینطوری eedr هم مقدارش اون چیزی که ما میخوایم نمیشه.
خوب ما ۳۲ رجیستر کاری بیشتر نداریم،شما فرض کن ۲۰/۰۰۰ خط برنامه بنویسیم که هر جایی ممکنه وقفه ای رخ بده،خوب حالا با این اوصاف که ممکنه هر جایی از برنامه مشکلی پیش بیاد.
برای همین اگر قراره تو روتین وقفه مثلاً از r16 استفاده بشه،قبل استفاده مقدار قبلی r16 رو یه جایی ذخیره میکنیم(اصطلاحاً پوش میکنیم) و بعد انجام عملیات قبل دستور reti دوباره مقدار قبلی r16 رو برمیگردونیم(اصطلاحاً پاپ میکنیم)
avr که خوبه ۳۲ رجیستر داره،pic فقط یه رجیستر کاری بیشتر نداره و ازش باید تو روتین های مختلف استفاده بشه،حتماً باید از دستور پوش و پاپ استفاده کنیم
اینا که گفتم برا برنامه نویسی در سطح اسمبلی هست،واگرنه اگه کد اسمبلی تولید شده توسط کدویژن رو نگاه کنید متوجه خواهید شد که این کار رو انجام میده،پس این تصور اشتباهه که با اومدن یه وقفه مقدار رجیستر های کاری تغییر میکنه در هنگام بازگشت.
البته بعضی موقع نیازه که تغییرات رجیستر در روتین وقفه بعد بازگشت هم باقی بمونند که اون فرق میکنه
به هر حال این برنامه نویسه که باید با توجه به نیاز از پوش و پاپ استفاده کنه
دیدگاه