طراحی و ساخت انواع مدارات میکرو کنترلر

avr , pic,arm
طبقه بندی موضوعی
آخرین نظرات

به نام خدا

سلامی دوباره به همراهان همیشه ناهمراه !

چطورید دوستان ؟!

قسمت شد یه بار دیگه پست آموزش بزارم براتون،ایشالا که خوشتون بیاد و بتونید از این مطالب استفاده کافی رو ببرید !

 

 

امروز میخوام راجع به وقفه یا Interrupt صحبت کنم !

دقت کنید که تنها در حد آشنایی و معرفی با وقفه آشنا میشید و در این قسمت از آموزش از بیان جزئیات خودداری میکنم و تنها هدفم از نوشتن این بخش از آموزش اینه که اگه یه جا گفتم "وقفه" نگرخید !!!

 

اگه کلمه interrupt رو داخل دیکشنری معادل فارسیشو ببینید با عباراتی نظیر :

قطع کردن،گسیختن،کلام کسی را قطع کردن،منقطع کردن و ...   روبرو خواهید شد.

 

اما اینجا منظور از interrupt دقیقا چیه ؟

 

وقفه مکانیزمی است که میکروکنترلر را برای پاسخگویی به برخی وقایع لحظه ای فعال میکند.(این تعریف کتابیش بود !)

 

مکانیزم :

 

هنگام رخداد وقفه،برنامه ای که در حال اجراست قطع میشود و برنامه وقفه انجام میشود و پس از آن،برنامه از همانجا که قطع شده است از سر گرفته میشود و ادامه پیدا میکند.

 

مراحل اجرای یک وقفه ؛
 

پس از آنکه میکروکنترلر درخواست وقفه را دریافت کرد مراحل زیر انجام میشود :

1.به دستوری که در حال اجرای آن باشد پایان میدهد و آدرس دستورالعمل بعدی را در فضایی به نام پُشته (Stack) ذخیره میکند.

2.به جدول بردار وقفه مراجعه میکند،آدرس سرویس وقفه (ISR) را پیدا میکند،به آدرس بدست آمده پرش میکند.

3.زیربرنامه وقفه رو اجرا میکند.

4.آدرسی را که در پشته ذخیره کرده بود را برداشته و اجرای ادامه برنامه را از سر میگیرد.

 

بردار وقفه : هنگام رخدادن وقفه،آدرسی که در شمارنده برنامه قرار میگیرد رو بردار وقفه مینامند.

 

پُشته (Stack) چیست ؟

 

قسمتی از حافظه داده SRAM است که برای اجرای برنامه وقفه مورد نیاز است.

در واقع این بخش یک جزئی از SRAM هست که یه سری دستورات جهت فراخوانی میکرو و علی الخصوص وقفه رو در خودش ذخیره میکنه ! اینو دیگه همه در جریانش هستید که RAM چکنویس (چرکنویس!) میکرو است.(اینو گفتم که فقط گفته باشم ! cool)

 

اما تعریف خودمونیش (یجور بگم کَف بُر بشید !!!) yes :

مثال :

 

فرض کنید نشستید پای کامپیوتر و مشغول تایپ کردن متنی از روی کتاب هستید.مثلا یه تحقیق میخواین تحویل استادتون بدید و میخواین 5 صفحه شو از کتاب کُپ بزنید.میاین و کتاب رو میزارید جلوتون و شروع میکنید به تایپ کردن !

در حالیکه 2 صفحه و 3 خط از کتاب رو تایپ کردید،ناگهان مادر گرامیتون صداتون میزنه که پسرم (یا دخترمcheeky) بفرما که ناهار حاضره !

شما هم از فرط گشنگی ! نوشتن ادامه تحقیق رو بی خیال میشید و تا اونجایی که تایپ کردید رو علامت میزنید و مثل موشک خودتون رو به غذا میرسونید و پس از صرف نهار میاین سراغ کامپیوتر و شروع میکنید از خط 4 صفحه 3 (ادامش !) تایپ کردن !!!

 

این ساده ترین و کاملترین مثالی هست که میشه در مورد وقفه زد !

 

تحلیل مثال بالا با مراحل انجام وقفه که براتون بالاتر گفتم ! :

 

*شما در حال تایپ کردن هستید. ==> در حال انجام کار عادی خود

*مادر گرامی شما رو صدا میزنند. ==> درخواست وقفه (صدا زدن)

*توقف عملیات تایپ کردن. ==> متوقف شدن کار و ذخیره دستورالعمل بعدی (1)

*به سمت محل صرف غدا میروید. ==> رجوع به آدرس وقفه (2)

*شروع به غذا خوردن میکنید. ==> انجام برنامه وقفه (غذا خوردن) (3)

*بر میگردید و ادامه تایپتون رو انجام میدید. ==> بازگشت به محل قبلی و ادامه فعالیت (4)

 


تصویر بالا دقیقا همون حرفهایی که زدم رو داره بیان میکنه.

برنامه در حال اجراست،ناگهان وقفه درخواست میشه،میکروکنترلر به جدول بردار وقفه مراجعه میکنه(1)،آدرس زیرروال وقفه رو پیدا میکنه و پرش میکنه به اون آدرس(2)،پس از اینکه برنامه وقفه اجرا شد مجددا به برنامه اصلی برمیگرده (3).

 

دیاگرام پایین هم همین مسئله رو با یه چشم دیگه نگاه میکنه !

 


 

 

حالا یه عده میان میگن :" آقا قبول،توضیحاتم جامع بود و با مثال برامون جا انداختی وقفه رو.اما ما آخرش نفهمیدیم این وقفه به چه درد میخوره و اصلا کجا باید ازش استفاده کرد.اصلا استفاده نکنیم ازش چی میشه ؟! "

 

اما پاسخ من چیه ؟!

من هم بهشون میگم : " یکم گردو و ماهی بخورید ! (فسفر داره برای مغزتون خوبه !!!)  خخخخخخخخخخخخ laughcheekycool "

اما جدا از شوخی و بی مزه بازی و مسخره کردن دیگران،این سوال،سوال بجاییه !

 

بهتره که یه مطلبی رو حاشیه وار توضیح بدم ؛

 

پردازنده ها برای اینکه از رویدادهای داخلی و خارجی مطلع بشند از دو روش میتونند استفاده کنند :

 

روش اول ؛ روش سرکشی یا polling :

 

در این روش با استفاده از برنامه نویسی،یه فواصل زمانی دلخواه رو معین میکنیم و بصورت متناوب دائم رویداد مورد نظرمون چک میشه که آیا اتفاق افتاده یا نه ! (اونایی که برنامه نویسی کردند،بهتر متوجه شدند من چی میگم !)

 

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی