- تقاضے:
- یو آر ٹی مواصلات کے لئے پروگرامنگ پی آئی سی مائکرو قابو۔
- ہمارے پروگرام کی نقالی:
- ہارڈ ویئر سیٹ اپ اور آؤٹ پٹ کی جانچ۔
اس ٹیوٹوریل میں ہم PIC مائکروکینٹرلر کے ساتھ UART مواصلات کو فعال بنانا سیکھتے ہیں اور آپ کے کمپیوٹر میں اور اس سے ڈیٹا کی منتقلی کا طریقہ سیکھتے ہیں ۔ اب تک ، ہم نے اے ڈی سی ، ٹائمرز ، پی ڈبلیو ایم جیسے تمام بنیادی ماڈیولز کا احاطہ کیا ہے اور یہ بھی سیکھا ہے کہ ایل سی ڈی اور 7 سیگمنٹ ڈسپلے کو کس طرح انٹرفیس کرنا ہے۔ اب ، ہم اپنے خود کو مواصلت کے ایک نئے آلے سے آراستہ کریں گے جسے UART کہتے ہیں جو زیادہ تر مائکرو قابو پانے والے منصوبوں میں وسیع پیمانے پر استعمال ہوتا ہے۔ ایم پی ایل بی اور ایکس سی 8 کا استعمال کرتے ہوئے ہمارے مکمل پی آئی سی مائکروکنٹرولر سبق ملاحظہ کریں۔
یہاں ہم نے PIC16F877A MCU استعمال کیا ہے ، اس میں "ایڈریس ایبل یونیورسل سنکرونس ایسینکرونس رسیور اور ٹرانسمیٹر" نامی ایک ماڈیول ہے جس کو جلد ہی USART کے نام سے جانا جاتا ہے ۔ یو ایس آر ٹی ایک دو تار مواصلاتی نظام ہے جس میں اعداد و شمار بہتے ہوئے چلتے ہیں۔ یو ایس آر ٹی ایک مکمل ڈوپلیکس مواصلات بھی ہے ، اس کا مطلب ہے کہ آپ بیک وقت اعداد و شمار بھیج سکتے اور وصول کرسکتے ہیں جو پیری فیرل آلات ، جیسے سی آر ٹی ٹرمینلز اور پرسنل کمپیوٹرز کے ساتھ بات چیت کرنے کے لئے استعمال ہوسکتے ہیں۔
USART مندرجہ ذیل طریقوں میں ترتیب دیا جا سکتا ہے:
- غیر متزلزل (مکمل ڈوپلیکس)
- ہم وقت ساز - ماسٹر (آدھا ڈوپلیکس)
- ہم وقت ساز - غلام (آدھا ڈوپلیکس)
یہاں دو مختلف طریقوں بھی ہیں یعنی 8 بٹ اور 9 بٹ موڈ ، اس ٹیوٹوریل میں ہم یو ایسارٹ ماڈیول کو 8 بٹ مواصلاتی نظام کے ساتھ اسینکرونس موڈ میں کام کرنے کے لئے تشکیل دیں گے ، کیونکہ یہ مواصلات کی سب سے زیادہ استعمال شدہ قسم ہے۔ چونکہ یہ غیر متزلزل ہے اس لئے اعداد و شمار کے اشارے کے ساتھ گھڑی کے اشارے بھیجنے کی ضرورت نہیں ہے۔ UART (Tx) بھیجنے اور (Rx) ڈیٹا وصول کرنے کے لئے دو ڈیٹا لائنوں کا استعمال کرتا ہے۔ دونوں آلات کی زمین کو بھی عام کرنا چاہئے۔ اس طرح کی بات چیت ایک عام گھڑی کو شریک نہیں کرتی ہے لہذا اس نظام کے چلنے کے لئے ایک مشترکہ زمین بہت ضروری ہے۔
اس ٹیوٹوریل کے اختتام پر آپ اپنے کمپیوٹر اور اپنے PIC مائکروقابو کنٹرولر کے مابین ایک مواصلت (UART) قائم کرسکیں گے اور اپنے لیپ ٹاپ سے PIC بورڈ پر ایک ایل ای ڈی ٹوگل کریں گے۔ ایل ای ڈی کی حیثیت آپ کے لیپ ٹاپ پر پی آئی سی ایم سی یو سے بھیجی جائے گی۔ ہم کمپیوٹر میں ہائپر ٹرمینل کا استعمال کرتے ہوئے آؤٹ پٹ کی جانچ کریں گے۔ اس سبق کے آخر میں تفصیلی ویڈیو بھی دی گئی ہے۔
تقاضے:
ہارڈ ویئر:
- PIC16F877A پرفیکٹ بورڈ
- USB کنورٹر ماڈیول میں RS232
- کمپیوٹر
- PICkit 3 پروگرامر
سافٹ ویئر:
- ایم پی ایل ایکس
- ہائپر ٹرمینل
سیریل ڈیٹا کو کمپیوٹر پڑھنے کے قابل شکل میں تبدیل کرنے کے لئے ایک RS232 کو USB کنورٹر کی ضرورت ہے۔ اپنے ہی ماڈیول کو خریدنے کے بجائے اپنے سرکٹ کو ڈیزائن کرنے کے طریقے موجود ہیں لیکن وہ قابل اعتماد نہیں ہیں کیونکہ وہ شور شرابہ کا شکار ہیں۔ جس کا ہم استعمال کررہے ہیں وہ نیچے دکھایا گیا ہے
نوٹ: ہر RS232 پر USB کنورٹر کے ل2 ایک خصوصی ڈرائیور انسٹال ہونا ضروری ہے۔ آلہ میں پلگ ہوتے ہی ان میں سے بیشتر کو خود بخود انسٹال ہوجانا چاہئے۔ لیکن ، اگر یہ آرام نہیں کرتا !!! کمنٹ سیکشن کا استعمال کریں اور میں آپ کی مدد کروں گا۔
یو آر ٹی مواصلات کے لئے پروگرامنگ پی آئی سی مائکرو قابو۔
تمام ماڈیولز (اے ڈی سی ، ٹائمر ، پی ڈبلیو ایم) کی طرح ہمیں بھی اپنے PIC16F877A MCU کے یو ایس آر ٹی ماڈیول کو شروع کرنا چاہئے اور اسے UART 8 بٹ مواصلات کے موڈ میں کام کرنے کی ہدایت کرنی چاہئے ۔ آئیے کنفیگریشن بٹس کی وضاحت کریں اور یو آر ٹی کی شروعات تقریب سے شروع کریں۔
پی آئی سی مائکروکانٹرولر کے UART ماڈیول کا آغاز:
Tx اور Rx پنوں جسمانی طور پر پنوں RC6 اور RC7 پر موجود ہیں۔ ڈیٹا شیٹ کے مطابق آئیے TX کو آؤٹ پٹ اور RX کو ان پٹ کے بطور اعلان کریں ۔
// **** UART **** کے لئے I / O پنوں کا تعین کرنا // TRISC6 = 0؛ // TX پن آؤٹ پٹ TRISC7 = 1 کے بطور سیٹ؛ // RX پن ان پٹ کے بطور سیٹ // ________ I / O پنوں __________ //
اب بوڈ ریٹ مقرر کرنا ہے ۔ باؤڈ کی شرح وہ شرح ہے جس پر مواصلاتی چینل میں معلومات منتقل کی جاتی ہیں۔ یہ بہت ساری طے شدہ اقدار میں سے ایک ہوسکتی ہے ، لیکن اس پروگرام میں ہم اس کی سب سے زیادہ استعمال ہونے والی شرح شرح کے بعد سے 9600 استعمال کررہے ہیں۔
/ ** مطلوبہ بوڈ ریٹ کیلئے ایس پی بی آر رجسٹر شروع کریں اور تیز باؤڈریٹ کے لئے بی آر جی ایچ مقرر کریں ** / ایس پی بی آر جی = ((_ XTAL_FREQ / 16) / باب_ریٹ) - 1؛ بی آر جی ایچ = 1؛ // اعلی baud_rate کے لئے // _________ baud_rate ترتیب کا اختتام _________ //
باؤڈ ریٹ کی قیمت کو ایس پی بی آر رجسٹر کے ذریعہ طے کرنا ہے ، قیمت بیرونی کرسٹل تعدد کی قیمت پر منحصر ہے ، بوڈ کی شرح کا حساب کتاب کرنے کے فارمولے ذیل میں دکھائے گئے ہیں:
SPBRG = ((_XTAL_FREQ / 16) / Baud_rate) - 1؛
ہائی اسپیڈ بٹ ریٹ کو قابل بنانے کیلئے بٹ BRGH کو اونچا بنانا ہوگا۔ ڈیٹا شیٹ (صفحہ 13) کے مطابق اس کو قابل بنانا ہمیشہ فائدہ مند ہے ، کیوں کہ یہ مواصلات کے دوران غلطیوں کو ختم کرسکتا ہے۔
جیسا کہ پہلے کہا گیا ہے کہ ہم اسینکرونس وضع میں کام کریں گے ، لہذا سیریل پنوں کو چالو کرنے کے ل the تھوڑا سا SYNC کو صفر کردیا جائے اور تھوڑا سا SPEM اونچا بنایا جائے ۔
// **** غیر سنجیدہ سیریل پورٹ کو قابل بنائیں ******* // SYNC = 0؛ // ایسینکرونس اسپین = 1؛ // سیریل پورٹ پن کو قابل بنائیں // _____ غیر متوازی سیریل پورٹ فعال _______ //
اس ٹیوٹوریل میں ہم دونوں ایم سی یو اور کمپیوٹر کے مابین ڈیٹا بھیجتے اور وصول کرتے رہیں گے لہذا ہمیں دونوں کو TXEN اور CREN بٹس قابل بنانا ہوگا۔
// ** ٹرانسمیشن اور استقبال کی تیاری کرنے دیں ** // TXEN = 1؛ // قابل عمل ٹرانسمیشن CREN = 1؛ // استقبال کو قابل بنائیں // __ UART ماڈیول تیار اور ٹرانسمیشن اور استقبال کے لئے تیار __ //
بٹس TX9 اور RX9 بنایا جائے صفر ہے تو ہم 8 بٹ کے موڈ میں کام کرتا ہے. اگر اعلی وشوسنییتا قائم کرنے کی ضرورت ہے تو 9 بٹ موڈ منتخب کیا جاسکتا ہے۔
// ** 8 بٹ وضع منتخب کریں ** // TX9 = 0؛ // 8 بٹ استقبالیہ منتخب کیا RX9 = 0؛ // 8 بٹ ریسیپشن موڈ منتخب ہوا // __ 8 بٹ موڈ منتخب __ //
اس کے ساتھ ہم اپنا شروعاتی سیٹ اپ مکمل کرتے ہیں۔ اور آپریشن کے لئے تیار ہے۔
UART کا استعمال کرتے ہوئے ڈیٹا منتقل کرنا:
UART ماڈیول کے ذریعہ ڈیٹا منتقل کرنے کے لئے نیچے دیئے گئے فنکشن کا استعمال کیا جاسکتا ہے:
// ** یو آر ٹی ** کو تاریخ کا ایک بائٹ بھیجنے کا فنکشن * باطل UPointsend_char (چار بی ٹی) {جبکہ (! TXIF)؛ // TX بفر مفت TXREG = بی ٹی ہونے تک پروگرام کو تھمائیں۔ // موصولہ قیمت کے ساتھ ٹرانسمیٹر بفر لوڈ کریں} // _____________ فنکشن کا اختتام ________________ //
ایک بار ماڈیول شروع ہوجانے کے بعد جو بھی قیمت رجسٹر میں لائی جاتی ہے TXREG کو UART کے ذریعے منتقل کیا جائے گا ، لیکن ٹرانسمیشن اوورلپ ہوسکتی ہے۔ لہذا ہمیں ہمیشہ ٹرانسمیشن رکاوٹ پرچم TXIF کی جانچ کرنی چاہئے ۔ صرف اس صورت میں جب ہم تھوڑا سا کم ہوں تو ہم اگلے بٹ پر ٹرانسمیشن کے لئے آگے بڑھ سکتے ہیں ورنہ ہمیں اس پرچم کے کم ہونے کا انتظار کرنا چاہئے۔
تاہم ، مندرجہ بالا فنکشن کو صرف ایک بائٹ ڈیٹا بھیجنے کے لئے استعمال کیا جاسکتا ہے ، مکمل سٹرنگ بھیجنے کے لئے مندرجہ ذیل فنکشن کا استعمال کیا جانا چاہئے
// ** سٹرنگ کو بائٹ میں تبدیل کرنے کا فنکشن ** // باطل UPointsend_string (چار * st_pt) {جبکہ (* st_pt) // اگر چار UPointsend_char (* st_pt ++) ہے؛ // بائٹ ڈیٹا کی حیثیت سے اس پر عمل کریں} // ___________ فنکشن کا اختتام ______________ //
یہ فنکشن سمجھنے کے لئے تھوڑا مشکل ہوسکتا ہے کیونکہ اس میں پوائنٹرز موجود ہیں ، لیکن مجھ پر اعتماد کریں کہ پوائنٹر بہت اچھے ہیں اور وہ پروگرامنگ کو زیادہ آسان بناتے ہیں اور یہ اس کی ایک اچھی مثال ہے۔
جیسا کہ آپ دیکھ سکتے ہیں کہ ہم نے پھر UPointsend_char () کہا ہے لیکن اب جبکہ لوپ کے اندر۔ ہم نے تار کو انفرادی حرفوں میں تقسیم کردیا ہے ، ہر بار جب یہ فنکشن کہا جاتا ہے تو ، ایک چار TXREG کو بھیجا جائے گا اور یہ منتقل ہوجائے گا۔
UART کا استعمال کرتے ہوئے ڈیٹا وصول کرنا:
UART ماڈیول سے اعداد و شمار حاصل کرنے کے لئے درج ذیل فنکشن کا استعمال کیا جاسکتا ہے:
// ** یو آر ٹی ** سے چار بائینجٹ_چار () {اگر (OERR) // غلطی کی جانچ پڑتال کریں {CREN = 0؛ // اگر غلطی -> CREN = 1 کو ری سیٹ کریں؛ // اگر غلطی -> پھر سیٹ کریں} جبکہ (! RCIF)؛ // RX بفر مفت واپسی RCREG ہے جب تک پروگرام منعقد؛ // قیمت وصول کریں اور مرکزی تقریب پر بھیجیں} // _____________ فنکشن کا اختتام ________________ //
جب ڈیٹا UART ماڈیول کے ذریعہ موصول ہوتا ہے تو وہ اسے اٹھا کر RCREG رجسٹر میں محفوظ کرتا ہے۔ ہم آسانی سے کسی بھی متغیر کو ویلیو منتقل کرسکتے ہیں اور اسے استعمال کرسکتے ہیں۔ لیکن ہوسکتا ہے کہ اوورلیپ میں خامی ہو یا صارف مستقل ڈیٹا بھیج رہا ہو اور ہم نے انہیں ابھی تک متغیر میں منتقل نہیں کیا ہے۔
اس صورت میں پرچم بٹ وصول کریں RCIF بچانے کے لئے آتا ہے۔ جب بھی ڈیٹا موصول ہوتا ہے اور ابھی اس پر کارروائی نہیں ہوتی ہے تو یہ تھوڑا سا کم ہوجائے گا۔ لہذا ہم اس وقت میں اس پروگرام کو روکنے میں تاخیر پیدا کرتے وقت تک استعمال کرتے ہیں جب تک کہ ہم اس قدر سے نمٹنے نہ کریں۔
PIC مائکروکانٹرولر کے UART ماڈیول کا استعمال کرتے ہوئے ایل ای ڈی ٹوگلنگ:
اب آئیے پروگرام کے آخری حص ،ے پر آؤ ، باطل مین (باطل) فنکشن ، جہاں ہم PIC اور کمپیوٹر کے مابین UART مواصلات کا استعمال کرتے ہوئے کمپیوٹر کے ذریعے ایل ای ڈی ٹاگلنگ کریں گے ۔
جب ہم ایک کردار "1" (کمپیوٹر سے) بھیجتے ہیں تو ایل ای ڈی کو آن کر دیا جاتا ہے اور "RED LED -> ON" کا اسٹیٹس میسیج (PIC MCU سے) واپس کمپیوٹر پر بھیجا جائے گا۔
اسی طرح ہم "0" (کمپیوٹر سے) ایک کردار بھیجتے ہیں ، ایل ای ڈی کو بند کر دیا جائے گا اور "RED LED -> OFF" کا اسٹیٹس میسیج (PIC MCU سے) واپس کمپیوٹر پر بھیجا جائے گا۔
جبکہ (1) // لامحدود لوپ {get_value = UART_get_char ()؛ if (get_value == '1') // اگر صارف "1" s RB3 = 1 بھیجتا ہے؛ // ایل ای ڈی UPointsend_string کو چالو کریں ("RED LED -> آن")؛ // کمپیوٹر کو UPointsend_char (10) پر نوٹیفیکیشن بھیجیں؛ // ASCII ویلیو 10 کیریج ریٹرن (نئی لائن میں پرنٹ کرنے کے لئے) استعمال کی جاتی ہے} اگر (get_value == '0') // اگر صارف "0" {RB3 بھیجتا ہے = 0؛ // ایل ای ڈی UPointsend_string کو بند کریں ("سرخ -> آف")؛ // کمپیوٹر کو Uificationssend_char (10) پر نوٹیفیکیشن بھیجیں؛ // ASCII 10 10 کیریج ریٹرن (نئی لائن میں پرنٹ کرنے کے لئے) استعمال کیا جاتا ہے}}
ہمارے پروگرام کی نقالی:
ہمیشہ کی طرح آئیے ہم پروٹیوس کا استعمال کرتے ہوئے اپنے پروگرام کی تقلید کرتے ہیں اور معلوم کرتے ہیں کہ آیا یہ توقع کے مطابق کام کرتا ہے یا نہیں۔
مذکورہ بالا تصویر ایک مجازی ٹرمینل دکھاتی ہے جس میں وہ ایل ای ڈی کا خوش آمدید پیغام اور حیثیت دکھاتی ہے۔ ریڈ رنگین ایل ای ڈی کو پن RB3 سے منسلک کرنے کے لئے دیکھا جاسکتا ہے۔ نقلی کام کی تفصیلی کام ویڈیو کے آخر میں مل سکتی ہے ۔
ہارڈ ویئر سیٹ اپ اور آؤٹ پٹ کی جانچ۔
اس سرکٹ کا کنکشن واقعی آسان ہے ، ہم اپنا PIC Perf بورڈ استعمال کرتے ہیں اور صرف تین تاروں کو RS232 سے USB کنورٹر سے مربوط کرتے ہیں اور ماڈیول کو USB ڈیٹا کیبل کا استعمال کرتے ہوئے USB کمپیوٹر سے جڑتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے۔
آگے ہم ہائپر ٹرمینل ایپلی کیشن انسٹال کرتے ہیں (اسے یہاں سے ڈاؤن لوڈ کریں) اور اسے کھولیں۔ اس کو کچھ ایسا ہی دکھانا چاہئے
اب اپنے کمپیوٹر پر ڈیوائس منیجر کھولیں اور چیک کریں کہ آپ کا ماڈیول کس کوم پورٹ سے منسلک ہے ، میرا COM پورٹ 17 سے منسلک ہے جیسا کہ ذیل میں دکھایا گیا ہے۔
نوٹ: آپ کے ماڈیول کے لئے COM پورٹ کا نام آپ کے دکاندار کے مطابق بدل سکتا ہے ، یہ کوئی مسئلہ نہیں ہے۔
اب ہائپر ٹرمینل ایپلی کیشن پر واپس جائیں اور سیٹ اپ -> پورٹ کنفیگریشن پر جائیں یا Alt + C دبائیں ، مندرجہ ذیل پاپ اپ باکس حاصل کرنے کے لئے اور پاپ اپ ونڈو میں مطلوبہ پورٹ (میرے معاملے میں COM17) کو منتخب کریں اور رابطہ پر کلک کریں.
ایک بار جب کنکشن قائم ہوجائے تو اپنے PIC پرفیکٹ بورڈ کو آن کریں اور آپ کو نیچے کچھ ایسا ہی دیکھنا چاہئے
اپنے کرسر کو کمانڈ ونڈو میں رکھیں اور 1 داخل کریں اور پھر دبائیں۔ ایل ای ڈی کو آن کیا جائے گا اور حیثیت کو نیچے دکھائے جانے کے مطابق ظاہر کیا جائے گا۔
اسی طرح ، اپنے کرسر کو کمانڈ ونڈو میں رکھیں اور 0 داخل کریں پھر انٹر دبائیں۔ ایل ای ڈی بند کر دیا جائے گا اور حیثیت کو نیچے دکھائے جانے کے مطابق دکھایا جائے گا۔
ذیل میں مکمل کوڈ اور تفصیلی ویڈیو دیا گیا ہے ، جس میں دکھایا جائے گا کہ ایل ای ڈی "1" اور "0" کے حقیقی وقت میں کس طرح کا جواب دیتی ہے۔
یہ لوگ ہیں ، ہم نے اپنے کمپیوٹر کے ساتھ پی آئی سی یو آرٹ کو انٹرفیس کیا ہے اور ہائپر ٹرمینل کا استعمال کرتے ہوئے ایل ای ڈی کو ٹوگل کرنے کے لئے ڈیٹا منتقل کیا ہے ۔ امید ہے کہ آپ سمجھ گئے ہیں ، اگر نہیں تو ، اپنی سوال پوچھنے کے لئے تبصرے کے سیکشن کا استعمال کریں۔ ہمارے اگلے سبق میں ہم پھر سے یو آر ٹی کا استعمال کریں گے لیکن بلوٹوتھ ماڈیول کا استعمال کرکے اسے مزید دلچسپ بنائیں گے اور ڈیٹا کو ہوا سے نشر کریں گے۔
دو اے ٹی میگا 8 مائکروکونٹرولرز اور اے ٹی میگا 8 اور اردوینو اونو کے مابین UART مواصلات کے مابین UAR مواصلات کو بھی چیک کریں۔