- ہارڈ ویئر کے لئے تیار ہیں
- STM8S103F پر GPIO پن آؤٹ کو سمجھنا
- STM8S103F GPIO انتخاب کے لئے پن آؤٹ تفصیل اور اشارے
- ایس پی ایل کا استعمال کرتے ہوئے GPIO ان پٹ اور آؤٹ پٹ کے لئے پروگرامنگ STM8S
- پروگرام اپ لوڈ اور جانچ رہا ہے
مائکروکانٹرولرز کے ل an ، ایک ایل ای ڈی پلکنے والا پروگرام "ہیلو ورلڈ" پروگرام کے برابر ہے۔ ہمارے پچھلے سبق میں ، ہم نے سیکھا کہ کس طرح STM8S103F3 ڈویلپمنٹ بورڈ کے ساتھ شروعات کی جائے اور اپنے STM8S کنٹرولرز کو پروگرام کرنے کے لئے IDE اور مرتب کرنے کا طریقہ کیسے بنایا جائے۔ ہم نے یہ بھی سیکھا ہے کہ معیاری پردیی لائبریریوں کو کس طرح استعمال کیا جائے ، اور ہمارے مائیکروکنٹرولر میں کوڈ مرتب اور اپلوڈ کیسے کریں۔ تمام بنیادی باتوں کا احاطہ کرنے کے ساتھ ، اصل میں کوڈ لکھنا شروع کردیں۔ اس ٹیوٹوریل میں ، ہم STM8S کنٹرولرز پر عام GPIO افعال انجام دینے کا طریقہ سیکھیں گے۔ بورڈ کے پاس پورٹ بی کے پن 5 سے منسلک پہلے ہی ایک جہاز والا ایل ای ڈی موجود ہے ، ہم اس ایل ای ڈی کو پلکنے اور ایک بیرونی ایل ای ڈی شامل کرنے اور پش بٹن کے ذریعہ کنٹرول کرنے کا طریقہ سیکھیں گے۔ اگر آپ مکمل طور پر نئے ہیں تو ، آپ کو مزید آگے بڑھنے سے پہلے پچھلے سبق کو پڑھنے کی بہت سفارش کی جاتی ہے۔
ہارڈ ویئر کے لئے تیار ہیں
پروگرام میں ڈوبکی لگانے سے پہلے ، ہارڈویئر کنکشن تیار ہونے دیں۔ جیسا کہ ابتدائی طور پر ذکر کیا گیا ہے ، ہم یہاں دو ایل ای ڈی استعمال کریں گے ، ایک جہاز پر ایل ای ڈی ہے جو مسلسل پلک جھپکتی رہے گی اور دوسرا بیرونی ایل ای ڈی ہے جسے پش بٹن کے ذریعہ ٹوگل کیا جائے گا۔ یہ خیال ایک آسان سیٹ اپ میں تمام GPIO فعالیت کو سیکھنا ہے۔ آن بورڈ لیڈ پہلے ہی پی بی 5 (پی او آر ٹی بی کا پن 5) سے منسلک ہے ، لہذا میں نے ابھی PA3 سے ایل ای ڈی اور PA2 سے ایک پش بٹن جوڑا ہے ، جیسا کہ آپ نیچے دیئے گئے آریگرام میں دیکھ سکتے ہیں۔
لیکن ، ہمارے کنٹرول میں دستیاب تمام آؤٹ پٹ پنوں میں سے میں نے آؤٹ پٹ کے لئے PA3 اور ان پٹ کے لئے PA2 کیوں منتخب کیا؟ سوالات درست ہیں اور میں اس مضمون کے بعد اس کی وضاحت کروں گا۔ اس ٹیوٹوریل کے لئے میرا ہارڈویئر سیٹ اپ نیچے دکھایا گیا ہے۔ جیسا کہ آپ دیکھ سکتے ہیں ، میں نے اپنے ایس ٹی لنک پروگرامر کو پروگرامنگ پنوں سے بھی جوڑ دیا ہے جو نہ صرف ہمارے بورڈ کو پروگرام کرے گا بلکہ پاور سورس کے طور پر بھی کام کرے گا۔
STM8S103F پر GPIO پن آؤٹ کو سمجھنا
اب اس سوال پر واپس آرہے ہیں کہ ان پٹ کے لئے PA2 اور آؤٹ پٹ کیلئے PA3 کیوں؟ اس کو سمجھنے کے ل let's ، آئیے مائکروکینٹرلر کے پن آؤٹ پر گہری نظر ڈالیں جو نیچے دکھایا گیا ہے۔
پن آؤٹ آریگرام کے مطابق ، ہمارے اپنے مائکروکانٹرولر پر چار بندرگاہیں ہیں ، جن میں PAT A، B، C اور D بالترتیب PA، PB، PC اور PD کی طرف سے اشارہ کیا گیا ہے۔ ہر GPIO پن کو کچھ دوسری خاص فعالیت کے ساتھ کلب بھی کیا جاتا ہے۔ مثال کے طور پر ، PB5 (پورٹ B کا پن 5) نہ صرف GPIO پن کے طور پر بلکہ I2C مواصلت کے لئے ایس ڈی اے پن کے طور پر اور ٹائمر 1 آؤٹ پٹ پن کے طور پر بھی کام کرسکتا ہے۔ لہذا ، اگر ہم اس پن کو عام جی پی آئی او مقاصد جیسے ایل ای ڈی سے منسلک کرنے کے لئے استعمال کرتے ہیں ، تو ہم بیک وقت I2C اور LED کا استعمال نہیں کرسکیں گے۔ افسوس کی بات ہے کہ ، بورڈ میں ایل ای ڈی اس پن سے منسلک ہے ، لہذا ہمارے یہاں زیادہ سے زیادہ انتخاب نہیں ہے ، اور اس پروگرام میں ، ہم I2C استعمال نہیں کریں گے ، لہذا یہ زیادہ مسئلہ نہیں ہے۔
STM8S103F GPIO انتخاب کے لئے پن آؤٹ تفصیل اور اشارے
صحیح معنوں میں ، PA1 کو ایک ان پٹ پن استعمال کرنے سے تکلیف نہیں ہوگی اور یہ صرف پن کام کرے گا۔ لیکن میں نے جان بوجھ کر آپ کو ایسا موقع فراہم کیا کہ آپ کو کچھ عام ٹریپز دکھائیں جو آپ کسی نئے مائکروکنٹرولر پر GPIO پنوں کا انتخاب کرتے وقت پھنس سکتے ہو۔ پھنسنے سے بچنے کے لئے سب سے بہتر یہ ہے کہ STM8S103F3P6 ڈیٹا شیٹ میں فراہم کردہ پن کی تفصیلات اور پن کی تفصیل پڑھیں۔ ڈیٹاشیٹ میں مذکور STM8S103F3P6 مائکروکونٹرولر پن کی تفصیلات کے لئے تصاویر کے نیچے دکھایا گیا ہے۔
ہمارے مائکروکنٹرولر پر موجود ان پٹ یا تو تیرتے یا کمزور پل اپ ہوسکتے ہیں اور آؤٹ پٹ پن یا تو اوپن ڈرین یا پش پل ہوسکتے ہیں۔ اوپن ڈرین اور پش پل پل آؤٹ پٹ پن کے مابین فرق پہلے ہی زیر بحث ہے ، لہذا ہم اس کی تفصیلات حاصل نہیں کریں گے۔ اسے آسان الفاظ میں بتانے کے لئے ، اوپن ڈرین آؤٹ پٹ آؤٹ پٹ کو صرف اتنا ہی کم بنا سکتا ہے جتنا زیادہ نہیں ، جبکہ پش پل پٹ آؤٹ پٹ آؤٹ پٹ کو اعلی اور اعلی بھی بنا سکتا ہے۔
مذکورہ ٹیبل کے علاوہ ، آپ یہ بھی دیکھ سکتے ہیں کہ آؤٹ پٹ پن یا تو فاسٹ آؤٹ پٹ (10 میگاہرٹز) یا سلو آؤٹ پٹ (2 میگاہرٹز) ہوسکتا ہے۔ اس سے GPIO اسپیڈ کا تعین ہوتا ہے ، اگر آپ اپنے GPIO پنوں کو تیز اور کم کے درمیان سوئچ کرنا چاہتے ہیں تو ہم فاسٹ آؤٹ پٹ کا انتخاب کرسکتے ہیں۔
مندرجہ بالا شبیہہ میں بیان کردہ جیسا کہ ہمارے کنٹرولر پر کچھ GPIO پن ٹرو اوپن ڈرین (T) اور ہائی سنک کرنٹ (HS) کی حمایت کرتے ہیں ۔ اوپن ڈرین اور ٹر اوپن ڈرین کے مابین کافی فرق یہ ہے کہ اوپن ڈرین سے منسلک آؤٹ پٹ کو مائکروکونٹرولر (وی ڈی ڈی) کے آپریٹنگ وولٹیج سے زیادہ زیادہ نہیں کھینچ سکتا جب کہ حقیقی اوپن ڈرین آؤٹ پٹ کو وی ڈی ڈی سے زیادہ کھینچا جاسکتا ہے۔ اعلی سنک کی اہلیت والی پنوں کا مطلب یہ ہے کہ یہ زیادہ موجودہ ڈوب سکتا ہے۔ کسی بھی GPIO HS پن کا ماخذ اور سنک کرینٹ 20mA ہے ، جبکہ پاور لائن 100 ایم اے تک استعمال کر سکتی ہے۔
مذکورہ شبیہہ پر گہری نگاہ ڈالنے پر ، آپ دیکھیں گے کہ تقریبا all تمام جی پی آئی او پنوں ہائی سنک کرنٹ (HS) قسم ہیں سوائے PB4 اور PB5 کے جو ٹرین اوپن ڈرین ٹائپ (T) ہیں۔ اس کا مطلب یہ ہے کہ ان پنوں کو اونچا نہیں بنایا جاسکتا ، وہ پن اونچی ہونے پر بھی 3.3V فراہم نہیں کرسکیں گے۔ یہی وجہ ہے کہ جہاز پر چلنے والا جہاز 3.3V سے منسلک ہوتا ہے اور اسے GPIO پن سے براہ راست طاقت دینے کے بجائے PB5 کے ذریعے گراؤنڈ کیا جاتا ہے۔
تفصیلی پن کی تفصیل کے لئے ڈیٹاشیٹ پر صفحہ 28 دیکھیں۔ جیسا کہ مذکورہ تصویر میں بتایا گیا ہے ، PA1 خود بخود ایک کمزور پل اپ کے طور پر تشکیل شدہ ہے اور اسے آؤٹ پٹ پن کے طور پر استعمال کرنے کی سفارش نہیں کی جاتی ہے۔ بہرحال اس کو ایک ان پٹ بٹن کے ساتھ ساتھ پش بٹن کے ساتھ بھی استعمال کیا جاسکتا ہے ، لیکن میں نے پروگرام سے پل اپ کو فعال کرنے کی کوشش کرنے کے لئے PA2 کو استعمال کرنے کا فیصلہ کیا ہے۔ یہ صرف کچھ بنیادی چیزیں ہیں جو مفید ثابت ہوں گی جب ہم بہت زیادہ پیچیدہ پروگرام لکھتے ہیں۔ ابھی کے لئے ، یہ ٹھیک ہے اگر بہت ساری چیزیں آپ کے سر سے دور ہوجاتی ہیں ، تو ہم دوسرے سبق میں اس کی مدد کریں گے۔
ایس پی ایل کا استعمال کرتے ہوئے GPIO ان پٹ اور آؤٹ پٹ کے لئے پروگرامنگ STM8S
ایک ورک اسپیس اور نیا پروجیکٹ بنائیں جیسا کہ ہم نے اپنے پہلے ٹیوٹوریل میں گفتگو کیا۔ آپ یا تو تمام ہیڈر اور سورس فائلوں کو شامل کرسکتے ہیں یا صرف gpio ، تشکیل ، اور stm8s فائلیں شامل کرسکتے ہیں۔ مین سی ۔ک فائل کو کھولیں اور اپنا پروگرام لکھنا شروع کریں۔
اس بات کو یقینی بنائیں کہ آپ نے مندرجہ بالا تصویر میں دکھائے جانے والے ہیڈر فائلوں کو شامل کیا ہے۔ مین کوڈ فائل کو کھولیں اور کوڈ شروع کریں۔ مکمل مین کوڈ کوڈ اس صفحے کے نیچے پایا جاسکتا ہے اور آپ وہاں سے پروجیکٹ فائل بھی ڈاؤن لوڈ کرسکیں گے۔ کوڈ کی وضاحت حسب ذیل ہے ، اگر آپ کوڈنگ والے حصے کے بارے میں الجھن میں ہیں تو آپ ایس پی ایل صارف دستی یا اس صفحے کے نیچے منسلک ویڈیو کا حوالہ بھی دے سکتے ہیں۔
مطلوبہ پورٹ کو ڈی اسٹارٹ کرنا
ہم اپنے پروگرام کا آغاز درکار بندرگاہوں کو ڈی انیشلائزیشن کے ذریعے کرتے ہیں۔ جیسا کہ ہم نے پہلے تبادلہ خیال کیا ہے ، ہر جی پی آئی او پن میں اس سے وابستہ دوسرے بہت سے افعال ہوں گے جو صرف ایک عام ان پٹ اور آؤٹ پٹ کی طرح کام کرنے کے علاوہ ہیں۔ اگر یہ پن پہلے کسی اور ایپلیکیشنز کے ل used استعمال ہوچکے ہیں ، تو ہم ان کو استعمال کرنے سے پہلے اسے ڈی انوائسلائزڈ کریں۔ یہ لازمی نہیں ہے ، تاہم ، یہ ایک عمدہ عمل ہے۔ مندرجہ ذیل دو لائنوں کا استعمال پورٹ اے اور پورٹ بی کو ڈی انیلایز کرنے کے لئے استعمال کیا جاتا ہے۔ صرف نحو کا استعمال GPIO_DeInit (GPIOx) استعمال کریں۔ اور ایکس کی جگہ پر بندرگاہ کا نام ذکر کریں۔
GPIO_DeInit (GPIOA)؛ // GPIO_DeInit (GPIOB) کے لئے پورٹ اے تیار کریں؛ // پورٹ بی کو کام کرنے کے ل prepare تیار کریں
ان پٹ اور آؤٹ پٹ GPIO اعلامیہ
اگلا ، ہمیں یہ اعلان کرنا ہے کہ کون سی پن ان پٹ کے طور پر استعمال ہوگی اور کونسی آؤٹ پٹ۔ ہمارے معاملے میں ، پن PA2 ان پٹ کے بطور استعمال ہوگا ، ہم اس پن کو اندرونی پل اپ کے ساتھ بھی اعلان کریں گے تاکہ ہمیں بیرونی طور پر استعمال نہ کرنا پڑے۔ نحو ہے GPIO_Init (GPIOx، GPIO_PIN_y، GPIO_PIN_MODE_z)؛ . جہاں ایکس پورٹ کا نام ہے ، y پن کا نمبر ہے ، اور z GPIO پن وضع ہے۔
// PA2 کا اعلان ان پٹ کے طور پر کریں GPIO_Init (GPIOA، GPIO_PIN_2، GPIO_MODE_IN_PU_IT)؛
اگلا ، ہمیں پنوں PA3 اور PB5 کو آؤٹ پٹ قرار دینا ہے۔ ایک بار پھر بہت ساری قسم کے آؤٹ پٹ ڈیکلریشن ممکن ہے لیکن ہم "GPIO_MODE_OUT_PP_LOW_SLOW" استعمال کریں گے جس کا مطلب ہے کہ ہم اسے سست رفتار کے ساتھ پش-پل ٹائپ کا آؤٹ پٹ پن قرار دیں گے۔ اور بطور ڈیفالٹ ، قیمت کم ہوگی۔ نحو ایک ہی ہوگا۔
GPIO_Init (GPIOA، GPIO_PIN_3، GPIO_MODE_OUT_PP_LOW_SLOW)؛ // PB5 اعلان کریں بطور پُش پل آؤٹ پٹ GP GPOO_nit (GPIOB، GPIO_PIN_5، GPIO_MODE_OUT_PP_LOW_SLOW)؛
ایس پی ایل صارف دستی سے نیچے دیئے گئے اسنیپ شاٹ میں تمام ممکنہ جی پی آئی او طریقوں (زیڈ) کا ذکر ہے۔
لامپ جبکہ لوپ
پن کے اعلامیے کے بعد ، ہمیں ایک لامحدود لوپ بنانے کی ضرورت ہے جس میں ہم ایل ای ڈی کو ہمیشہ کے لئے پلکتے رہیں گے اور ایل ای ڈی کو تبدیل کرنے کے لئے پش بٹن کی حیثیت کی نگرانی کریں گے۔ لامحدود لوپ یا تو تھوڑی دیر (1) یا پھر (؛؛) کے ساتھ تشکیل دے سکتا ہے ۔ یہاں میں نے استعمال کیا ہے جبکہ (1)
جبکہ (1) {
ان پٹ پن کی حیثیت کی جانچ ہو رہی ہے
ہمیں ان پٹ پن کی حالت کو جانچنا ہے ، اس کے لئے ترکیب جو GPIO_ReadInputPin (GPIOx، GPIO_PIN_y) ہے؛ جہاں ایکس پورٹ کا نام ہے اور y پن نمبر ہے۔ اگر پن زیادہ ہے تو ہمیں '1' ملے گا اور اگر پن کم ہے تو ہمیں '0' ملے گا۔ ہم چیک کرتے ہیں کہ پن زیادہ ہے یا کم۔
اگر (GPIO_ReadInputPin (GPIOA، GPIO_PIN_2)) // اگر بٹن دبائیں
GPIO پن اونچا یا کم بنانا
کسی GPIO پن کو اعلی یا کم بنانے کے ل we ، ہم GPIO_WriteHigh (GPIOx ، GPIO_PIN_y) استعمال کرسکتے ہیں ۔ اور GPIO_WriteLow (GPIOx، GPIO_PIN_y)؛ بالترتیب یہاں ہم نے بٹن دبایا ہوا ہے اور اگر بٹن دب نہیں ہے تو آن کرنے کے لئے ایل ای ڈی بنایا ہے۔
اگر (GPIO_ReadInputPin (GPIOA، GPIO_PIN_2)) // اگر بٹن دبائے GPIO_WriteLow (GPIOA، GPIO_PIN_3)؛ // GPIO_WriteHigh (GPIOA، GPIO_PIN_3) پر ایل ای ڈی؛ // ایل ای ڈی بند
GPIO پن ٹوگل کرنا
GPIO پن کو ٹوگل کرنے کے ل we ، ہمارے پاس GPIO_WriteRevers (GPIOx ، GPIO_PIN_y) ہے؛ اس فنکشن کو کال کرنے سے آؤٹ پٹ پن کی حالت بدل جائے گی۔ اگر پن زیادہ ہے تو ، اسے کم میں تبدیل کیا جائے گا ، اور اگر یہ کم ہے تو ، اسے اعلی میں تبدیل کردیا جائے گا۔ ہم اس فنکشن کا استعمال پی بی 5 پر جہاز کے ایل ای ڈی کو جھپکنے کے لئے کر رہے ہیں۔
GPIO_WriteReverse (GPIOB، GPIO_PIN_5)؛
تاخیر کا کام
اردوینو کے برعکس ، کائناتی مرتب میں پہلے سے طے شدہ تاخیر کا فنکشن نہیں ہوتا ہے۔ لہذا ہمیں خود ہی ایک بنانا ہے۔ میری تاخیر کا فنکشن نیچے دیا گیا ہے۔ تاخیر کی قیمت متغیر ایم ایس میں موصول ہوگی اور ہم لوپ کے انعقاد یا پروگرام پر عمل درآمد کے ل. دو کا استعمال کریں گے۔ جیسے _asm ("نہیں") ایک اسمبلی ہدایت ہے جو کام نہیں کرتی ہے۔ اس کا مطلب یہ ہے کہ کنٹرولر بغیر کسی کام کیے ، لوپ میں لوپنگ کرے گا ، اس طرح تاخیر پیدا کرے گا۔
باطل تاخیر (int MS) // Function Definition {int i = 0؛ انٹ j = 0؛ (i = 0؛ i <= MS؛ i ++) {for (j = 0؛ j <120؛ j ++) // Nop = Fosc / 4 _asm ("نہیں")؛ // کوئی کاروائی انجام دیں // اسمبلی کوڈ}}
پروگرام اپ لوڈ اور جانچ رہا ہے
اب جب ہمارا پروگرام تیار ہے ، تو ہم اسے اپ لوڈ کرکے جانچ سکتے ہیں۔ ایک بار اپ لوڈ ہونے کے بعد ، میرا ہارڈویئر توقع کے مطابق کام کر رہا تھا۔ آن بورڈ ریڈ ایل ای ڈی ہر 500 ملی سیکنڈ کے لئے پلک جھپک رہی تھی اور بیرونی گرین ایل ای ڈی ہر بار جب میں نے سوئچ کو دبایا۔
ذیل میں منسلک ویڈیو میں مکمل کام کیا جاسکتا ہے۔ ایک بار جب آپ اس مقام پر پہنچ جائیں تو ، آپ مختلف پنوں سے سوئچ اور ایل ای ڈی کو مربوط کرنے کی کوشش کرسکتے ہیں اور تصور کو سمجھنے کے لئے کوڈ کو دوبارہ لکھ سکتے ہیں۔ آپ یہ چیک کرنے کے ل the تاخیر سے بھی کھیل سکتے ہیں کہ آیا آپ نے تصورات کو واضح طور پر سمجھا ہے یا نہیں۔
اگر آپ کے کوئی سوالات ہیں تو ، براہ کرم انہیں نیچے تبصرہ سیکشن میں چھوڑ دیں اور دیگر تکنیکی سوالات کے ل you ، آپ ہمارے فورمز استعمال کرسکتے ہیں۔ پیروی کرنے کے لئے شکریہ ، اگلے سبق میں ملیں گے