PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : data stack



electro_fuzzy
08-03-2013, 21:50
سلام
مشکل تو data stack :
من یه تابع دارم که درست کار نمیکنه و warning زیر رو میده
function 'setingmood' not used in data stack usage calculation due to possible recursive calls
نام تابع من setingmood هست که تو warning هم نوشته شده حالا این data stack چی هست و چطوری میتونم درستش بکنم؟

esisafa
08-03-2013, 21:59
وارد جزئیات پردازنده ها نشید بهتره. احتمالا در تنظیمات و تابعتون کار خاصی انجام دادین و یا در متغیرها و حجمشون که گفته ممکنه در حین اجرا به مشکل برخورد کنید
در ضمن از این تابع استفاده کردین؟ یا استفاده های تو در تو؟ یا هر کار غیر عادی دیگه
همچنین کامپایلر چیه؟؟؟؟
و اینکه وارنینگ هست و ارور که نیست

electro_fuzzy
09-03-2013, 09:18
سلام
کامپایلرم codevision هست و تویه تابع، حلقه while تودرتو نوشتم فکر میکنم وقتی اینتراپت میشه ادرس فعلی رو که باهاش به اینتراپت رفتم هنگام بازگشت از اینتراپت از دست میدم چون موقع بازگشت یه شرطی قرار دادم که به یه جای دیگه از برنامه میره یعنی PC به یه جای دیگه اشاره میکنه و stack point میکرو هم به آدرس قبلی که باهاش به اینتراپت رفتم . البته ممکنه اینطوری نباشه و مشکل از یه جای دیگه باشه .

esisafa
09-03-2013, 12:08
خوب خودتون جوابتون رو دادین دیگه. شما طوری برنامه نوشتین که طبق اصول برنامه نویسی سی نیست و در این مواقع ممکنه که اشتباه رخ بده و بخاطر همین وارنینگ داده. حالا اگه مطمئن هستین از برنامه ی خودتون بهش توجه نکنید ولی بعید میدونم کسی که از حافظه ی استک بیخبره بشه به برنامش اطمینان کرد.
شما وارد برنامه نویسی در سطح سخت افزار شدید و باید اطلاعات کافی داشته باشید

electro_fuzzy
09-03-2013, 18:13
حالا نمیشه من مقدار stsck point رو با pc یکی کنم تا شرطی که نوشتم درست کار بکنه من نمیتونم به برنامه اعتماد بکنم چون میکرو یا هنگ میکنه یا به یه جای دیگه از حافظه میره که خالیه

esisafa
09-03-2013, 19:38
از قرار معلوم شما بر روی چیزی شبیه سیستم عامل کار میکنید که چند وظیفه ای عمل کنه و با تایمر وقفه ایجاد میکنید.
خوب شما باید کاملا دقیق بدونید که در چه زمانی آدرسهای data & stack pointer مورد نظر رو ذخیره کنید و دوباره قرار بدین. و من خودم در این زمینه کار نکردم که بتونم کمک کنم
همچنین در مورد avr فکر کنم که در حالی که یک دستور در حال اجرا هست مقدار پروگرم کانتر 4 عدد بیشتره از اون دستور و در این صورت شما باید آدرس اصلی دستور رو ذخیره کنید نه آدرسی که در حال اجرا در پروگرم کانتر هست
بیشتر نمیتونم کمکی کنم

electro_fuzzy
09-03-2013, 23:11
خیلی خیلی متشکرم تا همینجا که کمکم کردین خیلی خیلی لطف کردین.