- ایمبیڈڈ الیکٹرانکس میں ٹائمر کیا ہے؟
- اردوینو ٹائمر رجسٹر
- اردوینو ٹائمر مداخلت کرتا ہے
- ضروری اجزاء
- سرکٹ ڈایاگرام
- پروگرامنگ اردوینو یو این او ٹائمر
آرڈینو ڈویلپمنٹ پلیٹ فارم اصل میں 2005 میں آرٹ ڈیزائن منصوبوں کے لئے استعمال میں آسان پروگرام لائق ڈیوائس کے طور پر تیار کیا گیا تھا۔ اس کا ارادہ غیر انجینئرز کو بغیر پروگرامنگ کے زیادہ معلومات کے بنیادی الیکٹرانکس اور مائکروقابو کنٹرولرز کے ساتھ کام کرنے میں مدد کرنا تھا۔ لیکن پھر ، اس کی فطرت کو آسانی سے استعمال کرنے کی وجہ سے اسے جلد ہی دنیا بھر میں الیکٹرانکس کے آغاز کنندہ اور شوق پرستوں نے ڈھال لیا تھا اور آج یہ پروٹو ٹائپ ڈویلپمنٹ اور پی او سی ترقیات کے لئے بھی ترجیح دی جاتی ہے۔
اگرچہ یہ اردوینو کے ساتھ شروع کرنا ٹھیک ہے ، لیکن یہ ضروری ہے کہ آہستہ آہستہ بنیادی مائکروکنٹرولروں جیسے اے وی آر ، اے آر ایم ، پی آئی سی ، ایس ٹی ایم وغیرہ میں جانا پڑے اور ان کی آبائی ایپلی کیشنز کو استعمال کرکے اسے پروگرام کریں۔ اس کی وجہ یہ ہے کہ ایردوینو پروگرامنگ زبان کو سمجھنا بہت آسان ہے کیونکہ زیادہ تر کام پہلے سے تعمیر شدہ افعال جیسے ڈیجیٹل رائٹ () ، اینالاگ رائٹ () ، تاخیر () وغیرہ کے ذریعہ کیا جاتا ہے جبکہ کم سطح کی مشین زبان ان کے پیچھے پوشیدہ ہے۔ ارڈینو پروگرام دوسرے ایمبیڈڈ سی کوڈنگ کے مترادف نہیں ہیں جہاں ہم رجسٹر بٹس سے نمٹتے ہیں اور اپنے پروگرام کی منطق کی بنیاد پر ان کو اونچائ یا کم بنا دیتے ہیں۔
آرڈینو ٹائمرز بغیر کسی تاخیر کے:
لہذا ، یہ سمجھنے کے لئے کہ پہلے سے تعمیر شدہ افعال کے اندر کیا ہو رہا ہے ہمیں ان شرائط کے پیچھے کھودنے کی ضرورت ہے۔ مثال کے طور پر جب تاخیر () فنکشن استعمال کیا جاتا ہے تو یہ اصل میں ATmega مائکروقابو کنٹرولر کے ٹائمر اور کاؤنٹر رجسٹر بٹس کا تعین کرتا ہے ۔
اس ارڈینو ٹائمر ٹیوٹوریل میں ہم اس تاخیر () فنکشن کے استعمال سے بچنے جا رہے ہیں اور اس کے بجائے خود رجسٹروں سے ہی نمٹیں۔ اچھی بات یہ ہے کہ آپ اسی اردوینو IDE کو اس کے ل use استعمال کرسکتے ہیں۔ ہم اپنے ٹائمر رجسٹر بٹس کو طے کریں گے اور جب بھی رکاوٹ ہوتا ہے تو ایل ای ڈی کو تبدیل کرنے کے لئے ٹائمر اوور فلو مداخلت کا استعمال کریں گے ۔ ٹائمر بٹ کی پری لوڈر ویلیو کو پش بٹن کا استعمال کرتے ہوئے ایڈجسٹ کیا جاسکتا ہے جس میں اس وقوع کو کنٹرول کیا جاسکتا ہے جس میں رکاوٹ ہوتی ہے۔
ایمبیڈڈ الیکٹرانکس میں ٹائمر کیا ہے؟
ٹائمر ایک طرح کی رکاوٹ ہے۔ یہ ایک عام گھڑی کی طرح ہے جو واقعہ کے وقفہ کی پیمائش کرسکتی ہے۔ ہر مائکروکانٹرولر کے پاس ایک گھڑی (آسکیلیٹر) ہوتی ہے ، اردوینو اونو میں کہیں کہ یہ 16 میگاہرٹز ہے۔ یہ رفتار کے لئے ذمہ دار ہے. گھڑی کی فریکوئنسی جتنی زیادہ ہوگی اس کی رفتار تیز ہوگی۔ ایک ٹائمر کاؤنٹر استعمال کرتا ہے جو گھڑی کی فریکوئنسی پر منحصر ہوتا ہے۔ ارڈینو اونو میں ، ایک ہی گنتی میں 1/16000000 سیکنڈ یا 62 نانو سیکنڈ لگتے ہیں۔ مطلب آرڈینو ہر 62 نینو سیکنڈ میں ایک انسٹرکشن سے دوسری انسٹرکشن میں منتقل ہوتا ہے۔
اردوینو یو این او میں ٹائمر:
اردوینو یو این او میں تین ٹائمر مختلف کاموں کے لئے استعمال ہوتے ہیں۔
ٹائمر 0:
یہ 8 بٹ ٹائمر ہے اور ٹائمر فنکشن میں استعمال ہوتا ہے جیسے تاخیر () ، ملیس ()۔
ٹائمر 1:
یہ ایک 16 بٹ ٹائمر ہے اور اسے سرو لائبریری میں استعمال کیا جاتا ہے۔
ٹائمر 2:
یہ ایک 8 بٹ ٹائمر ہے اور یہ ٹون () فنکشن میں استعمال ہوتا ہے۔
اردوینو ٹائمر رجسٹر
ٹائمر کی تشکیل کو تبدیل کرنے کے لئے ، ٹائمر کے اندراجات استعمال کیے جاتے ہیں۔
1. ٹائمر / کاؤنٹر کنٹرول رجسٹر (TCCRnA / B):
اس رجسٹر میں ٹائمر کے اہم کنٹرول بٹس ہوتے ہیں اور ٹائمر کے پریسکلرز کو کنٹرول کرتے تھے۔ یہ WGM بٹس کا استعمال کرتے ہوئے ٹائمر کے موڈ کو بھی کنٹرول کرنے کی اجازت دیتا ہے۔
فریم کی شکل:
ٹی سی سی آر 1 اے | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
COM1A1 | COM1A0 | COM1B1 | COM1B0 | COM1C1 | COM1C0 | WGM11 | ڈبلیو جی 10 |
ٹی سی سی آر 1 بی | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
آئی سی این سی 1 | آئی سی ای ایس 1 | - | ڈبلیو جی ایم 13 | ڈبلیو جی ایم 12 | CS12 | CS11 | CS10 |
پریسیکلر:
TCCR1B میں CS12 ، CS11 ، CS10 بٹس نسخہ کی قدر طے کرتے ہیں۔ ٹائمر کی گھڑی کی رفتار سیٹ اپ کرنے کے لئے ایک پریسکلر استعمال ہوتا ہے۔ ارڈینو اونو کے 1 ، 8 ، 64 ، 256 ، 1024 کے پریسکلرز ہیں۔
CS12 | CS11 | CS10 | استعمال کریں |
0 | 0 | 0 | کوئی گھڑی ٹائمر بند نہیں ہے |
0 | 0 | 1 | سی ایل سی کے i / o / 1 کوئی پریسیلنگ نہیں ہے |
0 | 1 | 0 | سی ایل کے آئی / او / 8 (پریسکلر سے) |
0 | 1 | 1 | CLK i / o / 64 (پریسکیلر سے) |
1 | 0 | 0 | سی ایل کے آئی / او / 256 (پریسکلر سے) |
1 | 0 | 1 | سی ایل کے آئی / او / 1024 (پریسکلر سے) |
1 | 1 | 0 | T1 پن پر گھڑی کا بیرونی سورس۔ گرتے ہوئے کنارے پر گھڑی |
1 | 1 | 1 | T1 پن پر بیرونی گھڑی کا ماخذ۔ بڑھتی ہوئی کنارے پر گھڑی. |
2. ٹائمر / کاؤنٹر رجسٹر (TCNTn)
یہ رجسٹر کاؤنٹر ویلیو کو کنٹرول کرنے اور پری لوڈر ویلیو سیٹ کرنے کے لئے استعمال ہوتا ہے۔
دوسرے میں مطلوبہ وقت کیلئے پری لوڈر ویلیو کا فارمولا:
TCNTn = 65535 - (سیکنڈ / پریسکلر قیمت میں 16x10 10 x ٹائم)
2 سیکنڈ کے وقت کے لئے ٹائمر 1 کے لئے پری لوڈر ویلیو کا حساب لگانا
TCNT1 = 65535 - (16x10 10 x2 / 1024) = 34285
اردوینو ٹائمر مداخلت کرتا ہے
ہم نے پہلے آرڈینوو انٹرپٹس کے بارے میں سیکھا تھا اور دیکھا ہے کہ ٹائمر مداخلتیں سافٹ ویئر کی طرح ہوتی ہیں۔ ارڈینو میں مختلف ٹائمر مداخلتیں ہیں جن کی وضاحت ذیل میں کی گئی ہے۔ٹائمر اوور فلو رکاوٹ:
جب بھی ٹائمر اپنی زیادہ سے زیادہ قیمت تک پہنچتا ہے مثال کے طور پر کہیں (16 بٹ -65535) ٹائمر اوور فلو مداخلت ہوتی ہے۔ لہذا ، جب ٹائمر اوور فلو مداخلت بٹ ٹائم رکاوٹ ماسک رجسٹر TIMSKx میں موجود TOIEx میں ٹائمر اوور فلو مداخلت بٹ کو فعال کیا جاتا ہے تو ، ایک ISR انٹراپٹ سروس روٹین کہا جاتا ہے۔
آئی ایس آر کی شکل:
ISR (TIMERx_OVF_vect) { }
آؤٹ پٹ کا موازنہ رجسٹر (OCRnA / B):
یہاں جب آؤٹ پٹ موازنہ میچ میں مداخلت ہوتی ہے تو پھر رکاوٹ خدمت ISR (TIMERx_COMPy_vect) کو طلب کیا جاتا ہے اور TIFRx رجسٹر میں OCFxy پرچم بٹ بھی ترتیب دیا جائے گا۔ یہ آئی ایس آر TIMSKx رجسٹر میں موجود OCIExy میں قابل بٹ کو ترتیب دے کر فعال کیا گیا ہے۔ جہاں TIMSKx ٹائمر مداخلت ماسک رجسٹر ہے۔
ٹائمر ان پٹ کیپچر:
اگلا جب ٹائمر ان پٹ کیپچر رکاوٹ ہوتا ہے تو پھر رکاوٹ خدمت ISR (TIMERx_CAPT_vect) کو طلب کیا جاتا ہے اور آئی سی ایف ایکس پرچم سا بھی TIFRx (ٹائمر انٹراپٹ فلیگ رجسٹر) میں سیٹ کیا جائے گا۔ یہ ISR TIMSKx رجسٹر میں موجود ICIEx میں قابل بٹ ترتیب دے کر قابل عمل ہے۔
ضروری اجزاء
- اردوینو یو این او
- پش بٹن (2)
- ایل ای ڈی (کوئی رنگین)
- 10 ک مزاحم (2) ، 2.2 ک (1)
- 16x2 LCD ڈسپلے
سرکٹ ڈایاگرام
ارڈینوو یو این او اور 16x2 LCD ڈسپلے کے مابین سرکٹ رابطے:
16x2 LCD |
اردوینو یو این او |
وی ایس ایس |
GND |
وی ڈی ڈی |
+ 5 وی |
V0 |
LCD کے برعکس کنٹرول کے لئے پوٹینومیٹر سینٹر پن کرنا |
RS |
8 |
آر ڈبلیو |
GND |
ای |
9 |
ڈی 4 |
10 |
ڈی 5 |
11 |
ڈی 6 |
12 |
ڈی 7 |
13 |
A |
+ 5 وی |
K |
GND |
10K کے پل ڈاون ریزسٹرس والے دو پش بٹن آرڈینوو پنوں 2 اور 4 کے ساتھ جڑے ہوئے ہیں اور ایک ایل ای ڈی 2.2K ریزسٹر کے ذریعہ اردوینو کے پن 7 سے منسلک ہے۔
سیٹ اپ نیچے کی طرح نظر آئے گا۔
پروگرامنگ اردوینو یو این او ٹائمر
اس ٹیوٹوریل میں ہم ٹائمر اوورفلو انٹروپٹ کا استعمال کریں گے اور پش بٹن کا استعمال کرتے ہوئے پری لوڈر ویلیو (TCNT1) کو ایڈجسٹ کرتے ہوئے کچھ مدت کے لئے ایل ای ڈی آن اور آف ٹمٹمانے کے لئے استعمال کریں گے۔ ارڈینو ٹائمر کے لئے مکمل کوڈ آخر میں دیا گیا ہے۔ ہم یہاں لائن کے ذریعہ کوڈ لائن کی وضاحت کررہے ہیں۔
چونکہ پری لوڈر ویلیو کو ظاہر کرنے کے لئے پروجیکٹ میں 16x2 LCD استعمال کیا جاتا ہے ، لہذا مائع کرسٹل لائبریری استعمال کی جاتی ہے۔
# شامل کریں
ایل ای ڈی انوڈ پن جو اردوینو پن 7 سے منسلک ہوتا ہے اس کی وضاحت لیڈپین سے ہوتی ہے ۔
# ڈیفائن لیڈپین 7
اس کے بعد مائع کرسٹل کلاس تک رسائی کے ل the LCD پن (RS، E، D4، D5، D6، D7) کے ساتھ اعلان کیا جاتا ہے جو ارڈینو یو این او کے ساتھ جڑے ہوئے ہیں۔
لیکویڈ کرسٹل ایل سی ڈی (8،9،10،11،12،13)؛
اس کے بعد 4 سیکنڈ کے لئے 3035 پریلوڈر ویلیو سیٹ کریں۔ پری لوڈر ویلیو کا حساب لگانے کے لئے اوپر والا فارمولا چیک کریں۔
فلوٹ ویلیو = 3035؛
اگلے باطل سیٹ اپ ()، پہلی 16x2 موڈ میں LCD مقرر اور چند سیکنڈ کے لئے ایک خوش آئند پیغام ظاہر.
lcd.begin (16،2)؛ lcd.setCursor (0،0)؛ lcd.print ("آرڈینو ٹائمرز")؛ تاخیر (2000)؛ lcd.clear ()؛
اگلا ایل ای ڈی پن کو آؤٹ پٹ پن کے طور پر سیٹ کریں اور پش بٹن ان پٹ پن کے بطور سیٹ ہوں
پن موڈ (لیڈ پن ، آؤٹ پٹ)؛ پن موڈ (2 ، انپٹ)؛ پن موڈ (4 ، انپٹ)؛
اگلا تمام رکاوٹوں کو غیر فعال کریں:
noInterrupts ()؛
اگلا ٹائمر 1 شروع کیا گیا ہے۔
TCCR1A = 0؛ TCCR1B = 0؛
پری لوڈر ٹائمر ویلیو سیٹ ہے (ابتدائی طور پر 3035)
TCNT1 = قدر؛
پھر پری سکیلر ویلیو 1024 TCCR1B رجسٹر میں سیٹ کی گئی ہے۔
TCCR1B - = (1 << CS10) - (1 << CS12)؛
ٹائمر اوور فلو مداخلت ٹائمر انٹراپٹ ماسک رجسٹر میں فعال ہے تاکہ ISR کو استعمال کیا جاسکے۔
TIMSK1 - = (1 << TOIE1)؛
آخر میں تمام رکاوٹیں قابل ہیں۔
رکاوٹیں ()؛
اب آئی ایس آر برائے ٹائمر اوور فلو مداخلت لکھیں جو ڈیجیٹل رائٹ کے استعمال سے ایل ای ڈی کو آن اور آف کرنے کا ذمہ دار ہے ۔ جب بھی ٹائمر اوور فلو مداخلت ہوتی ہے تو ریاست تبدیل ہوتی ہے۔
ISR (TIMER1_OVF_vect) { TCNT1 = قدر؛ ڈیجیٹل رائٹ (لیڈ پن ، ڈیجیٹل ریڈ (لیڈ پن) ^ 1)؛ }
میں باطل لوپ () preloader کے کی قدر incremented کیا یا دھکا بٹن آدانوں اور بھی قدر 16x2 LCD پر دکھایا جاتا ہے کا استعمال کرتے ہوئے کی طرف سے decremented رہا ہے.
اگر (ڈیجیٹل ریڈ (2) == ہائی) { ویلیو = ویلیو + 10؛ // Incement preload value } if ( digitalRead (4) == HIGH) { value = value-10؛ // تدریج preload کے قدر } lcd.setCursor (0،0)؛ lcd.print (value)؛ }
لہذا اس طرح ٹائمر کو ارڈینو پروگرام میں تاخیر پیدا کرنے کے لئے استعمال کیا جاسکتا ہے۔ نیچے دیئے گئے ویڈیو کو چیک کریں جہاں ہم پش بٹنوں کا استعمال کرکے پری لوڈر ویلیو میں اضافہ اور کمی کرکے تاخیر میں تبدیلی کا مظاہرہ کرتے ہیں۔