- உட்பொதிக்கப்பட்ட மின்னணுவியலில் TIMER என்றால் என்ன?
- Arduino டைமர் பதிவாளர்கள்
- Arduino டைமர் குறுக்கிடுகிறது
- கூறுகள் தேவை
- சுற்று வரைபடம்
- புரோகிராமிங் Arduino UNO டைமர்கள்
ஆர்டுயினோ டெவலப்மென்ட் பிளாட்ஃபார்ம் முதலில் கலை வடிவமைப்பு திட்டங்களுக்கான சுலபமாக பயன்படுத்தக்கூடிய நிரல் சாதனமாக 2005 இல் உருவாக்கப்பட்டது. அதன் நோக்கம் பொறியியலாளர்கள் அல்லாதவர்களுக்கு அடிப்படை நிரலாக்க அறிவு இல்லாமல் அடிப்படை மின்னணுவியல் மற்றும் மைக்ரோகண்ட்ரோலர்களுடன் பணிபுரிய உதவுவதாகும். ஆனால் பின்னர், இயற்கையைப் பயன்படுத்த எளிதானது என்பதால், இது விரைவில் உலகெங்கிலும் உள்ள எலக்ட்ரானிக்ஸ் தொடக்க மற்றும் பொழுதுபோக்காளர்களால் தழுவிக்கொள்ளப்பட்டது, இன்று இது முன்மாதிரி மேம்பாடு மற்றும் பிஓசி வளர்ச்சிகளுக்கு கூட விரும்பப்படுகிறது.
Arduino உடன் தொடங்குவது பரவாயில்லை என்றாலும், AVR, ARM, PIC, STM போன்ற முக்கிய மைக்ரோகண்ட்ரோலர்களில் மெதுவாக நகர்ந்து அவற்றின் சொந்த பயன்பாடுகளைப் பயன்படுத்தி அதை நிரல் செய்வது முக்கியம். ஏனென்றால், டிஜிட்டல் ரைட் (), அனலாக்ரைட் (), தாமதம் () போன்ற முன்பே கட்டமைக்கப்பட்ட செயல்பாடுகளால் பெரும்பாலான பணிகள் செய்யப்படுவதால், அர்டுயினோ புரோகிராமிங் மொழி புரிந்துகொள்வது மிகவும் எளிதானது. Arduino நிரல்கள் பிற உட்பொதிக்கப்பட்ட சி குறியீட்டுடன் ஒத்ததாக இல்லை, அங்கு நாங்கள் பதிவு பிட்களைக் கையாளுகிறோம் மற்றும் எங்கள் திட்டத்தின் தர்க்கத்தின் அடிப்படையில் அவற்றை அதிகமாகவோ அல்லது குறைவாகவோ செய்கிறோம்.
தாமதமின்றி Arduino டைமர்கள்:
எனவே, முன்பே கட்டமைக்கப்பட்ட செயல்பாடுகளுக்குள் என்ன நடக்கிறது என்பதைப் புரிந்து கொள்ள இந்த விதிமுறைகளுக்குப் பின்னால் நாம் தோண்ட வேண்டும். எடுத்துக்காட்டாக, தாமதம் () செயல்பாடு பயன்படுத்தப்படும்போது, அது ATmega மைக்ரோகண்ட்ரோலரின் டைமர் மற்றும் கவுண்டர் ரெஜிஸ்டர் பிட்களை அமைக்கிறது.
இந்த ஆர்டுயினோ டைமர் டுடோரியலில் இந்த தாமதம் () செயல்பாட்டின் பயன்பாட்டை நாம் தவிர்க்கப் போகிறோம், அதற்கு பதிலாக பதிவாளர்களையே கையாள்வோம். நல்ல விஷயம் என்னவென்றால், இதற்கு நீங்கள் அதே Arduino IDE ஐப் பயன்படுத்தலாம். எங்கள் டைமர் பதிவு பிட்களை அமைப்போம், ஒவ்வொரு முறையும் குறுக்கீடு ஏற்படும் போது எல்.ஈ.டி ஐ மாற்றுவதற்கு டைமர் வழிதல் குறுக்கீட்டைப் பயன்படுத்துவோம். டைமர் பிட்டின் ப்ரீலோடர் மதிப்பை புஷ்பட்டன்களைப் பயன்படுத்தி சரிசெய்யலாம், குறுக்கீடு ஏற்படும் காலத்தைக் கட்டுப்படுத்தலாம்.
உட்பொதிக்கப்பட்ட மின்னணுவியலில் TIMER என்றால் என்ன?
டைமர் ஒரு வகையான குறுக்கீடு. இது ஒரு நிகழ்வின் நேர இடைவெளியை அளவிடக்கூடிய எளிய கடிகாரம் போன்றது. ஒவ்வொரு மைக்ரோகண்ட்ரோலருக்கும் ஒரு கடிகாரம் (ஆஸிலேட்டர்) உள்ளது, அர்டுயினோ யூனோவில் இது 16 மெகா ஹெர்ட்ஸ் என்று கூறுங்கள். இது வேகத்திற்கு காரணமாகும். கடிகார அதிர்வெண் அதிகமாக இருந்தால் செயலாக்க வேகம் இருக்கும். ஒரு டைமர் கடிகார அதிர்வெண்ணைப் பொறுத்து குறிப்பிட்ட வேகத்தில் எண்ணும் கவுண்டரைப் பயன்படுத்துகிறது. Arduino Uno இல் ஒரு எண்ணிக்கையைச் செய்ய 1/16000000 வினாடிகள் அல்லது 62nano வினாடிகள் ஆகும். ஒவ்வொரு 62 நானோ வினாடிக்கும் ஒரு அறிவுறுத்தலில் இருந்து மற்றொரு அறிவுறுத்தலுக்கு அர்டுயினோ நகர்கிறது.
Arduino UNO இல் டைமர்கள்:
Arduino UNO இல் வெவ்வேறு செயல்பாடுகளுக்கு மூன்று டைமர்கள் பயன்படுத்தப்படுகின்றன.
டைமர் 0:
இது 8-பிட் டைமர் மற்றும் தாமதம் (), மில்லிஸ் () போன்ற டைமர் செயல்பாட்டில் பயன்படுத்தப்படுகிறது.
டைமர் 1:
இது 16-பிட் டைமர் மற்றும் சர்வோ நூலகத்தில் பயன்படுத்தப்படுகிறது.
டைமர் 2:
இது 8-பிட் டைமர் மற்றும் தொனி () செயல்பாட்டில் பயன்படுத்தப்படுகிறது.
Arduino டைமர் பதிவாளர்கள்
டைமர்களின் உள்ளமைவை மாற்ற, டைமர் பதிவேடுகள் பயன்படுத்தப்படுகின்றன.
1. டைமர் / கவுண்டர் கண்ட்ரோல் ரெஜிஸ்டர்கள் (டி.சி.சி.ஆர்.என்.ஏ / பி):
இந்த பதிவு டைமரின் முக்கிய கட்டுப்பாட்டு பிட்களை வைத்திருக்கிறது மற்றும் டைமரின் முன்பதிவுகளை கட்டுப்படுத்த பயன்படுகிறது. இது WGM பிட்களைப் பயன்படுத்தி டைமர் பயன்முறையைக் கட்டுப்படுத்தவும் அனுமதிக்கிறது.
சட்ட வடிவம்:
| டி.சி.சி.ஆர் 1 ஏ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| COM1A1 | COM1A0 | COM1B1 | COM1B0 | COM1C1 | COM1C0 | WGM11 | WGM10 |
| டி.சி.சி.ஆர் 1 பி | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ICNC1 | ICES1 | - | WGM13 | WGM12 | சிஎஸ் 12 | சிஎஸ் 11 | சிஎஸ் 10 |
Prescaler:
டி.சி.சி.ஆர் 1 பி இல் உள்ள சிஎஸ் 12, சிஎஸ் 11, சிஎஸ் 10 பிட்கள் ப்ரீஸ்கேலர் மதிப்பை அமைக்கிறது. டைமரின் கடிகார வேகத்தை அமைக்க ஒரு ப்ரீஸ்கேலர் பயன்படுத்தப்படுகிறது. Arduino Uno 1, 8, 64, 256, 1024 இன் முன்பதிவாளர்களைக் கொண்டுள்ளது.
| சிஎஸ் 12 | சிஎஸ் 11 | சிஎஸ் 10 | பயன்படுத்தவும் |
| 0 | 0 | 0 | கடிகார டைமர் இல்லை |
| 0 | 0 | 1 | CLCK i / o / 1 Prescaling இல்லை |
| 0 | 1 | 0 | CLK i / o / 8 (Prescaler இலிருந்து) |
| 0 | 1 | 1 | CLK i / o / 64 (Prescaler இலிருந்து) |
| 1 | 0 | 0 | CLK i / o / 256 (Prescaler இலிருந்து) |
| 1 | 0 | 1 | CLK i / o / 1024 (Prescaler இலிருந்து) |
| 1 | 1 | 0 | T1 பின் வெளிப்புற கடிகார மூல. விழும் விளிம்பில் கடிகாரம் |
| 1 | 1 | 1 | T1 முள் வெளிப்புற கடிகார மூல. உயரும் விளிம்பில் கடிகாரம். |
2. டைமர் / கவுண்டர் பதிவு (TCNTn)
எதிர் மதிப்பைக் கட்டுப்படுத்தவும், முன் ஏற்றி மதிப்பை அமைக்கவும் இந்த பதிவு பயன்படுத்தப்படுகிறது.
இரண்டாவது நேரத்தில் தேவையான நேரத்திற்கு முன் ஏற்றி மதிப்பிற்கான சூத்திரம்:
TCNTn = 65535 - (நொடி / ப்ரீஸ்கேலர் மதிப்பில் 16x10 10 xTime)
டைமர் 1 க்கான முன் ஏற்றி மதிப்பை 2 நொடிக்கு கணக்கிட:
TCNT1 = 65535 - (16x10 10 x2 / 1024) = 34285
Arduino டைமர் குறுக்கிடுகிறது
Arduino குறுக்கீடுகள் பற்றி நாங்கள் முன்பு கற்றுக்கொண்டோம், டைமர் குறுக்கீடுகள் ஒரு வகையான மென்பொருள் குறுக்கீடுகள் என்பதைக் கண்டோம். Arduino இல் பல்வேறு டைமர் குறுக்கீடுகள் உள்ளன, அவை கீழே விளக்கப்பட்டுள்ளன.டைமர் வழிதல் குறுக்கீடு:
டைமர் அதன் அதிகபட்ச மதிப்பை அடையும் போதெல்லாம் எடுத்துக்காட்டாக (16 பிட் -65535) டைமர் வழிதல் குறுக்கீடு ஏற்படுகிறது. எனவே, டைமர் குறுக்கீடு மாஸ்க் பதிவேட்டில் TIMSKx இல் இருக்கும் TOIEx இல் டைமர் வழிதல் குறுக்கீடு பிட் இயக்கப்பட்டிருக்கும்போது ஒரு ISR குறுக்கீடு சேவை வழக்கம் அழைக்கப்படுகிறது.
ஐஎஸ்ஆர் வடிவம்:
ISR (TIMERx_OVF_vect) { }
வெளியீட்டு ஒப்பீட்டு பதிவு (OCRnA / B):
இங்கே வெளியீட்டு ஒப்பீட்டு போட்டி குறுக்கீடு ஏற்படும் போது குறுக்கீடு சேவை ISR (TIMERx_COMPy_vect) என்று அழைக்கப்படுகிறது, மேலும் TIFRx பதிவேட்டில் OCFxy கொடி பிட் அமைக்கப்படும். TIMSKx பதிவேட்டில் உள்ள OCIExy இல் உள்ள பிட் அமைப்பதன் மூலம் இந்த ISR செயல்படுத்தப்படுகிறது. TIMSKx என்பது டைமர் குறுக்கீடு மாஸ்க் பதிவு.
டைமர் உள்ளீட்டு பிடிப்பு:
அடுத்து டைமர் உள்ளீட்டு பிடிப்பு குறுக்கீடு ஏற்படும் போது குறுக்கீடு சேவை ISR (TIMERx_CAPT_vect) என்று அழைக்கப்படுகிறது, மேலும் ICFx கொடி பிட் TIFRx இல் அமைக்கப்படும் (டைமர் குறுக்கீடு கொடி பதிவு). TIMSKx பதிவேட்டில் உள்ள ICIEx இல் உள்ள செயல்பாட்டு பிட்டை அமைப்பதன் மூலம் இந்த ISR செயல்படுத்தப்படுகிறது.
கூறுகள் தேவை
- Arduino UNO
- புஷ் பொத்தான்கள் (2)
- எல்.ஈ.டி (எந்த நிறமும்)
- 10 கே மின்தடை (2), 2.2 கே (1)
- 16x2 எல்சிடி டிஸ்ப்ளே
சுற்று வரைபடம்

Arduino UNO மற்றும் 16x2 LCD காட்சிக்கு இடையிலான சுற்று இணைப்புகள்:
|
16x2 எல்சிடி |
Arduino UNO |
|
வி.எஸ்.எஸ் |
ஜி.என்.டி. |
|
வி.டி.டி. |
+ 5 வி |
|
வி 0 |
எல்சிடியின் மாறுபட்ட கட்டுப்பாட்டுக்கு பொட்டென்டோமீட்டர் சென்டர் முள் |
|
ஆர்.எஸ் |
8 |
|
ஆர்.டபிள்யூ |
ஜி.என்.டி. |
|
இ |
9 |
|
டி 4 |
10 |
|
டி 5 |
11 |
|
டி 6 |
12 |
|
டி 7 |
13 |
|
அ |
+ 5 வி |
|
கே |
ஜி.என்.டி. |
10K இன் புல் டவுன் மின்தடையங்களைக் கொண்ட இரண்டு புஷ் பொத்தான்கள் Arduino பின்ஸ் 2 & 4 உடன் இணைக்கப்பட்டுள்ளன, மேலும் ஒரு எல்.ஈ.டி 2.2K மின்தடையின் மூலம் Arduino இன் PIN 7 உடன் இணைக்கப்பட்டுள்ளது.
அமைப்பு படத்திற்கு கீழே இருக்கும்.
புரோகிராமிங் Arduino UNO டைமர்கள்
இந்த பயிற்சியில் நாம் பயன்படுத்தும் டைமர் அளவிற்கதிகமாக குறுக்கிட மற்றும் pushbuttons பயன்படுத்தி வரைதல் மதிப்பு (TCNT1) சரிசெய்வதன் மூலம் குறிப்பிட்ட காலகட்டத்திற்கு எல்இடி மற்றும் இனிய மிளிரும் அதைப் பயன்படுத்துவோம். Arduino டைமருக்கான முழுமையான குறியீடு இறுதியில் கொடுக்கப்பட்டுள்ளது. இங்கே நாம் குறியீடு வரியை வரி மூலம் விளக்குகிறோம்:
ப்ரீலோடர் மதிப்பைக் காண்பிக்க திட்டத்தில் 16x2 எல்சிடி பயன்படுத்தப்படுவதால், திரவ படிக நூலகம் பயன்படுத்தப்படுகிறது.
#சேர்க்கிறது
அர்டுயினோ முள் 7 உடன் இணைக்கப்பட்டுள்ள எல்.ஈ.டி அனோட் முள் லெட் பின் என வரையறுக்கப்படுகிறது.
# ledPin 7 ஐ வரையறுக்கவும்
அடுத்து திரவ கிரிஸ்டல் வகுப்பை அணுகுவதற்கான பொருள் எல்சிடி ஊசிகளுடன் (ஆர்எஸ், ஈ, டி 4, டி 5, டி 6, டி 7) அர்டுயினோ யுஎன்ஓவுடன் இணைக்கப்பட்டுள்ளது.
லிக்விட் கிரிஸ்டல் எல்சிடி (8,9,10,11,12,13);
பின்னர் முன் ஏற்றி மதிப்பு 3035 ஐ 4 விநாடிகளுக்கு அமைக்கவும். முன் ஏற்றி மதிப்பைக் கணக்கிட மேலே உள்ள சூத்திரத்தைச் சரிபார்க்கவும்.
மிதவை மதிப்பு = 3035;
வெற்றிட அமைப்பில் () அடுத்து , முதலில் எல்சிடியை 16x2 பயன்முறையில் அமைத்து, சில நொடிகளுக்கு வரவேற்பு செய்தியைக் காண்பி.
lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("ARDUINO TIMERS"); தாமதம் (2000); lcd.clear ();
அடுத்து எல்.ஈ.டி முள் OUTPUT பின் என அமைக்கவும், புஷ் பொத்தான்கள் INPUT ஊசிகளாகவும் அமைக்கப்படும்
pinMode (ledPin, OUTPUT); pinMode (2, INPUT); pinMode (4, INPUT);
அடுத்து அனைத்து குறுக்கீடுகளையும் முடக்கு:
noInterrupts ();
அடுத்து டைமர் 1 துவக்கப்படுகிறது.
டி.சி.சி.ஆர் 1 ஏ = 0; டி.சி.சி.ஆர் 1 பி = 0;
முன் ஏற்றி டைமர் மதிப்பு அமைக்கப்பட்டுள்ளது (ஆரம்பத்தில் 3035 ஆக).
TCNT1 = மதிப்பு;
டி.சி.சி.ஆர் 1 பி பதிவேட்டில் ப்ரீ ஸ்கேலர் மதிப்பு 1024 அமைக்கப்பட்டுள்ளது.
TCCR1B - = (1 << CS10) - (1 << CS12);
டைமர் வழிதல் குறுக்கீடு டைமர் குறுக்கீடு மாஸ்க் பதிவேட்டில் செயல்படுத்தப்பட்டுள்ளது, இதனால் ஐ.எஸ்.ஆர் பயன்படுத்தப்படலாம்.
TIMSK1 - = (1 << TOIE1);
கடைசியில் அனைத்து குறுக்கீடுகளும் இயக்கப்பட்டன.
குறுக்கீடுகள் ();
இப்போது டிஜிட்டல் ரைட்டைப் பயன்படுத்தி எல்.ஈ.டி ஆன் மற்றும் ஆஃப் செய்ய பொறுப்பான டைமர் ஓவர்ஃப்ளோ இன்டரப்ட்டுக்கான ஐ.எஸ்.ஆரை எழுதுங்கள் . டைமர் வழிதல் குறுக்கீடு ஏற்படும் போதெல்லாம் நிலை மாறுகிறது.
ISR (TIMER1_OVF_vect) { TCNT1 = மதிப்பு; டிஜிட்டல்ரைட் (லெட் பின், டிஜிட்டல் ரீட் (லெட் பின்) ^ 1); }
இல் வெற்றிடத்தை லூப் () வரைதல் மதிப்பு அதிகரிக்கும் வேண்டும் அல்லது மிகுதி பொத்தானை உள்ளீடுகள் மற்றும் மேலும் மதிப்பு 16x2 LCD இல் காட்டப்படும் பயன்படுத்தி decremented உள்ளது.
if (DigitalRead (2) == HIGH) { மதிப்பு = மதிப்பு + 10; // தூண்டுதல் முன் ஏற்ற மதிப்பு } if (DigitalRead (4) == HIGH) { மதிப்பு = மதிப்பு -10; // குறைவு முன் ஏற்ற மதிப்பு } lcd.setCursor (0,0); lcd.print (மதிப்பு); }
ஆகவே Arduino நிரலில் தாமதத்தை உருவாக்க ஒரு டைமரைப் பயன்படுத்தலாம். புஷ் பொத்தான்களைப் பயன்படுத்தி முன் ஏற்றி மதிப்பை அதிகரிப்பதன் மூலமும் குறைப்பதன் மூலமும் தாமதத்தின் மாற்றத்தை நாங்கள் நிரூபித்த இடத்தில் கீழே உள்ள வீடியோவைச் சரிபார்க்கவும்.
