وقفه ها در میکروکنترلر

توضیحاتی جامع و کاربردی در مورد وقفه ها در میکروکنترلر

آشنایی اولیه با وقفه ها در میکروکنترلر

وقفه ها در میکروکنترلر (Interrupts)

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

تعریف وقفه : وقفه (Interrupt) به معنی تأخير زمانی نیست، بلکه به معنی قطع موقت برنامه جاری و سرویس دادن به زیر روال وقفه است.

روش های بررسی یک رویداد از جانب CPU

به طور کلی CPU برای تشخیص رویدادهای داخلی (مانند تست پرچم سرریز تایمر یا کانتر) و رویدادهای خارجی (مانند تشخیص لبه پایین رونده یک پالس و یا وصل شدن یک کلید) می تواند از دو روش زیر استفاده کند:

روش سرکشی (Polling)

در این روش کاربر توسط برنامه نویسی با فواصل زمانی مشخص و دائما رویداد موردنظر را بررسی می کند. به طور مثال شما در حال درس خواندن و منتظر یک شخص هستید. اگر شما هر یک دقیقه یکبار بروید و از پنجره بیرون را نگاه کنید که ببینید آن شخص آمده است؟ یا خیر؟! به این روش سر کشی یا Polling می گوییم. به طور نمونه اگر در برنامه نویسی، ما برای بررسی فشردن یک کلید و یا فعال شدن یک پرچم خاص هر چند لحظه یک بار بخواهیم بررسی را انجام دهیم. در واقع به روش Polling عمل کرده ایم. عيب این روش تلف کردن وقت CPU است. اما به این معنی نیست که این روش فایده و کاربردی ندارد، چه بسا در بسیاری از مواقع از آن استفاده می کنیم.

روش وقفه (Interrupt)

یک راه ساده تر آن است که شما به درس خواندن خود ادامه بدهید و منتظر زنگ شخص مورد نظر بمانید. هر موقع که زنگ منزل را زدند بروید به آن پاسخ دهید و برگردید و سپس به درس خواندن خود ادامه دهید. به این روش وقفه یا Interrupt می گوییم. می بینید که در این حالت وقت شما صرف سرکشی برای آمدن شخص مورد نظر تلف نشده است. در این روش CPU بدون در نظر گرفتن رویداد، به انجام سایر اعمال مشغول می شود. با وقوع اتفاق مورد نظر، CPU انجام خط جاری برنامه را متوقف کرده و به بردار وقفه مربوطه پرش می کند. زیر روال سرویس وقفه Interrupt Service Routine) ISR) را اجرا میکند. پس از اجرای این زیر روال به خطی از برنامه که آن را قطع کرده بود بر می گردد.

 وقفه ها در میکروکنترلر

 وقفه ها در میکروکنترلر

بردارهای وقفه و Reset در ATmega16

ابتدا بهتر است منظورمان را از بردار مشخص نماییم. شما موقعی که برنامه را می نویسید. برنامه تبدیل به یک سری کد ماشین (HEX) می شود. که از مکان صفر حافظه Flash توسط پروگرامر نوشته می شود. حال اگر بیاییم یک مکان مشخص از حافظه ثابت را به وقفه خاصی اختصاص دهیم و سایر قسمت های برنامه را در مکان دیگری ذخیره نماییم. به طوری که با تحریک آن وقفه، برنامه به آن مکانی که به طور ثابت و مشخص به وقفه اختصاص داده بودیم، پرش کند. به آن مکان بردار وقفه می گوییم. در جدول ۵-۱ آدرس و شماره ی بردار تمام منابع وقفه در میکروکنترلر ATmega16 آورده شده است.

 وقفه ها در میکروکنترلر

آدرس : تهران – بلوار کشاورز- خیابان 16 آذر جنب انتشارات دانشگاه تهران – پلاک 45 – طبقه 4 – واحد9

همه روزه از ساعت 9 تا 16.00 واتساپ و تلگرام : 09059626900 ایمیل : info@rahyaranlms.ir

تلفن : 66176196 (021)

ساعات اداری : شنبه – پنجشنبه : 09:00 – 16:00

وب سایت: www.kishtech.ir www.kishindustry.ir www.rahyaranlms.ir www.kishindustry.com www.portal.kishtech.ir