بررسی علت عدم عملکرد صحیح کدهای میکروکنترلر در نرم افزار Atmel studio

سلام
وقتی در Atmel studio بخش init(برای مثال serial init) را در خود تابع main انجام میدم میکرو بدون هیچ مشکلی درست کار میکنه ولی وقتی به صورت یه متد در main صدا زده میشه میکرو اصلا درست کد هارو اجرا نمیکنه در تصویر هر دو نوع کد رو نوشتم کد بالایی هیچکاری میکرو انجام نمیده و کلا میکرو مثل این میمونه که اصلا پروگرام نشده ولی کد پایینی کار میکنه و میکرو درست انجام میده
مشکل چیه مهندس معین

سلام دوست عزیز، مشکل عجیبی هست. تنظیمات کامپایلر قسمت Optimization Level روی چند هست؟ لول رو تا حد ممکن کم کنید ببینید باز هم همین مشکل وجود داره یا نه. اگر نشد، متغیرهای داخل اون تابع رو هم از نوع volatile تعریف کنید ببینید تغییر بوجود میاد یا نه.

1 پسندیده

مهندس معین Optimiz کامپایلر رو روی none میزارم و پروگرام میکنم دیگ هیچکودوم کار نمیکنه میکرو رو هم تعویض کردم بازم درست نشد ولی وقتی متد رو inline میکنم درست کار میکنه. ولی خب نمیشه همیشه من از inline استفاده کنم واسه متد ها .

عجیبه واقعا. تنظیمات اپتیمایز باید مشکل رو حل میکرد. ببینید شما داخل اون تابع یک متغیر تعریف کردید که در ریترن تابع نقشی نداره. این باعث میشه که کامپایلر فک کنه که میتونه اون تکه کد رو اپتیمایز کنه. آیا استفاده از volatile رو تست کردید؟
مشکل از میکرو نیست. این مشکل از کامپایلر و اپتیمایز کردن کد هست.

1 پسندیده

مهندس معین مشکل حل شد ممنونم از راهنمایی هاتون ، مشکل از فیوزبیت JTAG بود خودش فعال بود غیر فعالش کردم الان میکرو درست کار میکنه نمیدونم چرا ولی وقتی غیر فعالش کردم درست شد هر دو میکرویی که از فروشگاه گرفتم هر دوتاش JTAG فعال بود ،بازم ممنونم از وقتی که برای بنده گذاشتید :pray::pray::pray: