- ہمیں مداخلت کی کیوں ضرورت ہے؟
- ایم ایس پی 430 میں مداخلت کی اقسام
- MSP430 میں پروگرام میں رکاوٹ پیدا کریں
- GPIO مداخلت کی جانچ کیلئے MSP430 سرکٹ
- مداخلت کے لئے پروگرامنگ MSP430
- سی سی ایس سے MSP430 پر پروگرام اپ لوڈ کرنا
- MSP430 پر مداخلت کا پروگرام
ایک عام ڈیجیٹل گھڑی پر غور کریں جو آپ کو صرف وقت دکھانے کے لئے پروگرام کیا گیا ہے ، اب تصور کریں کہ آپ اس کا ٹائم زون تبدیل کرنا چاہتے ہیں۔ آپ کیا کریں گے؟ آپ صرف ایک بٹن دبائیں جو مینو میں تبدیل ہوتا ہے جو آپ کو ٹائم زون کو تبدیل کرنے کے قابل بناتا ہے۔ یہاں ، نظام اپنے وقتی عمل کو روکنے کے ل pred آپ کے بیرونی مداخلت کی پیش گوئی نہیں کرسکتا ہے اور آپ سے انتظار کرنے کے لئے نہیں کہہ سکتا کیونکہ وہ آپ کی گھڑی پر سیکنڈ کی قدر بڑھانے میں مصروف ہے۔ یہیں سے رکاوٹیں کام آتی ہیں۔
رکاوٹیں ہمیشہ بیرونی ہونے کی ضرورت نہیں ہوتی ہیں۔ یہ اندرونی بھی ہوسکتا ہے۔ ایمبیڈڈ رکاوٹ میں زیادہ تر مرتبہ سی پی یو کے دو پردییوں کے مابین مواصلات کی سہولت فراہم کرتا ہے۔ پرائم سیٹ ٹائمر کو دوبارہ ترتیب دینے پر غور کریں اور ٹائمر رجسٹر میں وقت کی قیمت تک پہنچنے پر ایک خلل پیدا ہوجائے۔ مداخلت کرنے والا ہینڈلر DMA جیسے دیگر پردییوں کو شروع کرنے کے لئے استعمال کیا جاسکتا ہے۔
اس ٹیوٹوریل میں ، ہم نے مختلف ایل ای ڈی کو تبدیل کرنے کے لئے MSP430 پر بیرونی مداخلت کا استعمال کیا ہے ۔ جب پش بٹن کا استعمال کرتے ہوئے ریاست کی تبدیلی کے ذریعہ بیرونی مداخلت کی جاتی ہے تو ، کنٹرول کو آئی ایس آر میں منتقل کردیا جاتا ہے۔ ایم ایس پی 430 جی 2 لانچ پیڈ کے لئے سی سی ایس ماحولیاتی سیٹ اپ جیسی بنیادی باتوں کو جاننے کے ل C ، اس لنک کی پیروی کریں ایم سی پی 430 کے ساتھ سی سی ایس کا استعمال کرتے ہوئے شروع کریں کیونکہ ہم اس ٹیوٹوریل میں اس کی تفصیلات حاصل نہیں کرسکیں گے۔ لنک کو فالو کرکے انرجیہ آئی ڈی ای اور سی سی ایس کا استعمال کرتے ہوئے دیگر ایم ایس پی 430 پر مبنی سبق بھی چیک کریں۔
ہمیں مداخلت کی کیوں ضرورت ہے؟
ایمبیڈڈ سسٹم میں پولنگ اوور ہیڈ کو بچانے کے لئے مداخلت کی ضرورت ہے۔ جب موجودہ کام کو پہلے سے خالی کر کے اعلی ترجیح والے کاموں کو انجام دینے کی ضرورت ہوتی ہے تو ان کو بلایا جاتا ہے۔ یہ بھی کم طاقت کے طریقوں سے سی پی یو کو جگانے کے لئے استعمال کیا جا سکتا ہے۔ جب یہ GPIO پورٹ کے ذریعہ بیرونی سگنل کے کنارے منتقلی سے بیدار ہوتا ہے تو ، ISR کو پھانسی دے دی جاتی ہے اور CPU دوبارہ لو پاور موڈ میں واپس آجاتا ہے۔
ایم ایس پی 430 میں مداخلت کی اقسام
MSP430 میں مداخلت مندرجہ ذیل اقسام- تحت آتے ہیں
- سسٹم ری سیٹ
- غیر ماسکبل مداخلت
- ماسک ایبل رکاوٹ
- ویکٹرڈ اور نان ویکٹرڈ رکاوٹیں
سسٹم ری سیٹ:
یہ سپلائی وولٹیج (وی سی سی) کی وجہ سے ہوسکتا ہے اور منتخب کردہ ری سیٹ موڈ کے ساتھ آر ایس ٹی / این ایم آئی پن میں کم سگنل کی وجہ سے ہوسکتا ہے اور واچ ڈاگ ٹائمر اوور فلو اور سیکیورٹی کلیدی خلاف ورزی جیسی وجوہات کی وجہ سے بھی ہوسکتا ہے ۔
غیر ماسکبل مداخلت:
ان رکاوٹوں کو سی پی یو ہدایات کے ذریعہ نقاب پوش نہیں کیا جاسکتا ہے۔ ایک بار جب جنرل رکاوٹ چالو ہوجاتا ہے ، نان ماسک ایبل رکاوٹ کو پروسیسنگ سے ہٹایا نہیں جاسکتا۔ یہ آسیلیٹر غلطیوں اور RST / NMI (NMI موڈ میں) کو دستی طور پر دیا جانے والا ایک کنارے جیسے ذرائع سے تیار کیا گیا ہے۔
ماسک ایبل رکاوٹ:
جب مداخلت ہوتی ہے اور اگر اسے CPU کی ہدایت سے نقاب پوش کیا جاسکتا ہے ، تو یہ ماسک ایبل رکاوٹ ہے۔ انہیں ہمیشہ بیرونی ہونے کی ضرورت نہیں ہے۔ وہ بھی پردیی اور ان کے افعال پر انحصار کرتے ہیں۔ یہاں استعمال ہونے والی بیرونی بندرگاہ کی مداخلتیں اس زمرے میں آتی ہیں۔
ویکٹرڈ رکاوٹیں اور غیر وقف شدہ رکاوٹیں:
ویکٹرڈ: اس معاملے میں ، وہ ڈیوائسز جو رکاوٹ ہوتی ہیں وہ ہمیں وقفے ویکٹر ایڈریس کو پاس کرکے رکاوٹ کا ذریعہ فراہم کرتی ہیں۔ یہاں آئی ایس آر کا پتہ طے ہوچکا ہے اور کنٹرول اس پتے پر منتقل کردیا جاتا ہے اور آئی ایس آر باقی کی دیکھ بھال کرتا ہے۔
غیر وصولی: یہاں تمام رکاوٹوں میں مشترکہ ISR ہے۔ جب کسی رکاوٹ کے غیر منبع ذریعہ سے مداخلت ہوتی ہے تو ، کنٹرول عام پتے پر منتقل ہوجاتا ہے ، جس میں تمام غیر ویسٹرڈ رکاوٹیں شریک ہوتی ہیں۔
MSP430 میں پروگرام میں رکاوٹ پیدا کریں
جب مداخلت ہوتی ہے تو ، ایم سی ایل کے آن ہوجاتا ہے اور سی پی یو کو آف اسٹیٹ سے واپس بلایا جاتا ہے۔ چونکہ مداخلت کی رونما ہونے کے بعد پروگرام کا کنٹرول آئی ایس آر ایڈریس پر منتقل ہوتا ہے ، پروگرام کاؤنٹر اور اسٹیٹس رجسٹر میں موجود اقدار کو اسٹیک پر منتقل کردیا جاتا ہے۔
لگاتار ، اسٹیٹس رجسٹر کلیئر ہوجاتا ہے ، جس سے جی آئی ای کو صاف کیا جاتا ہے اور کم پاور موڈ کو ختم کیا جاتا ہے ۔ اعلی ترجیح کے ساتھ مداخلت کو پروگرام کے کاؤنٹر میں مداخلت کرنے والے ویکٹر ایڈریس کو رکھ کر منتخب اور عمل میں لایا جاتا ہے۔ ہمارا MSP430 GPIO انٹراپٹ مثال کوڈ حاصل کرنے سے پہلے ، اس میں ملوث پورٹ رجسٹروں کے کام کو سمجھنا ضروری ہے۔
MSP430 پر GPIO کنٹرول کیلئے پورٹ رجسٹر:
PxDIR: یہ ایک پورٹ سمت کنٹرول رجسٹر ہے۔ یہ پروگرامر کو خاص طور پر 0 یا 1 لکھ کر اپنے فنکشن کو منتخب کرنے کی اجازت دیتا ہے۔ اگر پن کو 1 کے طور پر منتخب کیا گیا ہے ، تو یہ آؤٹ پٹ کے طور پر کام کرتا ہے۔ بندرگاہ 1 کو 8 بٹ بندرگاہ بننے پر غور کریں ، اور اگر پنوں 2 اور 3 کو آؤٹ پٹ پورٹس کے طور پر تفویض کرنا ہے تو P1DIR رجسٹر کو 0x0C ویلیو کے ساتھ سیٹ کرنا ہوگا۔
PxIN: یہ صرف پڑھنے والا اندراج ہے اور بندرگاہ میں موجودہ اقدار اس رجسٹر کا استعمال کرتے ہوئے پڑھ سکتے ہیں۔
PxOUT: اس مخصوص رجسٹر کا استعمال بندرگاہوں پر براہ راست اقدار لکھنے کے لئے کیا جاسکتا ہے۔ یہ تب ہی ممکن ہے جب پل / اپ ڈاؤن رجسٹر غیر فعال ہو۔
PxREN: یہ ایک 8 بٹ رجسٹر ہے جو پل اپ / پل ڈاون رجسٹر کو اہل یا غیر فعال کرنے کے لئے استعمال ہوتا ہے۔ جب ایک PxREN اور PxOUT دونوں رجسٹر میں ایک پن 1 کے طور پر مقرر کیا گیا ہے ، تو خاص پن کھینچ لیا جاتا ہے۔
PxDIR |
PxREN |
PxOUT |
I / O تشکیل دیں |
0 |
0 |
ایکس |
مزاحم کاروں کے ساتھ ان پٹ غیر فعال |
0 |
1 |
0 |
اندرونی پل ڈاؤن ڈاؤن کے ساتھ ان پٹ قابل عمل ہے |
0 |
1 |
1 |
اندرونی پل اپ کے ساتھ ان پٹ قابل عمل ہے |
1 |
ایکس |
ایکس |
آؤٹ پٹ - PxREN کا کوئی اثر نہیں ہوتا ہے |
PxSEL اور PxSEL2: چونکہ MSP430 میں موجود تمام پن ایک سے زیادہ ملٹی پلس ہیں ، اس کو استعمال کرنے سے پہلے خاص فنکشن کا انتخاب کرنا ہوگا۔ جب دونوں PxSEL اور PxSEL2 رجسٹرز کو کسی خاص پن کے لئے 0 کے طور پر مقرر کیا گیا ہے ، تو عام مقصد I / O منتخب کیا جاتا ہے۔ جب PxSEL کو 1 کے طور پر سیٹ کیا جاتا ہے ، تو بنیادی پردیی فنکشن کا انتخاب کیا جاتا ہے ، وغیرہ۔
PxIE: یہ کسی پورٹ x میں کسی خاص پن کے لئے مداخلت کو اہل یا غیر فعال کرتا ہے۔
PxIES: یہ وہ کنارے منتخب کرتا ہے جس پر ایک خلل پیدا ہوتا ہے۔ 0 کے لئے ، ایک بڑھتی ہوئی ایج منتخب کی جاتی ہے اور 1 کے لئے ، گرتے ہوئے کنارے کو منتخب کیا جاتا ہے۔
GPIO مداخلت کی جانچ کیلئے MSP430 سرکٹ
ہمارے MSP430 انٹراپٹ مثال کے کوڈ کو جانچنے کے لئے استعمال ہونے والا MSP430 سرکٹ ذیل میں دکھایا گیا ہے۔
بورڈ کا گراؤنڈ ایل ای ڈی اور بٹن دونوں کو گراؤنڈ کرنے کے لئے استعمال ہوتا ہے۔ پش بٹن کے متنازعہ مخالف سمت عام طور پر کھلے ٹرمینلز ہوتے ہیں اور جب پش بٹن دب جاتا ہے تو وہ مربوط ہوجاتے ہیں۔ ایل ای ڈی کے ذریعہ اعلی موجودہ کھپت سے بچنے کے ل A ایک ریزسٹر ایل ای ڈی سے پہلے منسلک ہوتا ہے۔ عام طور پر ، 100 ہیم - 220 ہیم کی حد میں کم مزاحم کار استعمال ہوتے ہیں۔
ہم انٹراپٹس بندرگاہ کو بہتر طور پر سمجھنے کے لئے 3 مختلف کوڈ استعمال کرتے ہیں۔ پہلے دو کوڈز ایک ہی سرکٹ کا استعمال سرکٹ ڈایاگرام 1 کی طرح کرتے ہیں۔ آئیے کوڈ میں کوتاہی کریں۔ رابطے ہوجانے کے بعد ، میرا سیٹ اپ اس طرح لگتا ہے۔
مداخلت کے لئے پروگرامنگ MSP430
مکمل ایم ایس پی 430 انٹراپٹ پروگرام اس صفحے کے نیچے پایا جاسکتا ہے ، کوڈ کی وضاحت مندرجہ ذیل ہے۔
نیچے کی لائن واچ ڈاگ ٹائمر کو آپریشن سے روکتی ہے ۔ واچ ڈاگ ٹائمر عام طور پر دو کام کرتا ہے۔ ایک کنٹرولر کو دوبارہ ترتیب دے کر لامحدود لوپس سے کنٹرولر کو روکتا ہے اور دوسرا یہ کہ ان بلٹ ٹائمر کا استعمال کرکے وقتا فوقتا واقعات کو متحرک کردیتا ہے۔ جب مائکروکانٹرولر ری سیٹ ہوجاتا ہے (یا طاقت سے چلتا ہے) ، تو یہ ٹائمر موڈ میں ہوتا ہے اور 32 ملی لیس سیکنڈ کے بعد ایم سی یو کو دوبارہ ترتیب دینے کا رجحان دیتا ہے۔ یہ لائن کنٹرولر کو ایسا کرنے سے روکتی ہے۔
WDTCTL = WDTPW + WDTHOLD؛
مقرر P1DIR 0x07 سیٹ پیداوار کے طور پر pin0، PIN1، اور PIN2 کی سمت قدر دکھائیں. مقرر P1OUT 0x30 تشکیل کرنے کے لئے یہ اندرونی pullup مائرودھوں کے ساتھ ایک ان پٹ pin4 اور pin5 پر فعال. مقرر P1REN 0x30 کو ان پنوں پر اندرونی pullup قابل بناتا ہے. P1IE رکاوٹ کے قابل بناتا ہے ، جہاں P1IES ان پنوں میں مداخلت کنارے کے طور پر اعلی سے کم منتقلی کا انتخاب کرتا ہے۔
P1DIR - = 0x07؛ P1OUT = 0x30؛ P1REN - = 0x30؛ P1IE - = 0x30؛ P1IES - = 0x30؛ P1IFG & = ~ 0x30؛
اگلی لائن کم بجلی کے موڈ کو اہل بناتا ہے اور اسٹیٹس رجسٹر میں GIE کو اہل بناتا ہے تاکہ رکاوٹیں مل سکیں۔
__bis_SR_register (LPM4bit + GIE)
پروگرام کاؤنٹر میکرو کا استعمال کرتے ہوئے پورٹ 1 ویکٹر کے پتے کے ساتھ مرتب کیا گیا ہے۔
PORT1_VECTOR ۔ #pragma ویکٹر = PORT1_VECTOR __ متعطل باطل پورٹ_1 (باطل)
مندرجہ ذیل کوڈ pin0 ، پن1 ، پن 2 سے منسلک ہر ایل ای ڈی کو ٹوگل کرتا ہے۔
اگر (گنتی٪ 3 == 0) { P1OUT ^ = BIT1؛ P1IFG & = ~ 0x30؛ گنتی ++؛ } ورنہ اگر (شمار٪ 3 == 1) { P1OUT ^ = BIT1؛ P1IFG & = ~ 0x30؛ گنتی ++؛ } else { P1OUT ^ = BIT2؛ P1IFG & = ~ 0x30؛ گنتی ++؛ }
سرکٹ ڈایاگرام 2:
اسی طرح آئیے ، تصور کو بہتر طور پر سمجھنے کے لئے ایک مختلف پن آزمائیں۔ تو یہاں پش بٹن پن 1.5 کے بجائے 2.0 پن سے جڑا ہوا ہے۔ ترمیم شدہ سرکٹ مندرجہ ذیل ہے۔ ایک بار پھر اس سرکٹ کا استعمال ایم ایس پی 430 بٹن مداخلت پروگرام کو جانچنے کے لئے کیا جاتا ہے ۔
یہاں پورٹ 2 ان پٹ کے لئے استعمال ہوتا ہے۔ لہذا مختلف رکاوٹ ویکٹر کا استعمال کرنا ہوگا۔ P1.4 اور P2.0 ان پٹ لے۔
چونکہ پورٹ 2 صرف ان پٹ کے لئے استعمال ہوتا ہے ، پی 2 ڈی آئی آر 0 کے طور پر سیٹ کیا گیا ہے۔ پورٹ 2 کی پن0 2 کو ان پٹ کے طور پر ان پٹ کے طور پر سیٹ کرنا ہے جس میں اندرونی پل اپ مزاحم کاروں کو ان پٹ لگایا جاسکتا ہے ، P2OUT اور P2REN کے اندراج 1 کی قدر کے ساتھ مقرر کرنا ہوں گے۔ پورٹ 2 کے پن0 پر رکاوٹ پیدا کریں اور اس کے ساتھ ساتھ انٹراپٹ کے کنارے کو بھی منتخب کریں ، P2IE اور P2IES 1 کی قیمت کے ساتھ طے کی گئی ہیں۔ رکاوٹ کی موجودگی.
P2DIR - = 0x00؛ P2OUT = 0x01؛ P2REN - = 0x01؛ P2IE - = 0x01؛ P2IES - = 0x01؛ P2IFG & = ~ 0x01؛
جب مداخلت کا ذریعہ پورٹ 1 سے ہوتا ہے ، تو پورٹ 1 کے پن 1 سے منسلک ایل ای ڈی چمکتا ہے۔ جب رکاوٹ کا ذریعہ پورٹ 2 سے تعلق رکھتا ہے ، تو پھر پورٹ 1 کے پن 2 سے جڑا ہوا ایل ای ڈی چمکتا ہے۔
#pragma ویکٹر = PORT1_VECTOR __ متعطل باطل پورٹ_1 (باطل) { P1OUT ^ = BIT1؛ P1IFG & = ~ 0x10؛ کے لئے (میں = 0؛ میں <20000؛ میں ++) { } P1OUT ^ = BIT1؛ p # پیراگما ویکٹر = پورٹ 2_وییکٹر __ متعطل باطل پورٹ 2 (باطل) { P1OUT ^ = BIT2؛ P2IFG & = ~ 0x01؛ کے لئے (J = 0؛ J <20000؛ J + +) { } P1OUT ^ = BIT2؛ }
سی سی ایس سے MSP430 پر پروگرام اپ لوڈ کرنا
پروجیکٹ کو لانچ پیڈ پر لوڈ کرنے اور اس کو ڈیبگ کرنے کے لئے ، پروجیکٹ کو منتخب کریں اور ٹول بار میں ڈیبگ آئیکن پر کلک کریں۔ متبادل کے طور پر ، ڈیبگ موڈ میں داخل ہونے کے لئے F11 دبائیں یا رنà ڈیبگ پر کلک کریں۔
ایک بار ڈیبگ موڈ میں داخل ہونے کے بعد ، ایم سی یو میں بھری ہوئی کوڈ کو آزادانہ طور پر چلانے کے لئے گرین رنگ کے رن کے بٹن کو دبائیں۔ اب ، جب پش بٹن دب جاتا ہے تو ، کنارے میں ہونے والی تبدیلی سے رکاوٹ پیدا ہوتا ہے ، اس طرح ایل ای ڈی کی حالت میں تبدیلی کا اشارہ ہوتا ہے۔
MSP430 پر مداخلت کا پروگرام
کوڈ کو کامیابی کے ساتھ اپ لوڈ کرنے کے بعد ، ہم اسے صرف پش بٹن کا استعمال کرکے جانچ سکتے ہیں۔ ایل ای ڈی پیٹرن ہمارے پروگرام کے مطابق بدل جائے گا جب بھی پش بٹن کا استعمال کرتے ہوئے رکاوٹ دی جاتی ہے۔
ذیل میں منسلک ویڈیو میں مکمل کام کیا جاسکتا ہے۔ امید ہے کہ آپ نے ٹیوٹوریل سے لطف اندوز ہوکر کچھ مفید سیکھا ہوگا۔ اگر آپ کے کوئی سوالات ہیں تو ، ان کو کمنٹ سیکشن میں چھوڑ دیں یا دیگر تکنیکی سوالات کے لئے ہمارے فورمز کا استعمال کریں۔