وقفه های خارجی(External Interrupt)

  • شروع کننده موضوع شروع کننده موضوع مهسـا
  • تاریخ شروع تاریخ شروع
ارسال‌ها
3,981
امتیاز
32,746
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
1390
تصور کنین که منتظر تلفن کسی هستید.دو حالت وجود داره:
1.از صبح تا شب بشینی پای تلفن تا شخص مورد نظر تماس بگیره، باهاش حرف بزنین، و بعد برین سر بقیه کارهاتون!
2.سایر کارهاتونو انجام بدین و هروقت تلفن زنگ زد جواب میدید و دوباره میرین سر ادامه کارهاتون!

طبیعتا و مسلما عاقلانه تر اینه که رفتاری مشابه حالت دوم داشته باشید.
Interrupt یا همان وقفه هم دقیقا همین کاربردو داره. در اینجا من درمورد وقفه های خارجی صحبت میکنم ن هوقفه های داخلی(مثل وقفه ADC).
برای استفاده از وقفه های خارجی به کمک سوئیچ، باید سودیچ ها را به پینهای INT میکروکنترلر وصل کنید.مثلا ATmega16 سه تا وقفه خارجی داره.(پینهای 3، 16 و 17)

Interrupt به پنج حالت قابل استفاده هست:
1.Rising Edge: هروقت سوئیچو فشار بدید، با برداشتن فشار از روی سوئیچ دستورات درون وقفه اجرا میشن.
2.Falling Edge: هروقت سوئیچو فشار بدید، دستورات درون وقفه اجرا میشن.
3.Low Level: تا زمانی که روی سوئیچ فشار آورده میشه، دستورات درون وقفه اجرا میشن.
4.High Level: تا زمانی که روی سوئیچ فشاری نیومده، دستورات درون وقفه اجرا میشن.
5.Any Change: با هرگونه تغییری، اعم از فشردن یا برداشتن فشار از روی سوئیچ، دستورات درون وقفه اجرا میشن.

تنظیمات ویزارد مربوط به interrupt در تگ External IRQ به صورت زیر هست:
اول کنار choice box کنار هر وقفه تیک بزنین.بعد از list box جلوی آن یکی از حالات گفته شده رو انتخاب کنین.
770dd28a0fe6708b07a7c7fbdfc4083d.bmp

بعد از انجام تنظیمات ویزارد، از File-->Program Preview دستورات تولید شده رو در برنامه اصلی کپی کنین.
ad8e562992c745a45868c3fd002b9e8e.bmp

توجه کنین که توابع Interrupt که در ابتدای برنامه تولید شده قرار دارند، چند خط دستور مربوط به Interrupt درون تابع Main و دستور اسمبلی
کد:
#asm("sei")
حتما بایدبه برنامه اصلی منتقل بشن. دستور اسمبلی مذکور درواقع به منزله راه انداز Interrupt هست.پس اگه این خطو کپی نکنین، اصلا interrupt هاتون کار نمیکنن.
 
وقفه

نگفتی هر میکروکنترلر میتونه بنا به طرز استفادش تعداد وقفه های متغیری داشته باشه بستگی داره برای چی وقفه بخوایم؟مگه نه؟
 
پاسخ : وقفه های خارجی(External Interrupt)

به نقل از رؤیا کریمی :
نگفتی هر میکروکنترلر میتونه بنا به طرز استفادش تعداد وقفه های متغیری داشته باشه بستگی داره برای چی وقفه بخوایم؟مگه نه؟
دقیقا همینطوره.
مثلا Mega8 دوتا وقفه داره.
 
پاسخ : وقفه های خارجی(External Interrupt)

دستت واقعا درد نكنه مهسا! مطالبت خيلي عاليه!!!

مهسا:خواهش میکنم.شما هرچی لازم دارید بگید تا من بذارم.
 
Back
بالا