• اگر سمپادی هستی همین الان عضو شو :
    ثبت نام عضویت

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

  • شروع کننده موضوع
  • #1
ارسال‌ها
3,981
امتیاز
32,332
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
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 هاتون کار نمیکنن.
 

رؤیاکریمی

کاربر حرفه‌ای
ارسال‌ها
504
امتیاز
33
نام مرکز سمپاد
فرزانگان یزد
شهر
یزد
سال فارغ التحصیلی
91
دانشگاه
یزد
رشته دانشگاه
مهندسی مکانیک
وقفه

نگفتی هر میکروکنترلر میتونه بنا به طرز استفادش تعداد وقفه های متغیری داشته باشه بستگی داره برای چی وقفه بخوایم؟مگه نه؟
 
  • شروع کننده موضوع
  • #3
ارسال‌ها
3,981
امتیاز
32,332
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
1390
پاسخ : وقفه های خارجی(External Interrupt)

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

زرينه

کاربر فوق‌فعال
ارسال‌ها
126
امتیاز
1
نام مرکز سمپاد
دبيرستان فرزانگان اهواز
پاسخ : وقفه های خارجی(External Interrupt)

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

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