با سلام خدمت دوستان عزیز
من برنامه ای دارم که از تایمر استفاده میکنه و با هر بار سر ریز شدن تایمر وقفه ایجاد شده و یه قسمتی از برنامه از اول اجرا میشه
مشکل اینجاس که توی برنامه از حلقه for استفاده شده که حاوی یه سری محاسبات ریاضی از جمله sin, cos است، در حالت عادی و بدون استفاده از تایمر، با افزایش تکرار این حلقه هیچ مشکلی برای برنامه ایجاد نمیشه مگر تکرار رو خیلی زیاد کنم مثلا 1000 که کم کم باعث کاهش سرعت برنامه میشه که منطقیه. با فعال کردن تایمر اگه تکرار رو روی 10 یا 12 قرار بدم سرعت برنامه به شدت کاهش پیدا میکنه و با قرار دادن اون روی 14 برنامه کاملا متوقف میشه و اصلا خطهای اولیه برنامه که خارج از تایمر هستند هم اجرا نمیشن، در واقع برنامه به طور کامل از کار میفته!
فک کردم که ممکنه با افزایش تکرار حلقه قبل از اتمام محاسبات تایمر سر ریز میکنه و وقفه اتفاق میفته و مشکال اینجاست . به همین دلیل برای افزایش زمان سر ریز تایمر از تایمر 16 بیتی استفاده کردم و مشکل در ازای از دست دادن زمان حل شد ، ولی غیر منطقی به نظر میاد چون محاسبات انقدر هم پیچیده نیست که به همچین مشکلی بر بخورم در ضمن مثلا وقتی روی 12 میزارم مدار جواب میده ولی با سرعت خیلی پایین در صورتی اگه این مشکل که گفتم به وجود اومده بود برنامه باید جواب اشتباه میداد نه اینکه سرعت بیاد پایین.
دلیل خاصی داره که با استفاده از تایمر سرعت برنامه انقدر کم میشه؟
من برنامه ای دارم که از تایمر استفاده میکنه و با هر بار سر ریز شدن تایمر وقفه ایجاد شده و یه قسمتی از برنامه از اول اجرا میشه
مشکل اینجاس که توی برنامه از حلقه for استفاده شده که حاوی یه سری محاسبات ریاضی از جمله sin, cos است، در حالت عادی و بدون استفاده از تایمر، با افزایش تکرار این حلقه هیچ مشکلی برای برنامه ایجاد نمیشه مگر تکرار رو خیلی زیاد کنم مثلا 1000 که کم کم باعث کاهش سرعت برنامه میشه که منطقیه. با فعال کردن تایمر اگه تکرار رو روی 10 یا 12 قرار بدم سرعت برنامه به شدت کاهش پیدا میکنه و با قرار دادن اون روی 14 برنامه کاملا متوقف میشه و اصلا خطهای اولیه برنامه که خارج از تایمر هستند هم اجرا نمیشن، در واقع برنامه به طور کامل از کار میفته!
فک کردم که ممکنه با افزایش تکرار حلقه قبل از اتمام محاسبات تایمر سر ریز میکنه و وقفه اتفاق میفته و مشکال اینجاست . به همین دلیل برای افزایش زمان سر ریز تایمر از تایمر 16 بیتی استفاده کردم و مشکل در ازای از دست دادن زمان حل شد ، ولی غیر منطقی به نظر میاد چون محاسبات انقدر هم پیچیده نیست که به همچین مشکلی بر بخورم در ضمن مثلا وقتی روی 12 میزارم مدار جواب میده ولی با سرعت خیلی پایین در صورتی اگه این مشکل که گفتم به وجود اومده بود برنامه باید جواب اشتباه میداد نه اینکه سرعت بیاد پایین.
دلیل خاصی داره که با استفاده از تایمر سرعت برنامه انقدر کم میشه؟
دیدگاه