با سلام درپی درخواست دوستان این تاپیک رو ایجاد کردم تا کسانی که با کدویژن کار میکنند و دوست دارند بتوانند تو محیط AtmelStudio کارکنند و از امکاناتش بهره ببرند، این کار براشون راحت باشه.
قبل از هرچیز جا داره یک توضیحاتی در رابطه با Atmel Studio بدم:
Atmel Studio یک محیط برنامه نویسی( IDE ) مختص برنامه نویسی برای میکروکنترلرهاست. کامپایلری که در این محیط استفاده میشه کامپایلر معروف gcc میباشد.
این محیط برنامه نویسی همون طور که از اسمش پیداست کار شرکت اتمل است که خود تولید کننده یه میکروکنترلرهای مختلفی میباشد.
این محیط بسیار شبیه Visual Studio شرکت ماکروسافت است ( برخی افراد ویژوال استادیو را جزء عجایب دنیا میدانند(واقعا هم همینطوره) )
سوال: چرا باید از اتمل استادیو استفاده کنیم؟
جواب : بایدی در کار نیست و شما بهتر است از هر محیطی که در آن راحت ترید استفاده کنید . ولی اتمل استادیو دارای امکاناتی است که در طول این تاپیک بهش پرداخنه میشه. (به نظر بنده بزرگترین مشخصه ی آن دیباگینگ به صورت شبیه سازی شده است)
برای دانلود Atmel Studio میتوانید مستقیم از سایت اتمل اقدام به این کار کنید:
لینک دانلود جدیدترین نسخه Atmel Studio :
http://www.atmel.com/tools/ATMELSTUDIO.aspx
یا میتونید گوگل کنید:
دانلود atmel studio
الان جدیدترین نسخه 6.1 است.
--------------------------------------------------------------------
قبل از ادامه به خواندن برای یادگیری بهتر ، من در این زمینه توجه شما را به مشاهده ی دو سری آموزشی که من همیشه به دوستان توصیه میکنم، جلب میکنم:
آموزش زبان سی توسط استاد بازرگان
آموزش AVR توسط استاد کی نژاد
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
خوب با نام و یاد خدا و به امید موفقیت هرچه بیشتر شروع میکنم:
پس از نصب اتمل استادیو و اجرای آن شما با یک پنجره مربوط به لودینگ که داخل آن یک کفش دوزک است مواجه میشود(کلا نماد اتمل استادیو کفشک دوزک است)
بعد از اتمام لودینگ با بازشدن برنامه به یک صفحه Start Page برمیخورید.( ورود شما را به محیط برنامه نویسی اتمل استادیو تبریک میگم )
برای ایجاد پروژه ی جدید ، راه های زیادی است : یکی از این راه ها کلیک بر روی New Project در سمت چپ صفحه ی Start Page می باشد.
بعد از کلیک ، پنجره ای باز میشود که زبان و کامپایلر مورد نظر از شما پرسیده میشود همچنین در پایین پنجره میتوانید برای پروژه و سولوشن تان اسم مورد نظر را تعیین کنید و در قسمت Location میتوانید محل و دایرکتوری ایجاد پروژه را مشخص کنید.
در بالا GCC C Executable Project را انتخاب کنید و با انجام تنظیمات روی دکمه OK کلیک کنید. (باید اضافه کنم در این محیط و با استفاده از کامپایلر gcc شما قادرید با زبان ++C و شیء گرایی اون برنامه نویسی کنید)
پنجره ی بعدی پنجره ی Device Selection میباشد. که بوسیله ی آن میکروی مورد نظرتون را انتخاب میکنید .(همچنین میتوانید دیتاشیتش را دانلود کنید و...)
بعد از ok کردن سولوشن و پروژه تون ساخته میشه و یک فایل c. همنام پروژه ایجاد میشه و محتویاتش براتون نشون داده میشه. به صورت زیر:
میبینید که تابع main در اینجا قرار دارد.
همچنین یک فایل با نام io.h به صوت پیشفرض اینکلود میشود.
داخل این فایل به نسبت اینکه درقسمت Device Selection چه میکرویی انتخاب شده یک فایل بسیار مهم اینکلود میشود.
مثلا درصورتی که Mega32 را انتخاب کرده باشید ، فایل avr/iom32.h اینکلود میشود.
این فایل شما را قادر میسازد تا ماژول های i/o میکروتون کار کنید.
برای اطلاع بیشتر به لینک زیر برید. یک توضیحاتی در رابطه با قسمتهای مختلف میکرو به دوستمون دادم:
http://www.eca.ir/forum2/index.php?topic=82558.msg503769#msg503769
برای اینکه با جزئیات و مفصل دراینباره اطلاع پیدا کنید ، سری آموزشی AVR جناب کی نژاد را دنبال کنید.
در ادامه پست را به چند قسمت تقسیم میکنم:
-----------کار با محیط دیباگینگ Atmel Studio -------------------------------------------------------------------------------------
این بخش می تونه قدرت Atmel Studio را نشان دهد که از پدربزرگ خود یعنی Visual Studio به ارث برده است.(البته به صورت شبیه سازی شده)
دیباگ کردن عملی است که بوسیله آن برنامه را به صورت دقیق اشکال زدایی میکنیم . برای اشکالزدایی برنامه بایستی دستورات دونه به دونه اجرا شود و نتیجه هر دستور بعد از اجرای آن به برنامه نویس نشان داده شود. در حالت معمولی کدها به سرعت و پشت سرهم توسط پردازنده اجرا میشوند و امکان دیباگینگ کد وجود ندارد ، برای فراهم کردن اینکار بایستی برنامه در بین اجرا به اصطلاح break شود.
خوب فکر میکنم بهتر باشه از تعریف و تئوری فاصله بگیریم و هرچه سریع تر بریم سراغ کد زدن.
توصیه جدی: قبل از ادامه خواندن ، حتما Atmel Studio را باید اجرا کنید . و یک پروژه ایجاد کنید و وارد محیط برنامه برنامه نویسی شوید. در غیر این صورت تا فراهم شدن این بستر از خواندن ادامه پست خودداری کنید
برای مثال ابتدا ما یک برنامه معمولی به شکل زیر مینوسیم:
نکته خیلی مهم: برای دیباگینگ بهتر باید از بهینه سازی کامپایلر جلوگیری کرد ، که برای اینکار 2 راه وجود دارد:
1- رفتن به شاخه زیر و غیرفعال سازی Optimization :
project --> main properties --> Toolchain --> AVR/GNU C Compiler --> Optimization
و در اینجا میتونید سطح بهینه سازی ( Optimization Level ) را تعیین کنید که در اینجا بایستی روی حالت None قرار دهید.
2- استفاده از کلمه کلیدی volatile در هنگام اعلان متغییرهای برنامه.
(که در اینجا روش اول توصیه میشود)
برای ورود به محیط دیباگ روش های متفاوتی وجود دارد که در اینجا شما به صورت زیر عمل کنید.
با زدن کلید f10 یا f11 به محیط دیباگ وارد شوید.صبر کنید تا یک فلش زرد رنگ کنار اول بلوک تابع main ظاهر بشه. (ورودتون را به محیط دیباگ خوش آمد می گم)
این فلش زرد رنگ نشون میده که دستور بعدی که اجرا میشه چیه. برای اجرای متوالی می توانید از f10 یا f11 استفاده کنید که با هربار زدن اونها دستوری که فلش زرد رنگ کنارشه اجرا میشود(البته تفاوت هایی داره که بعدا عرض میکنم)
خوب قبل از اینکه بریم سراغ دیباگینگ برنامه مون ، به امکاناتی که این محیط به ما میده می پردازیم:
این امکانات به صورت window هایی است که در شاخه Debug --> Windows وجود دارند ، فراهم میشود.
خوب ما عموما به سه window نیاز داریم که در شاخه ی Debug --> Windows میتوان آنها را اضافه کنیم:
1- I/O View : این پنجره به ما این امکان را میدهد که مقدار فعلی رجیستر های میکرو را مشاهده کنیم.(خیلی گرافیکی و ساده است ، یکم باش بازی کنید ، متوجه میشوید.)
2- Watch : این پنجره به ما مقادیر متغییرها و آرایه ها و در کل دیتا آبجکت هایی که تعریف کردیم و در بخش فعلی که هستیم به آنها دسترسی داریم را برای ما مشخص میکند. ( برای این کار در قسمت Name بایستی اسم دیتا آبجکت مد نظرتون را تایپ و Enter کنید. برای بدست آوردن آدرس دیتا آبجکت بایستی از & قبل از اسم آن استفاده کنید)
3- Memory : این پنجره محتویات حافظه را به صورت کامل برای ما نمایش میدهد.( برای اینکار بایستی فضای حافظه مد نظرتون را از لیست انتخاب کنید.)
خوب حالا که با ابزار کار آشنا شدیم ، میریم سراغ دیباگینگ برنامه مون .
هنوز فلش زرد رنگ کنار آکولاد اول تابع main است. با زدن دکمه f10 یا f11 فلش روی دستور char x=5; قرار میگیرد. این یعنی اگر یه بار دیگه f10 یا f11 بزنید دستور char x=5; اجرا میشود. خوب قبل از اجرای این دستور بیاید یک نگاه به پنجره watch بندازیم:
همان طور که گفته شد یکی از امکانات این پنجره نمایش مقدار فعلی متغییرهایی است که به اون ها دسترسی داریم:
ما در این برنامه 4 متغییر اعلان شده است : a و b که متغییرهای سراسری هستند و x که متغییر محلی یا local تابع main است و temp که متغییر local تابع xchange است.
اینجا ما هر 4 متغییر را به پنجره watch می دهیم.
میبینیم که مقدار متغییر های x و a و b صفر گذاشته شده و این متغییر ها شناخته شده اند ولی متغییر temp چون ما در تابع main به آن دسترسی نداریم ناشناخته (Unknown identifier ) است.
از این به بعد باید با هربار اجرای یک دستور پنجره watch هم نگاه می کنیم.
دکمه f10 یا f11 را میزنیم ، با ایتکار مقدار متغییر x برابر 5 میشود .
دوبار دکمه f10 یا f11 را میزنیم . اینبار به پنجره IO View نگاه میکنیم ، اگر روی PORTA کلیک کنید می بینیم که بیت های 0 و 2 رجیستر DDRA ست میشود.
دوبار دکمه f10 یا f11 را میزنیم . در پنجره Watch مقدار متغییر a را میبینیم که به 3 تغییر پیدا کرده .
دوبار دکمه f10 یا f11 را میزنیم . در پنجره Watch مقدار متغییر b را میبینیم که به 0 تغییر پیدا کرده . (البته قبلا 0 بوده)
خوب الان فلش زرد رنگ کنار xchange(); قرار دارد .
اینجا میتونیم تفاوت عملکرد دکمه های f10 و f11 را ببینیم:
عملکرد دکمه f10 : با زدن f10 تابع xchange کامل اجرا میشود و فلش زرد رنگ روی حلقه بینهایت میرود. و اگر پنجره watch را ببنیم ، مقادیر متغییر های a و b با هم عوض میشوند.
عملکرد دکمه f11 : با زدن f11 دیباگر و فلش زرد رنگ وارد تابع xchange می شود ، و فلش روی آکولاد اول تابع xchange قرار می گیرد .
دوبار f10 یا f11 می کنیم : چون int x یک اعلان بدون مقدار اولیه است دیباگر از روی آن میگذرد .(یه مطلب جالب ایه که چون دیباگینگ atmel studio نوپاست یک سری باگ دارد ، یکیش اینجا قابل مشاهده است : متغییر x یک متغییر محلی تابع main است و در اینجا باید ناشناخته باشد ، ولی اینجا در پنجره watch مقدار x را صفر نشان داده وکه بعد ورود دوباره به مین درست میشه و همون 5 را نشون میده ولی اینجا بهتر بود متغییر x ناشناخته اعلام می شد.
با زدن متوالی دکمه f10 یا f11 دستورات تابع دونه دونه اجرا میشود و بعد از اجرای آخرین دستور ، دیباگر وارد تابع main می شود.
فعلا تا همینجا کافیه . امکانات دیگه مثل قرار دادن break point و ... هم وجود دارد که با بازی کردن در محیط دیباگر می توانید تجربی آنها را فرا بگیرید.
-----------پستهای به نسبت مفیدتر در این تاپیک -------------------------------------------------------------------------------------
البته کامل خواندن این تاپیک را به همه ی دوستان توصیه میکنم ، در صورتی که میخواهید به پستهای به نسبت مفیدتر دسترسی داشته باشید میتوانید از لینکهای زیر استفاده کنید:
انجام عملیات بیتی روی یک بایت یا رجیستر خاص : http://www.eca.ir/forum2/index.php?topic=81025.msg493466#msg493466
آشنایی با عملگر شیفت و مقدار دهی به رجیستر ها به صورت رایج تر: http://www.eca.ir/forum2/index.php?topic=81025.msg493484#msg493484
نحوه کار با توابع تاخیر( delay ) در اتمل استادیو: http://www.eca.ir/forum2/index.php?topic=81025.msg493662#msg493662
انواع متغییرها از نظر حوزه دسترسی و LifeTimeم : http://www.eca.ir/forum2/index.php?topic=81025.msg499601#msg499601
چندی در رابطه با پیشوند volatile در سی: http://www.eca.ir/forum2/index.php?topic=81025.msg499818#msg499818 و http://www.eca.ir/forum2/index.php?topic=81025.msg499866#msg499866
دیتا آبجکت چیست و معرفی استراکچر: http://www.eca.ir/forum2/index.php?topic=81025.msg504542#msg504542
مختصری در باب اشاره گرها در سی و عملگر <-- : http://www.eca.ir/forum2/index.php?topic=81025.msg504661#msg504661
یک تابع کوچک برای ارسال طلاعات از طریق یوزارت: http://www.eca.ir/forum2/index.php?topic=81025.msg505180#msg505180
انواع حافظه ها و دسترسی به حافظه فلش(قسمت اول): http://www.eca.ir/forum2/index.php?topic=81025.msg505462#msg505462
انواع حافظه ها و دسترسی به حافظه فلش(قسمت دوم): http://www.eca.ir/forum2/index.php?topic=81025.msg505535#msg505535
کار با وقفه ها و نوشتن روتین وقفه مورد نظر: http://www.eca.ir/forum2/index.php?topic=81025.msg505608#msg505608
مثال از استفاده از وقفه در برنامه ( ارسال رشته به صورت سریال) : http://www.eca.ir/forum2/index.php?topic=81025.msg505729#msg505729
-----------راه انداز ماژول های مختلف بوسیله ی میکرو و Atmel Studio -------------------------------------------------------------------------------
به لینک زیر مراجعه کنید:
http://www.eca.ir/forum2/index.php?topic=82130.0
درصورتی که برای ماژول درخواستی شما راه اندازی نبود ، میتوانید در همان تاپیک تقاضا دهید .
پیشاپیش از سوالات و همکاریتون در این تاپیک تشکر و قدردانی میکنم.
قبل از هرچیز جا داره یک توضیحاتی در رابطه با Atmel Studio بدم:
Atmel Studio یک محیط برنامه نویسی( IDE ) مختص برنامه نویسی برای میکروکنترلرهاست. کامپایلری که در این محیط استفاده میشه کامپایلر معروف gcc میباشد.
این محیط برنامه نویسی همون طور که از اسمش پیداست کار شرکت اتمل است که خود تولید کننده یه میکروکنترلرهای مختلفی میباشد.
این محیط بسیار شبیه Visual Studio شرکت ماکروسافت است ( برخی افراد ویژوال استادیو را جزء عجایب دنیا میدانند(واقعا هم همینطوره) )
سوال: چرا باید از اتمل استادیو استفاده کنیم؟
جواب : بایدی در کار نیست و شما بهتر است از هر محیطی که در آن راحت ترید استفاده کنید . ولی اتمل استادیو دارای امکاناتی است که در طول این تاپیک بهش پرداخنه میشه. (به نظر بنده بزرگترین مشخصه ی آن دیباگینگ به صورت شبیه سازی شده است)
برای دانلود Atmel Studio میتوانید مستقیم از سایت اتمل اقدام به این کار کنید:
لینک دانلود جدیدترین نسخه Atmel Studio :
http://www.atmel.com/tools/ATMELSTUDIO.aspx
یا میتونید گوگل کنید:
دانلود atmel studio
الان جدیدترین نسخه 6.1 است.
--------------------------------------------------------------------
قبل از ادامه به خواندن برای یادگیری بهتر ، من در این زمینه توجه شما را به مشاهده ی دو سری آموزشی که من همیشه به دوستان توصیه میکنم، جلب میکنم:
آموزش زبان سی توسط استاد بازرگان
آموزش AVR توسط استاد کی نژاد
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
خوب با نام و یاد خدا و به امید موفقیت هرچه بیشتر شروع میکنم:
پس از نصب اتمل استادیو و اجرای آن شما با یک پنجره مربوط به لودینگ که داخل آن یک کفش دوزک است مواجه میشود(کلا نماد اتمل استادیو کفشک دوزک است)
بعد از اتمام لودینگ با بازشدن برنامه به یک صفحه Start Page برمیخورید.( ورود شما را به محیط برنامه نویسی اتمل استادیو تبریک میگم )
برای ایجاد پروژه ی جدید ، راه های زیادی است : یکی از این راه ها کلیک بر روی New Project در سمت چپ صفحه ی Start Page می باشد.
بعد از کلیک ، پنجره ای باز میشود که زبان و کامپایلر مورد نظر از شما پرسیده میشود همچنین در پایین پنجره میتوانید برای پروژه و سولوشن تان اسم مورد نظر را تعیین کنید و در قسمت Location میتوانید محل و دایرکتوری ایجاد پروژه را مشخص کنید.
در بالا GCC C Executable Project را انتخاب کنید و با انجام تنظیمات روی دکمه OK کلیک کنید. (باید اضافه کنم در این محیط و با استفاده از کامپایلر gcc شما قادرید با زبان ++C و شیء گرایی اون برنامه نویسی کنید)
پنجره ی بعدی پنجره ی Device Selection میباشد. که بوسیله ی آن میکروی مورد نظرتون را انتخاب میکنید .(همچنین میتوانید دیتاشیتش را دانلود کنید و...)
بعد از ok کردن سولوشن و پروژه تون ساخته میشه و یک فایل c. همنام پروژه ایجاد میشه و محتویاتش براتون نشون داده میشه. به صورت زیر:
کد:
#include <avr/io.h> int main(void) { while(1) { //TODO:: Please write your application code } }
همچنین یک فایل با نام io.h به صوت پیشفرض اینکلود میشود.
داخل این فایل به نسبت اینکه درقسمت Device Selection چه میکرویی انتخاب شده یک فایل بسیار مهم اینکلود میشود.
مثلا درصورتی که Mega32 را انتخاب کرده باشید ، فایل avr/iom32.h اینکلود میشود.
این فایل شما را قادر میسازد تا ماژول های i/o میکروتون کار کنید.
برای اطلاع بیشتر به لینک زیر برید. یک توضیحاتی در رابطه با قسمتهای مختلف میکرو به دوستمون دادم:
http://www.eca.ir/forum2/index.php?topic=82558.msg503769#msg503769
برای اینکه با جزئیات و مفصل دراینباره اطلاع پیدا کنید ، سری آموزشی AVR جناب کی نژاد را دنبال کنید.
در ادامه پست را به چند قسمت تقسیم میکنم:
-----------کار با محیط دیباگینگ Atmel Studio -------------------------------------------------------------------------------------
این بخش می تونه قدرت Atmel Studio را نشان دهد که از پدربزرگ خود یعنی Visual Studio به ارث برده است.(البته به صورت شبیه سازی شده)
دیباگ کردن عملی است که بوسیله آن برنامه را به صورت دقیق اشکال زدایی میکنیم . برای اشکالزدایی برنامه بایستی دستورات دونه به دونه اجرا شود و نتیجه هر دستور بعد از اجرای آن به برنامه نویس نشان داده شود. در حالت معمولی کدها به سرعت و پشت سرهم توسط پردازنده اجرا میشوند و امکان دیباگینگ کد وجود ندارد ، برای فراهم کردن اینکار بایستی برنامه در بین اجرا به اصطلاح break شود.
خوب فکر میکنم بهتر باشه از تعریف و تئوری فاصله بگیریم و هرچه سریع تر بریم سراغ کد زدن.
توصیه جدی: قبل از ادامه خواندن ، حتما Atmel Studio را باید اجرا کنید . و یک پروژه ایجاد کنید و وارد محیط برنامه برنامه نویسی شوید. در غیر این صورت تا فراهم شدن این بستر از خواندن ادامه پست خودداری کنید
برای مثال ابتدا ما یک برنامه معمولی به شکل زیر مینوسیم:
کد:
int a,b; void xchange() { int temp; temp=a; a=b; b=temp; } int main(void) { char x= 5; DDRA=x; a=3; b=0; xchange(); while(1); }
1- رفتن به شاخه زیر و غیرفعال سازی Optimization :
project --> main properties --> Toolchain --> AVR/GNU C Compiler --> Optimization
و در اینجا میتونید سطح بهینه سازی ( Optimization Level ) را تعیین کنید که در اینجا بایستی روی حالت None قرار دهید.
2- استفاده از کلمه کلیدی volatile در هنگام اعلان متغییرهای برنامه.
(که در اینجا روش اول توصیه میشود)
برای ورود به محیط دیباگ روش های متفاوتی وجود دارد که در اینجا شما به صورت زیر عمل کنید.
با زدن کلید f10 یا f11 به محیط دیباگ وارد شوید.صبر کنید تا یک فلش زرد رنگ کنار اول بلوک تابع main ظاهر بشه. (ورودتون را به محیط دیباگ خوش آمد می گم)
این فلش زرد رنگ نشون میده که دستور بعدی که اجرا میشه چیه. برای اجرای متوالی می توانید از f10 یا f11 استفاده کنید که با هربار زدن اونها دستوری که فلش زرد رنگ کنارشه اجرا میشود(البته تفاوت هایی داره که بعدا عرض میکنم)
خوب قبل از اینکه بریم سراغ دیباگینگ برنامه مون ، به امکاناتی که این محیط به ما میده می پردازیم:
این امکانات به صورت window هایی است که در شاخه Debug --> Windows وجود دارند ، فراهم میشود.
خوب ما عموما به سه window نیاز داریم که در شاخه ی Debug --> Windows میتوان آنها را اضافه کنیم:
1- I/O View : این پنجره به ما این امکان را میدهد که مقدار فعلی رجیستر های میکرو را مشاهده کنیم.(خیلی گرافیکی و ساده است ، یکم باش بازی کنید ، متوجه میشوید.)
2- Watch : این پنجره به ما مقادیر متغییرها و آرایه ها و در کل دیتا آبجکت هایی که تعریف کردیم و در بخش فعلی که هستیم به آنها دسترسی داریم را برای ما مشخص میکند. ( برای این کار در قسمت Name بایستی اسم دیتا آبجکت مد نظرتون را تایپ و Enter کنید. برای بدست آوردن آدرس دیتا آبجکت بایستی از & قبل از اسم آن استفاده کنید)
3- Memory : این پنجره محتویات حافظه را به صورت کامل برای ما نمایش میدهد.( برای اینکار بایستی فضای حافظه مد نظرتون را از لیست انتخاب کنید.)
خوب حالا که با ابزار کار آشنا شدیم ، میریم سراغ دیباگینگ برنامه مون .
هنوز فلش زرد رنگ کنار آکولاد اول تابع main است. با زدن دکمه f10 یا f11 فلش روی دستور char x=5; قرار میگیرد. این یعنی اگر یه بار دیگه f10 یا f11 بزنید دستور char x=5; اجرا میشود. خوب قبل از اجرای این دستور بیاید یک نگاه به پنجره watch بندازیم:
همان طور که گفته شد یکی از امکانات این پنجره نمایش مقدار فعلی متغییرهایی است که به اون ها دسترسی داریم:
ما در این برنامه 4 متغییر اعلان شده است : a و b که متغییرهای سراسری هستند و x که متغییر محلی یا local تابع main است و temp که متغییر local تابع xchange است.
اینجا ما هر 4 متغییر را به پنجره watch می دهیم.
میبینیم که مقدار متغییر های x و a و b صفر گذاشته شده و این متغییر ها شناخته شده اند ولی متغییر temp چون ما در تابع main به آن دسترسی نداریم ناشناخته (Unknown identifier ) است.
از این به بعد باید با هربار اجرای یک دستور پنجره watch هم نگاه می کنیم.
دکمه f10 یا f11 را میزنیم ، با ایتکار مقدار متغییر x برابر 5 میشود .
دوبار دکمه f10 یا f11 را میزنیم . اینبار به پنجره IO View نگاه میکنیم ، اگر روی PORTA کلیک کنید می بینیم که بیت های 0 و 2 رجیستر DDRA ست میشود.
دوبار دکمه f10 یا f11 را میزنیم . در پنجره Watch مقدار متغییر a را میبینیم که به 3 تغییر پیدا کرده .
دوبار دکمه f10 یا f11 را میزنیم . در پنجره Watch مقدار متغییر b را میبینیم که به 0 تغییر پیدا کرده . (البته قبلا 0 بوده)
خوب الان فلش زرد رنگ کنار xchange(); قرار دارد .
اینجا میتونیم تفاوت عملکرد دکمه های f10 و f11 را ببینیم:
عملکرد دکمه f10 : با زدن f10 تابع xchange کامل اجرا میشود و فلش زرد رنگ روی حلقه بینهایت میرود. و اگر پنجره watch را ببنیم ، مقادیر متغییر های a و b با هم عوض میشوند.
عملکرد دکمه f11 : با زدن f11 دیباگر و فلش زرد رنگ وارد تابع xchange می شود ، و فلش روی آکولاد اول تابع xchange قرار می گیرد .
دوبار f10 یا f11 می کنیم : چون int x یک اعلان بدون مقدار اولیه است دیباگر از روی آن میگذرد .(یه مطلب جالب ایه که چون دیباگینگ atmel studio نوپاست یک سری باگ دارد ، یکیش اینجا قابل مشاهده است : متغییر x یک متغییر محلی تابع main است و در اینجا باید ناشناخته باشد ، ولی اینجا در پنجره watch مقدار x را صفر نشان داده وکه بعد ورود دوباره به مین درست میشه و همون 5 را نشون میده ولی اینجا بهتر بود متغییر x ناشناخته اعلام می شد.
با زدن متوالی دکمه f10 یا f11 دستورات تابع دونه دونه اجرا میشود و بعد از اجرای آخرین دستور ، دیباگر وارد تابع main می شود.
فعلا تا همینجا کافیه . امکانات دیگه مثل قرار دادن break point و ... هم وجود دارد که با بازی کردن در محیط دیباگر می توانید تجربی آنها را فرا بگیرید.
-----------پستهای به نسبت مفیدتر در این تاپیک -------------------------------------------------------------------------------------
البته کامل خواندن این تاپیک را به همه ی دوستان توصیه میکنم ، در صورتی که میخواهید به پستهای به نسبت مفیدتر دسترسی داشته باشید میتوانید از لینکهای زیر استفاده کنید:
انجام عملیات بیتی روی یک بایت یا رجیستر خاص : http://www.eca.ir/forum2/index.php?topic=81025.msg493466#msg493466
آشنایی با عملگر شیفت و مقدار دهی به رجیستر ها به صورت رایج تر: http://www.eca.ir/forum2/index.php?topic=81025.msg493484#msg493484
نحوه کار با توابع تاخیر( delay ) در اتمل استادیو: http://www.eca.ir/forum2/index.php?topic=81025.msg493662#msg493662
انواع متغییرها از نظر حوزه دسترسی و LifeTimeم : http://www.eca.ir/forum2/index.php?topic=81025.msg499601#msg499601
چندی در رابطه با پیشوند volatile در سی: http://www.eca.ir/forum2/index.php?topic=81025.msg499818#msg499818 و http://www.eca.ir/forum2/index.php?topic=81025.msg499866#msg499866
دیتا آبجکت چیست و معرفی استراکچر: http://www.eca.ir/forum2/index.php?topic=81025.msg504542#msg504542
مختصری در باب اشاره گرها در سی و عملگر <-- : http://www.eca.ir/forum2/index.php?topic=81025.msg504661#msg504661
یک تابع کوچک برای ارسال طلاعات از طریق یوزارت: http://www.eca.ir/forum2/index.php?topic=81025.msg505180#msg505180
انواع حافظه ها و دسترسی به حافظه فلش(قسمت اول): http://www.eca.ir/forum2/index.php?topic=81025.msg505462#msg505462
انواع حافظه ها و دسترسی به حافظه فلش(قسمت دوم): http://www.eca.ir/forum2/index.php?topic=81025.msg505535#msg505535
کار با وقفه ها و نوشتن روتین وقفه مورد نظر: http://www.eca.ir/forum2/index.php?topic=81025.msg505608#msg505608
مثال از استفاده از وقفه در برنامه ( ارسال رشته به صورت سریال) : http://www.eca.ir/forum2/index.php?topic=81025.msg505729#msg505729
-----------راه انداز ماژول های مختلف بوسیله ی میکرو و Atmel Studio -------------------------------------------------------------------------------
به لینک زیر مراجعه کنید:
http://www.eca.ir/forum2/index.php?topic=82130.0
درصورتی که برای ماژول درخواستی شما راه اندازی نبود ، میتوانید در همان تاپیک تقاضا دهید .
پیشاپیش از سوالات و همکاریتون در این تاپیک تشکر و قدردانی میکنم.
دیدگاه