آموزش STM8 (قسمت سوم)

آموزش راه اندازی وقفه (inerupt) در میکروکنترلر STM8

راه اندازی وقفه در  STM8 : 

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

ھر وقفه دارای ادرس منحصر به فردی است که با اتفاق افتادن آن cpu برنامه  اصلی خود را رھا کرده و به آن آدرس میرود و برنامه  وقفه مورد نظر را اجرا کرده و سپس به برنامه اصلی بر میگردد.

با بازکردن فایل iostm8s003F3.h میتوانید در قسمت آخر این فایل و در قسمت Interrupt vector numbers ادرس مربوط به ھر وقفه را مشاھده و از ان استفاده نمایید. ھمچنین برای فعال کردن وقفه سراسری میتوانید از فایل intrinsics.h و دستورات آن استفاده نمایید. 

با توجه به دیتاشیت تراشه ، با تنظیم کردن ریجستر DDRX به عنوان ورودی و همچنین ریجسترهای  Px_CR1 , Px_CR2 برای مشخص کردن مود وقفه و همچنین پول آپ کردن آن پین را مشخص کرد . 

برای مشخص کردن نوع حساسیت به سیگنال ورودی 2 ریجستر زیر را تنظیم میکنیم ، در مثال زیر برای سطح پایین رونده تنطیم شده است. 

EXTI_CR1_PDIS = 2;       // Interrupt on falling edge.
EXTI_CR2_TLIS = 0;       // Falling edge only.

نمونه کد راه اندازی این بخش را در قرار میدهیم :
دانلود به صورت مستقیم : دانلود 
دانلود از GitHub : دانلود 

 

نویسنده : محمد امین خادم الحسینی
مراجع :
جزوه مهندس محمد شفیعی 
st.com-stm8

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *