- رکاوٹوں اور ISR کی اقسام
- ایس ٹی ایم 32 میں مداخلت کا نحو
- ضروری اجزاء
- سرکٹ ڈایاگرام اور رابطے
- پروگرامنگ STM32F103C8 مداخلتوں کے لئے
رکاوٹیں ایک ایسا طریقہ کار ہے جس کے ذریعہ I / O یا ہدایت نامہ پروسیسر کی معمولی عملدرآمد معطل کرسکتا ہے اور خود ہی اس کی خدمت میں حاضر ہوجاتا ہے جیسے اس کی اعلی ترجیح ہے۔ مثال کے طور پر ، عام عملدرآمد کرنے والا پروسیسر کسی نہ کسی طرح کے واقعے یا رکاوٹ ہونے کے لئے بھی مسلسل نگرانی کرسکتا ہے۔ یہی وجہ ہے کہ جب بیرونی مداخلت ہوتا ہے (جیسے کسی سینسر سے) تو پروسیسر اپنی معمولی عملدرآمد کو روکتا ہے اور پہلے مداخلت کا کام کرتا ہے اور پھر اس کی عام عملدرآمد جاری رکھے گا۔
یہاں اس پروجیکٹ میں ، STM32F103C8 میں رکاوٹوں کو سمجھنے کے لئے ، ہم پش بٹن کو بیرونی مداخلت کے طور پر استعمال کریں گے۔ یہاں ہم ایک تعداد 0 سے بڑھا کر 16x2 LCD پر ڈسپلے کریں گے ، اور جب بھی پش بٹن دبایا جاتا ہے تو لیڈڈ ٹرن آن ہوجاتا ہے اور LCD ڈسپلے انٹرپرپ کو ظاہر کرتا ہے۔ بٹن کے اجراء ہوتے ہی ایل ای ڈی بند ہوجاتا ہے۔
رکاوٹوں اور ISR کی اقسام
مداخلتوں کو بڑے پیمانے پر دو قسموں میں درجہ بندی کیا جاسکتا ہے:
ہارڈویئر رکاوٹیں: اگر پروسیسر کو اشارہ کچھ بیرونی آلہ جیسے بٹن یا سینسر سے ہے یا کسی دوسرے ہارڈ ویئر ڈیوائس سے ہے جو سگنل تیار کرتا ہے اور آئی ایس آر میں موجود کسی خاص کام کو کرنے کے لئے پروسیسر کو بتاتا ہے تو اسے ہارڈ ویئر کی مداخلت کہا جاتا ہے۔
سافٹ ویئر رکاوٹیں : وہ رکاوٹیں جو سافٹ ویئر ہدایات کے ذریعہ تیار ہوتی ہیں۔
مداخلت کی خدمت کے معمول
رکاوٹ کی خدمت کے معمول یا ایک رکاوٹ ہینڈلر ایک واقعہ ہے جس میں چھوٹی چھوٹی ہدایات موجود ہوتی ہیں اور جب ایک رکاوٹ ہوتی ہے تو پروسیسر پہلے ان کوڈ کو انجام دیتا ہے جو ISR میں موجود ہے اور پھر اس کام کے ساتھ جاری رکھیں جو یہ مداخلت سے پہلے کر رہا تھا۔
ایس ٹی ایم 32 میں مداخلت کا نحو
آئی ایس آر نے اردوینو میں مندرجہ ذیل نحو اٹیچ انٹریٹ (ڈیجیٹل پن ٹنو انٹرپٹ (پن) ، آئی ایس آر ، موڈ) رکھا ہے اور ایس ٹی ایم 32 میں بھی استعمال کیا جاسکتا ہے کیونکہ ہم کوڈ اپ لوڈ کرنے کے لئے ارڈینو آئ ڈی ای کا استعمال کرتے ہیں۔
- ڈیجیٹل پن ٹن انٹرپریٹ (پن): جیسے ارڈینو بورڈ یونو کی طرح ہمارے پاس بھی 2،3 پن ہیں اور میگا میں ہمارے پاس رکاوٹوں کے لئے 2،3،18،19،20،21 ہیں۔ ایس ٹی ایم 32 ایف 103 سی 8 میں ہمارے پاس بھی رکاوٹ پن ہے جس میں جی پی آئی او پنوں کو مداخلت کے ل for استعمال کیا جاسکتا ہے۔ ہم صرف ان پٹ کی وضاحت کرنے کے لئے جو ہم مداخلت کے ل using استعمال کر رہے ہیں۔ لیکن بیک وقت ایک سے زیادہ مداخلتوں کا استعمال کرتے ہوئے ہمیں کچھ پابندیوں پر عمل کرنے کی ضرورت پڑسکتی ہے۔
- آئی ایس آر: یہ ایک رکاوٹ ہینڈلر کا فعل ہے جس کو کہا جاتا ہے جب بیرونی مداخلت ہوتی ہے۔ اس میں کوئی دلائل اور کالعدم واپسی کی قسم نہیں ہے۔
- موڈ: مداخلت کو متحرک کرنے کے لئے منتقلی کی قسم
- رسنگ: جب پن LOW سے HIGH کی طرف منتقل ہوتا ہے تو ایک رکاوٹ کو متحرک کرنا۔
- گرنا: جب پن HIGH سے LOW میں منتقل ہوتا ہے تو ایک رکاوٹ کو متحرک کرنا۔
- تبدیل کریں: جب پن یا تو LOW سے HIGH یا HIGH کی طرف لوٹ جاتا ہے (یعنی ، جب پن تبدیل ہوتا ہے) تو مداخلت کو متحرک کرنا۔
مداخلت کا استعمال کرتے ہوئے کچھ شرائط
- مداخلت کی خدمت کے معمول کے کام (ISR) کو ممکن حد تک مختصر ہونا چاہئے۔
- تاخیر () فنکشن ISR کے اندر کام نہیں کرتا ہے اور اس سے گریز کیا جانا چاہئے۔
ضروری اجزاء
- STM32F103C8
- دبانے والا بٹن
- ایل. ای. ڈی
- مزاحم (10K)
- LCD (16x2)
سرکٹ ڈایاگرام اور رابطے
پش بٹن پن کا ایک رخ STM32 کے 3.3V سے منسلک ہے اور دوسرا رخ STM32 کے ان پٹ پن (PA0) سے ایک پل ڈاون ریزسٹر کے ذریعہ منسلک ہے۔
پل ڈاون ریزٹر کو استعمال کیا جاتا ہے تاکہ مائکروقانت کنٹرولر کو صرف ان پٹ پر ہی HIGH یا LOW ملے جب بٹن دبایا یا جاری ہوگا۔ بصورت دیگر ، مزاحم کو کھینچنے کے بغیر ، ایم سی یو الجھن میں پڑ سکتا ہے اور کچھ بے ترتیب تیرتی قدروں کو ان پٹ میں کھلا سکتا ہے۔
STM32F103C8 اور LCD کے درمیان رابطہ
مندرجہ ذیل جدول میں LCD (16X2) اور STM32F103C8 مائکروکانٹرولر کے مابین پن تعلق دکھاتا ہے۔
STM32F103C8 |
LCD |
GND |
وی ایس ایس |
+ 5 وی |
وی ڈی ڈی |
پوٹینومیٹر سینٹر کا PIN |
V0 |
پی بی 0 |
RS |
GND |
آر ڈبلیو |
پی بی 1 |
ای |
پی بی 10 |
ڈی 4 |
پی بی 11 |
ڈی 5 |
پی سی 13 |
ڈی 6 |
پی سی 14 |
ڈی 7 |
+ 5 وی |
A |
GND |
K |
پروگرامنگ STM32F103C8 مداخلتوں کے لئے
اس سبق کے لئے پروگرام آسان ہے اور اس سبق کے آخر میں دیا گیا ہے۔ ہمیں STM32 پروگرام کرنے کے لئے FTDI پروگرامر کی ضرورت نہیں ہے ، صرف اپنے کمپیوٹر کو STM32 کے USB پورٹ سے جوڑیں اور Ardino IDE سے پروگرامنگ شروع کریں۔ USB پورٹ کے ذریعہ پروگرامنگ STM32 کے بارے میں مزید معلومات حاصل کریں۔
جیسا کہ ہم نے کہا کہ یہاں اس ٹیوٹوریل میں ہم 0 سے ایک نمبر بڑھا رہے ہیں اور اسے 16x2 LCD پر ڈسپلے کریں گے اور جب بھی ایک پش بٹن دب جاتا ہے تو لیڈ آن ہوجاتی ہے اور LCD ڈسپلے 'انٹرپٹ' کو ظاہر کرتا ہے۔
پہلے ایس ٹی ایم 32 کے ساتھ ایل سی ڈی پن رابطوں کی وضاحت کریں ۔ آپ اپنی ضروریات کے مطابق اس میں ترمیم کرسکتے ہیں۔
const int rs = PB10، en = PB11، d4 = PB0، d5 = PB1، d6 = PC13، d7 = PC14؛
اگلا ، ہم LCD ڈسپلے کے لئے ہیڈر فائل شامل کرتے ہیں ۔ اس میں لائبریری کو بلایا گیا ہے جس میں کوڈ پر مشتمل ہے کہ کس طرح STM32 LCD کے ساتھ بات چیت کرنی چاہئے۔ یہ بھی یقینی بنائیں کہ فنکشن LiquidCrystal کو پن ناموں کے ساتھ بلایا گیا ہے جو ہم نے ابھی اوپر بیان کیا ہے۔
شامل کریں
عالمی متغیرات ISR اور مرکزی پروگرام کے مابین ڈیٹا منتقل کرنے کے لئے استعمال ہوتے ہیں۔ ہم متغیر قیادت میں غیر مستحکم اور بولین کے طور پر بھی سچ یا غلط کی وضاحت کرنے کے لئے اس کا اعلان کرتے ہیں ۔
اتار چڑھاؤ
باطل سیٹ اپ () فنکشن کے اندر ، ہم ایک انٹرو میسج ڈسپلے کریں گے اور 2 سیکنڈ کے بعد اسے صاف کردیں گے۔
lcd.begin (16،2)؛ lcd.print ("سرکٹ ڈائجسٹ")؛ تاخیر (2000)؛ lcd.clear ()؛
ایک بار پھر اسی باطل سیٹ اپ () فنکشن میں ، ہمیں ان پٹ اور آؤٹ پٹ پن کو واضح کرنے کی ضرورت ہے۔ ہم نے ایل ای ڈی میں آؤٹ پٹ کیلئے پن PA1 اور پش بٹن سے ان پٹ کیلئے PA0 سیٹ کیا ہے۔
پن موڈ (PA1 ، آؤٹ پٹ) پن موڈ (PA0 ، ان پٹ)
ہم بھی ایک تعداد میں اضافہ کرنے جا رہے ہیں ، لہذا قیمت صفر کے ساتھ متغیر کا اعلان کریں۔
انٹ i = 0؛
اب کوڈ کا اہم حصہ منسلک انٹریٹ () فنکشن ہے ، یہ باطل سیٹ اپ کے اندر بھی شامل ہے ()
منسلک انٹرپریٹ (ڈیجیٹلپن ٹن انٹرپروٹ (PA0) ، بٹن دبائے ہوئے ، تبدیل کریں)
ہم پن سے مخصوص PA0 بیرونی مداخلت کے لئے، اور یہ buttonPressed PA0 پن میں تبدیلی (کم کرنے کے زیادہ یا کم سے زیادہ) رہا ہوتا ہے تو کہا جا رہا ہے جس کی تقریب ہے. آپ ضرورت کے مطابق کسی دوسرے فنکشن کا نام ، پن اور موڈ بھی استعمال کرسکتے ہیں۔
باطل لوپ () کے اندر ہم صفر سے ایک نمبر (i) میں اضافہ کرتے ہیں اور LCD (16x2) میں نمبر پرنٹ کرتے ہیں۔
lcd.clear ()؛ lcd.print ("NUMBER:")؛ lcd.print (i)؛ ++ i؛ تاخیر (1000)؛
سب سے اہم حصہ اس نام کے مطابق ایک وقفے سے ہینڈلر فنکشن بنانا ہے جو ہم نے AttInterrupt () فنکشن میں استعمال کیا تھا ۔ ہم نے بٹن دبائے ہوئے استعمال کیا تو یہاں ہم نے ایک فنکشن باطل بٹن تیار کیا ہے ()
باطل بٹن دباؤ () { if (ledOn) { ledOn = false؛ ڈیجیٹل رائٹ (PA1 ، LOW)؛ } else { ledOn = true؛ ڈیجیٹل رائٹ (PA1 ، HIGH)؛ lcd.setCursor (0،1)؛ lcd.print ("مداخلت")؛ } }
اس بٹن پر کام کرنا () ISR:
کی قدر کے مطابق LEDON متغیر، ایل ای ڈی پر اور بند کر دیتا ہے.
بٹن اسٹیٹ |
قیادت میں (قیمت) |
ایل ای ڈی (سرخ) |
LCD (16x2) |
دبے ہوئے |
جھوٹا |
بند |
- |
دباؤ |
سچ ہے |
آن |
'' انٹرپرٹ '' دکھاتا ہے |
اگر لیڈ اون کی قیمت غلط ہے تو پھر ایل ای ڈی بند ہی رہتا ہے اور اگر لیڈ اون کی قیمت درست ہے تو ایل ای ڈی آن ہو جاتا ہے اور ایل سی ڈی ڈسپلے اس پر 'مداخلت' دکھاتا ہے۔
نوٹ: کبھی کبھی سوئچ ڈیبون اثر ہوسکتا ہے اور جب پش بٹن دبایا جاتا ہے تو اس میں متعدد ٹرگر شمار ہوسکتے ہیں ، اس کی وجہ یہ ہے کہ پش بٹن سوئچ کرنے کی میکانکی وجہ کی وجہ سے وولٹیج میں کئی اسپائکس ہیں۔ اسے RC فلٹر متعارف کروا کر کم کیا جاسکتا ہے۔
STM32F103C8 میں مداخلتوں کا مکمل کام ذیل ویڈیو میں دکھایا گیا ہے ۔