270 likes | 427 Views
وقفهها. حسین منتظری کردی دانشکده مهندسی برق و کامپیوتر دانشگاه صنعتی نوشیروانی بابل پاییز 91. رئوس مطالب: 1-مقدمه 2- سازماندهی وقفه 8051 3- پردازش وقفهها 4- طراحی برنامه با وقفهها 5- وقفههای درگاه سری 6- وقفههای خارجی 7- زمانبندی وقفه. 1-مقدمه
E N D
وقفهها حسین منتظری کردی دانشکده مهندسی برق و کامپیوتر دانشگاه صنعتی نوشیروانی بابل پاییز 91
رئوس مطالب: 1-مقدمه 2- سازماندهی وقفه 8051 3- پردازش وقفهها 4- طراحی برنامه با وقفهها 5- وقفههای درگاه سری 6- وقفههای خارجی 7- زمانبندی وقفه
1-مقدمه • وقفه درخواستی از ریزپردازنده جهت قطع برنامه جاری و پاسخ به یک زیربرنامه بنام زیربرنامه وقفه (ISR) میباشد • درخواست وقفه بر دو نوع میباشد: • - نرمافزاری • - سختافزاری • درخواست وقفه از نظر اولویت: • - غیرقابل پوشش (Non-Maskable) • - قابل پوشش (Maskable) • ریزپردازنده در ابتدای فراخوانی هر دستور، شرایط درخواست وقفه را بررسی میکند • بازگشت از سرویس وقفه با یک دستور بازگشت از وقفه
2- سازماندهی وقفه 8051 • وجود 5 منبع وقفه برای 8051؛ 2 منبع وقفه خارجی، 2 منبع وقفه زمانسنج، و 1 منبع وقفه درگاه سری • غیر فعال شدن تمام وقفهها با راهاندازی سیستم و فعال شدن توسط نرمافزار • پاسخدهی به زیربرنامه وقفه براساس یک رشته آراء و اولویت وقفه، امکان درخواست همزمان چند وقفه از ریزپردازنده • فعالسازی و غیرفعال کردن وقفه • امکان فعال کردن یا غیرفعال کردن منابع وقفه با ثبات ویژه IE بصورت بیت آدرسپذیر در آدرس 0A8H • وجود بیت جهت تواناسازی جداگانه منابع وقفه و همچنین، تواناسازی کلی وقفهها • نشاندارکردن دو بیت جهت تواناسازی هر منبع وقفه با دستورات پردازش بیت یا با مقدار دهی ثبات IE با دستور MOV
اولویت وقفه • امکان برنامهریزی جداگانه هر منبع وقفه به دو سطح از اولویت وقفه از طریق ثبات ویژه IP با بیت آدرسپذیر در مکان 0B8H • پاک شدن IP در راهاندازی و قرارگرفتن همه منابع وقفه در سطح پایین • امکان پذیرش وقفه جدید در زیربرنامه وقفه درصورتیکه وقفه جدید در سطح بالاتری از اولویت نسبت به وقفه درحال اجرا قرارداشته باشد
در 8051 اگر یک ISR با اولویت پایین درحال اجرا باشد، آنگاه وقفه با اولویت بالاتر باعث ایجاد وقفه در این ISR میگردد؛ امکان پذیرش وقفه برای ISR اولویت بالا وجود ندارد • درصورت ایجاد دو وقفه بطور همزمان، وقفه با اولویت بالاتر اجرا میشود • رشته وقفه • ترتیب بررسی ایجاد وقفه بصورت: INT0، T0، INT1، T1، و درگاه سری (، T2)
3- پردازش وقفهها • با پذیرش وقفه توسط ریزپردازنده مراحل زیر انجام میشود: • - تکمیل اجرای دستور جاری • - ذخیره مقدار PC در پشته • - ذخیره وضعیت فعلی وقفه جاری • - مسدود شدن وقفههای هم سطح با وقفه جاری
- بارگذاری PC با بردار آدرس ISR جاری • - اجرای ISR جاری • اتمام یک ISR با دستور RETI که موجب اجرای مراحل زیر میشود • - بازیابی مجدد وضعیت وقفه • - بارگذاری مجدد PC با مقدار قبلی • - اجرای برنامه اصلی از جاییکه وقفه ایجاد شد • بردار وقفه • آدرس بارگذاری PC بهنگام پذیرش وقفه را بردار وقفه مینامند، آدرس شروع ISR برای منبع درخواست وقفه • RST مانند عملوقفه بدلیل ایجادوقفه در برنامهاصلی و بارگذاری PC با آدرس 0000H • پاک شدن خودکار پرچم منبع درخواست وقفه توسط سختافزار پساز بارگذاری بردار وقفه، باستثنای TI و RI (TF2 و EXF2)
بدلیل قرارداشتن بردارهایوقفه در ابتدای حافظهبرنامه، بکارگیری دستور LJMP Main در شروع هر برنامهای که از زیربرنامه ISR استفاده میکند • 4- طراحی برنامه با وقفهها • کاهش اتلاف وقت ریزپردازنده با استفاده از وقفه و جلوگیری از حلقههای انتظار • مزیت وقفه در کاربردهای کنترلگرا جاییکه میکروکنترلر همزمان با قطعات ورودی و خروجی زیادی در ارتباط میباشد • شروع برنامههای شامل ISR با قراردادن یک پرشبلند در ابتدای برنامه
زیربرنامههای وقفه کوچک • برنامهای که 8 بایت مکان حافظه بردار وقفه برای آن کافی باشد • درصورت استفاده از چند ISR، توجه به عدم همپوشانی کد برنامه سرویسها • زیربرنامههای وقفه بزرگ • برنامهای که 8 بایت مکان حافظه بردار وقفه برای آن کافی نباشد • بطور معمول شروع زیربرنامه وقفه با یک دستور پرش در این وضعیت
اگر برنامه اصلی برای پاسخ به وقفه درگاه سری، زمانسنج، و یا ثباتهای وقفه برنامهریزی شود، آنگاه برنامه اصلی تنها شامل • Here: SJMP Here • با ایجاد یک وقفه، خارج شدن برنامه اصلی از حلقه انتظار و پاسخدهی به زیربرنامه وقفه • مثال: تولید یک موج مربعی KHz 10 در P1.0 با وقفه زمانسنج صفر
مثال: برنامهای جهت تولید دو موج مربعی با فرکانسهای KHz 7 و Hz 500 در P1.7 و P1.6 بنویسید. • استفاده از دو زمانسنج صفر و یک بترتیب در حالتهای 2 و 1 جهت تولید موج KHz 7 و Hz 500 • آمادهسازی زمانسنج یک در زیربرنامه وقفه T1ISR، طی مراحل: 1) توقف زمانسنج، 2) بارگذاری، 3) راهاندازی زمانسنج، و 4) مکمل نمودن P1.6
5- وقفههای درگاه سری • درصورت نشاندارشدن TI یا RI اتفاق میافتد؛ برخلاف وقفه زمانسنج، پرچم وقفه توسط سختافزار پاک نمیشود
تعیین منبع وقفه در ISR و سپس، پاک کردن پرچم مربوطه توسط نرمافزار • مثال: برنامهای با وقفه جهت انتقال پیوسته کد اسکی (شامل کد کنترل) به یک ترمینال متصل به درگاه سری 8051 بنویسید. نرخ انتقال برابر 1200 است
در این مثال، با نرخ انتقال 1200 یک بیت در مدت ms 0/833 = 1200 ÷ 1 ارسال میشود؛ باتوجه به UART 8 بودن درگاه سری، برای 10 بیت مدت ms 8/33 یا 8333 میکروثانیه طول میکشد؛ اجرای ISR در 8 میکروثانیه، لذا 99/9% = 8333 ÷ 8325 از وقت CPU صرف اجرای دستور SJMP $ میشود • 6- وقفههای خارجی • اعمال یک وقفه خارجی به میکروکنترلر با سطح صفر یا لبه منفی به پایههای وقفه INT0 و INT1 در P3 • پرچمهای اصلی مولد این وقفهها IE0 و IE1 از TCON، حساس به سطح یا لبه بودن قابل کنترل با IT0 و IT1 از TCON، اگر ITX= 0 باشد آنگاه وقفه خارجی حساس به سطح و در غیر اینصورت حساس به لبه • مثال: با استفاده از وقفه 8051، برنامهای جهت کنترل حرارت یک کوره بنویسید. حرارت کوره بایستی در °C 1 ± 20 تثبیت شود. فرض خاموش/روشن شدن کوره با P1.7 انجام میشود و حسگرهای داغ/سرد بودن کوره بترتیب به INT0 و INT1 متصل میباشند.
مثال: برنامهای با استفاده از وقفه جهت تولید اخطار ورود بدون اجازه بنویسید. اخطار، یک صدای Hz 400 برای 1 ثانیه در P1.7 تولید میکند و حسگر متصل به INT0 باعث تولید یک لبه منفی میشود. • برنامه شامل 3 وقفه: وقفه خارجی صفر برای حسگر درب، وقفه زمانسنج صفر برای تولید صدای Hz 400، و وقفه زمانسنج یک برای تاخیر 1 ثانیه • پساز مقداردهی اولیه برخی از ثباتهای ویژه و تواناسازی وقفه خارجی صفر در وضعیت تحریک با لبه منفی، ایجاد وقفه با بازشدن درب • وقفه بازشدن درب باعث اجرای EX0ISR و در این زیربرنامه، فعالسازی وقفههای زمانسنجها بترتیب ابتدا زمانسنج صفر و سپس، زمانسنج یک • بعد از تواناسازی وقفه زمانسنج صفر، ایجاد اولین وقفه اجباری و رفتن به T0ISR برای مقداردهی اولیه ثباتهای زمانسنج صفر (1 S= 1000000 μS) • با بازگشت از T0ISR، رفتن به T1ISR و راهاندازی زمانسنج یک برای تولید یک آهنگ با فرکانس Hz 400 در P1.7
7- زمانبندی وقفه • باتوجه به نحوه نمونهبرداری از سیگنال وقفه توسط CPU، وجود یک تاخیر بین زمان مشاهده وقفه تا شروع ISR بنام زمانعکسالعمل؛ میزان زمانعکسالعمل حداقل برابر μS 3/25 برای وقفه سطح صفر تا حداکثر μS 9 برای سطح یک با کریستال MHz 12