Timer dan Counter Mikrokontroler I Putu Giovanni Eliezer | | 17 October 2013 | Microcontroller , Theory Theory | | 2 Coent! Pengenalan Timer & Counter
Tier " Counter eru#a$an %itur yan& telah tertana 'i i$ro$ontroler ()* yan& eili$i %un&!i %un&!i terha'a# terha'a# +a$tu -un&!i #e+a$tu yan& 'ia$!u' 'ia$!u' 'i!ini 'i!ini a'alah #enentuan #enentuan $a#an #ro&ra ter!ebut 'i.alan$an, ti'a$ hanya itu !a.a %un&!i tier yan& lainnya a'alah P/M, (C, 'an O!cillator O!cillator Prin!i# Prin!i# $er.a tier 'en&an cara eba&i eba&i %re$uen!i %re$uen!i #re!caler #re!caler #a'a cloc$ yan& ter'a#at #a'a i$ro$ontroler !ehin&&a tier 'a#at ber.alan !e!uai 'en&an %re$uen!i yan& 'i $ehen'a$i Tier eru#a$an %un&!i +a$tu yan& !uber cloc$nya bera!al 'ari cloc$ internal e'an&$an coun counte terr eru eru#a #a$a $an n %un& %un&!i !i #erh #erhit itun un&a &an n yan& yan& !u !uber ber cloc cloc$n $ny ya bera bera!a !all 'ari 'ari e4te e4tern rnal al i$ro$ontroler alah !atu contoh #en&&unaan %un&!i tier yaitu #a'a .a 'i&ital yan& !uber cloc$nya bi!a en&&una$an cry!tal o!cillator 'an contoh #en&&unaan counter #a'a #en&hitun& baran& #a'a $onveyor yan& !uber cloc$nya bera!al 'ari !en!or yan& en'ete$!i baran& ter!ebut Pa'a i$ro$ontroler (T (TMEG( 15 eili$i 3 buah tier yaitu tier 0 6bit, tier1 15bit, 'an tier 2 6bit ntu$ en&enai re&i!ter len&$a#nya bi!a 'ibaca #a'a 'ata!heet 8aun yan& a$an 'ibaha! #a'a tuli!an $ali ini hanya tier 06bit 'an tier1 15 bit !a.a Register yang Digunakan untuk Timer & Counter •
TC8T0 9 *e&i!ter Tier 1
•
TC8T 1 9 *e&i!ter Tier 0
•
Ttier0 9 Perio'e Tier 0
•
Ttier 1 9Perio'e Tier 1
•
To!c To!c 9 Perio'e Cloc$
•
-o!c 9 -re$uen!i Cry!tall Cloc$
•
8 9 Pre!caler 1, 6, 5:, 2;5, 102:
Prescaler
Pa'a Pa'a 'a!arn 'a!arnya ya Tier Tier hanya hanya en&hi en&hitun tun& & #ul!a #ul!a cloc$ cloc$ -re$uen -re$uen!i !i #ul!a #ul!a cloc$ cloc$ yan& 'ihitu 'ihitun& n& ter! ter!eb ebut ut bi!a bi!a !aa !aa 'en& 'en&an an %re$ %re$ue uen! n!ii cry! cry!ta tall yan& yan& 'i&u 'i&una na$a $an n atau atau 'a#a 'a#att 'i#e 'i#erl rla aba batt en&&una$an #re!caler 'en&an %a$tor 6, 5:, 2;5 atau 102: Contoh #en&&unaan #re!caler < uatu i$ro$ontroler en&&una$an cry!tal 'en&an %re$uen!i 6 M=z 'an tier yan& 'i&una$an a'alah Tier 1 15 >it a$a a$!iu +a$tu Tier yan& bi!a 'iha!il$an a'alah < TM(?91@%CAB
4
----h
9012; D!
4
1 5;;35
9 000612 ! ntu$ en&ha!il$an +a$tu Tier yan& lebih laa 'a#at en&&una$an #re!caler 102:, a$a +a$tu Tier yan& bi!a 'iha!il$an a'alah < TM(?91@%CAB 9012; D! 9 6366506 !
4
----h1 5;;;35
4
4 4
8 102:
Tujuan Tu juan Penggunaan Timer & Counter
1 Mela$! Mela$!anaa anaan n tu&a! tu&a! !ecara !ecara berFul berFulan& an& 2 Men&en' Men&en'ali ali$an $an $ece# $ece#ata atan n otor otor C P/M P/M 3 Mela$u$ Mela$u$an an #erhit #erhitun&a un&an n Cou Counte nter r : Mebuat Mebuat #enun'a #enun'aan an +a$tu +a$tu 'el 'elay ay TIMER 0 (8 Bit
ntu$ #erhitun&an tier 0 'a#at en&&una$an ruu! < Ttier0 9 To!c2;5FTC8T08 To!c2;5FTC8T08
H 6 >it 9 2;5 2J6
ebenarnya Tier 0 ti'a$ 'a#at en&ha!il$an #erio'e !elaa 1 'eti$ $arena $eterbata!an .ulah bit nya 6 bit 9 2;5 8aun 'en&an #en&&unaan ruu! 'a#at 'ila$u$an #eani#ula!ian a&ar tier 0 'a#at en&ha!il$an #erio'e +a$tu !elaa 1 'eti$ en&an cara ebuat tier !elaa 001 'eti$ lalu 'ila$u$an #erulan&an !ebanya$ 100 $ali !ehin&&a a$an en&ha!il$an +a$tu 1 'eti$ 001 'eti$ 4 100 $ali 9 1 'eti$ Contoh #en&&unaan #en&&unaan untu$ tier 0 'en&an cry!tal cry!tal 12 M=z 'an en&&una$an en&&una$an !$ala cloc$ 102: a$a a$an en&ha!il$an <
To!c91@-o!c91@1290,063 001900632;5FTC8T0102: TC8T 9 1269 8! =e4a'e!ial >er'a!ar$an #erhitun&an ter!ebut 'i 'a#at$an 6(, a$a nilai ter!ebut haru! 'i in#ut$an $e re&i re&i!t !ter er TC8T TC8T0 0 a&ar a&ar tie tierr 0 bern bernil ilai ai 1 'eti$ 'eti$ >eri >eri$ut $ut ini ini cont contoh oh #en&& #en&&un unaan aan nya nya #a'a #a'a Co'evi!ion ()* <
TIMER " ("# Bit
ntu$ #erhitun&an tier 1 'a#at en&&una$an ruu! < Ttier 1 9 To!c5;;35FTC8T18 To!c5;;35FTC8T18
H15 >it 9 5;;35 2J15
Cont Contoh oh #en&& #en&&una unaan an untu untu$ $ tie tierr 1 'eti$ 'eti$ Ti Tier er1 1 9 1 'eti 'eti$ $ 'en&a 'en&an n cry!t cry!tal al 12 M=z M=z 'an en&&una$an !$ala cloc$ 102: a$a a$an en&ha!il$an < To!c 9 1@-o!c 1 9 TC8T 9 ;3616 9 D$%! =e4a'e!ial
9
1@12
9 0,063 00635;;35FTC8T1102:
>er'a!ar$an #erhitun&an ter!ebut 'i 'a#at$an 23(, a$a nilai ter!ebut haru! 'i in#ut$an $e re&i re&i!t !ter er TC8T TC8T1 1 a&ar a&ar tie tierr 1 bern bernil ilai ai 1 'eti$ 'eti$ >eri >eri$ut $ut ini ini cont contoh oh #en&& #en&&un unaan aan nya nya #a'a #a'a Co'evi!ion ()* <
Counter 0 & "
ntu$ #en&&unaan %un&!i counter #a'a i$ro$ontroler lebih u'ah .i$a 'iban'in&$an 'en&an %un&!i tier, $arena ti'a$ eerlu$an #erhitun&an untu$ #en&in#utan nilai $e re&i!ter TC8T *e&i!ter TC8T a$an !ecara otoati! a$an encacah .i$a a'a in#ut yan& a!u$, in#ut yan& a!u$ contohnya 'a#at beru#a #u!h button Pa'a Counter 0, in#ut bera!al 'ari T0 atau PO*T PO*T > 0 yan& a#u encacah in#ut hin&&a 2;5 6 >it >eri$ut ini $on%i&ura!i $o n%i&ura!i Counter 0 #a'a Co'evi!ion () ()* < Pa'a Counter 1, in#ut bera!al 'ari T1 atau PO*T > 1 yan& a#u encacah hin&&a 5;;35 15 >it ntu$ $on%i&ura!i counter 0 " 1 #a'a Co'evi!ion ()* ()* !aa !e#erti $on%i&ura!i Tier Tier 0 'an 1
By default, the successive approximation circuitry circuitry requires requires an input clock frequency frequency between 50 kHz and 200 kHz to et maximum resolution! *e$oen'a!i 'ari #abri$an en&ata$an bah+a $ece#atan 'eta$ yan& 'ire$oen'a!i$an a'alah antara ;0 $=z !a#ai 'en&an 200 $=z #a'a re!olu!i a$!iu 10Fbit Bece#atan yan& lebih tin&&i 'ari#a'a 200 $=z a$an enurun$an a$ura!i unya, i$ro$ontroler (r'uino en&&una$an cloc$ !ebe!ar 15 M=z, 'an uunya (C a$an eili$i !uber cloc$ yan& !aa 'en&an i$ro$ontroler 8ilai ini .auh lebih be!ar 'ari yan& 'ibutuh$an oleh (C, yaitu a$!iu hanya 200 $=z Oleh $arena itu, ter'a#at !uatu rescaler #a'a i$ro$ontroler Pre!caler ini yan& a$an eba&i nilai cloc$ !uber yan& 'i&una$an oleh i$ro$ontroler 8ilai #re!caler 'a#at 'iatur en&&una$an 3 bit (P, yaitu (P0, (P1 (P1 'an (P2 (atilah Gabar 3, beri$ut
Gambar 3. ADC Prescaler
8ilai #re!caler yan& 'i!e'ia$an a'alah 2, :, 6, 15, 32, 5:, 'an 126 8ilaiFnilai ini yan& a$an 'i&una$an untu$ eba&i 'eta$ cloc$ !uber Barena $ita en&&una$an cloc$ 15 M=z #a'a (r'uino $ita, a$a 'i#eroleh nilaiFnilai 'eta$ ha!il #eba&ian !eba&ai beri$ut< 15 M=z @ 2 9 6 M=z 15 M=z @ : 9 : M=z 15 M=z @ 6 9 2 M=z 15 M=z @ 15 9 1 M=z 15 M=z @ 32 9 ;00 $=z 15 M=z @ 5: 9 2;0 $=z 15 M=z @ 126 9 12; $=z Barena cloc$ (C yan& 'ire$oen'a!i$an bera'a 'iantara ;0 $=z 'an 200 $=z, a$a #re!caler yan& te#at 'i&una$an a'alah !ebe!ar 126 8ilai 126 ini 'i#eroleh 'en&an en&atur en&atur (P2, (P2, (P1 'an (P0 a!in&Fa!in& bernilai 1 Tabel !elen&$a#nya untu$ en&atur nilai #a'a (P 'i#erlihat$an #a'a Tabel Tabel 1 Ta'el " )eleksi *ilai !DP)
>er'a!ar$an #eba&ian 'i ata!, .i$a $ita en&&una$an #re!caler !ebe!ar 126, a$a $ece#atan (C !ebe!ar 12; $=z >a&aiana caranya a&ar $ita 'a#at enai$$an $ece#atan (C $itaK Caranya a'alah enurun$an cloc$ !uber Mi!alnya $ece#atan cloc$ 'ari 15 M=z $ita turun$an en.a'i 12 M=z, 'an #recaler 'iturun$an en.a'i 5: Ma$a, $ece#atan (C !e$aran& en.a'i 12 M=z@5: 9 167 $=z 8ilai ini lebih be!ar 167 L 12; 9 52 $=z 'ari#a'a #erhitun&an $ita !ebelunya 8aun, enurun$an cloc$ !uber berarti enurun$an $ece#atan i$ro$ontroler Inilah yan& en.a'i untun&Fru&i trade"off trade"off 'ari 'e!ain $ita Aa&i#ula, !an&at ti'a$ #ra$ti! untu$ encabut cloc$ yan& !u'ah ter#a!an& 'en&an bai$ 'i (r'uino $ita 'an en&&antinya 'en&an yan& baru Mari $ita $ebali $e nilai 12; $=z 'i ata! cloc$ !uber 15 M=z 'an 'a n #re!caler 126 Barena (C $ita ebutuh$an +a$tu 13 'eta$ 'ala !e$ali $onver!i, a$a banya$nya !a#el yan& bi!a 'i$onver!i oleh (C (C haru! 'iba&i la&i !ebanya$ 13 'ari $ece#atan (C, yaitu 12;@13 9 5 $a@! $ilo !a#el #er 'eti$ ntu$ a#li$a!i $hu!u!, i!alnya untu$ #encu#li$an &eloban& !uara, a$a nilai a$!ial ban'+i'th (C haru! 'iba&i 'ua la&i, yaitu ,5@2 9 :,6 $=z =al ini !e!uai 'en&an hu$u 8yui!t, yaitu %re$uen!i !a#lin& #a lin& ti'a$ 'ua $ali li#at 'ari %re$uen!i tertin&&i &eloban& tercu#li$ untu$ en&hin'ari alia!in& Mari $ita aati $e (r'uino $ita Perintah untu$ en&&una$an (C a'alah analogRead( Pertanyaan $ita, bera#a !ebenarnya $ece#atan !a#lin& 'ari !inta$! analogRead( iniK Ni$a $ita en&in!tal !o%t+are (r'uino, ari $ita aati %ile +irin&c bia!anya bera'a #a'a C<Pro&ra -ile!ar'uinoF10:F+in'o+!ar'uinoF 10:har'+arear'uinocore!ar'uino+irin&c Tentunya Tentunya leta$$nya 'i!e!uai$an 'en&an te#at 'iana $ita en&in!tal 'an ver!i !o%t+are (r'uino $ita Balau $ita bu$a +irin&c 'an a ati 'iba&ian #alin& ba+ah 'ari $u#ulan $o'in& ter!ebut, 'i#eroleh $eteran&an !eba&ai beri$ut< #if defined(ADCSRA) // set a2d prescale factor to 128 // 16 MHz / 128 = 12 !Hz" inside te desired $%2$$ !Hz ran&e' // tis *ill not *or+ properl, for oter cloc+ speeds" and // tis code so-ld -se .C0 to deterine te prescale factor' s3i(ADCSRA" AD0S2)4 s3i(ADCSRA" AD0S1)4 s3i(ADCSRA" AD0S$)4
// ena3le a2d con5ersions s3i(ADCSRA" AD7)4 #endif
e!uai 'u&aan $ita, #re!caler yan& 'i&una$an a'alah 126 =al ini terbu$ti 'ari !inta$! s'i !et bit yan& 'i$er.a$an #a'a (P2, (P1 'an (P0 (P0 e!uai 'en&an Tabel 1, a$a .i$a $eti&a bit ini 'i!et 'iberi nilai 1, a$a #re!caler yan& 'iha!il$an 'iha!il$an a'alah 126 Melihat $enyataan ini, !inta$! analo&*ea', (r'uino $ita 'ibata!i encu#li$ !ebanya$ 5 $a@!, atau .i$a $ita bulat$an en.a'i 000 !a#el #er'eti$ Ni$a $ita en&&una$an (r'uino no, a$a inilah o#!i yan& $ita #eroleh ntu$ bebera#a !eri i$ro$ontroler $eluar&a ?e&a $eluaran (tel, $ita 'i#er$enan$an untu$ e#eroleh $ece#atan yan& lebih tin&&i 8aun, a'a$ah cara lain untu$ enin&$at$an cloc$ #a'a (r'uino no $itaK Mari $ita aati #etun.u$ #a'a 'ata!heet () ()*120< Characterization an' Calibration o% the (C on an ()*, !eba&ai beri$ut< #he $%& accuracy also depends on o n the $%& clock! #he recommended maximum $%& clock frequency is limited limited by the internal %$& in the conversion circuitry! circuitry! 'or optimum performance, the $%& clock should not exceed 200 kHz! However, frequencies up to ( )Hz do not reduce the $%& resolution resolution sinificantly! i$ata$an bah+a %re$uen!i (C !a#ai 1 M=z ti'a$ en&uran&i re!olu!i (C terlalu !i&ni%i$an 8aun, .i$a 'i ata! 1 M=z ti'a$ 'i.ain oleh #abri$an en&an 'ei$ian, 'e i$ian, $ita 'a#at en&abil $e!i#ulan $alau cloc$ (C $ita nai$$an !a#ai a$!ial 1 M=z ti'a$ en.a'i #er!oalan Melihat $enyataan ini, 'en&an cloc$ !ebe!ar 15 M=z, $ita 'a#at eilih #re!caler yaitu !ebe!ar 15, 32, 5: 'an 126 Mari $ita coba en&aati ba&aiana .i$a #re!caler $ita ain$an 'ala #ero&raan (r'uino e#erti yan& !u'ah 'ibaha! !ebelunya, #re!caler 'iatur #a'a bit (P2, (P1, 'an (P0 #a'a re&i!ter (C*( (C*( en&an 'ei$ian, nilai $eti&a bit inilah yan& 'i&una$an untu$ en&ubah $ece#atan !a#lin& 'ari (C $ita e$aran& $ita a$an e#ro&ra (r'uino untu$ ebaca !a#el !ebanya$ ;0 $ali, 'an en&hitun& bera#a +a$tu yan& 'i#erlu$an untu$ #ro!e! $onver!i ter!ebut /a$tu /a$tu yan& 'ibutuh$an a$an 'i$eluar$an elalui !erial onitor ebuah #oten!ioeter $ita a!u$$an 'i #in (0 // Arra, -nsi&ned -nsi&ned -nsi&ned
3eri+-t di&-na+an -nt-+ en,ipan data lon& nilaiADC$94 lon& *a+t--lai$94 lon& *a+t-3erenti$94
5oid set-p() : //+ecepatan serial Serial'3e&in(;6$$)4 < 5oid loop() :
-nsi&ned int i4 // catat *a+t- -lai dan 3erenti //sipan asiln,a di eori for(i=$4i$4i>>) : *a+t--laii9 = icros()4 nilaiADCi9 = analo&Read($)4 *a+t-3erentii9 = icros()4 < // tapil+an asiln,a +e serial onitor for(i=$4i$4i>>) : Serial'print(? 7ilai ADC = ?)4 Serial'print(nilaiADCi9)4 Serial'print(? @a+t- +on5ersi = ?)4 Serial'print(*a+t-3erentii9 Serial'print(*a+t-3erenti i9 % *a+t--laii9)4 Serial'print(? -sn?)4 < dela,($$$)4 <
ari +a$tu $onver!i 'i#eroleh nilai 115 i$ro'eti$, atau 0115 ili'eti$ tia# !a#el, atau 0000115 'eti$ tia# !a#el en&an 'ei$ian, %re$uen!i !a#lin& yan& 'i&una$an a'alah 1@0000115 9 6520, 56 =z, atau !e$itar 65 $=z Ni$a eru.u$ #a'a $ece#atan #en&abilan !a#el nilai ini 'i$ata$an !eba&ai 65 $a@! 8ilai ini en'e$ati 'u&aan a+al $ita, yaitu tan#a o'i%i$a!i #re!caler, $ece#atan 'ari analo&*ea' en'e$ati nilai 5 $a@! 8ilai ini !e'i$it lebih $ecil $arena #en&&unaan !inta$! micros( .u&a ebutuh$an +a$tu e$!e$u!i
Mari !e$aran& $ita aen$an #re!calerFnya Bita e#unyai #ilihan nilai !elain 126 yaitu 15, 32 'an 5: Mari $ita o'i% #ro&ra $ita yan& !ebelunya Bita &una$an #re!caler !ebe!ar 5:, 'an #oten!ioeter !aya #utar a&ar 'i#eroleh varia!i ha!il Pro&ranya a'alah !eba&ai beri$ut< // Arra, -nsi&ned -nsi&ned -nsi&ned
3eri+-t di&-na+an -nt-+ en,ipan data lon& nilaiADC$94 lon& *a+t--lai$94 lon& *a+t-3erenti$94
// Bent-+an nilai%nilai 0rescaler // a+-+an pen&at-ran pada 3it AD0S2 sapai AD0S$ const -nsi&ned car 0S16 = (1 AD0S2)4 const -nsi&ned car 0S2 = (1 AD0S2) E (1 AD0S$)4 const -nsi&ned car 0S6F = (1 AD0S2) E (1 AD0S1)4 const -nsi&ned car 0S128 = (1 AD0S2) E (1 AD0S1) E (1 AD0S$)4 5oid set-p() : //+ecepatan serial Serial'3e&in(;6$$)4 // a+-+an inisialisasi' // Hap-s pen&at-ran ole li3rar, Ard-ino ADCSRA G= 0S1284 // pili prescaler ,an& di&-na+an' // Saat ini &-na+an nilai 6F ADCSRA E= 0S6F4 < 5oid loop() : -nsi&ned int i4 // catat *a+t- -lai dan 3erenti //sipan asiln,a di eori for(i=$4i$4i>>) : *a+t--laii9 = icros()4 nilaiADCi9 = analo&Read($)4 *a+t-3erentii9 = icros()4 < // tapil+an asiln,a +e serial onitor for(i=$4i$4i>>) : Serial'print(? 7ilai ADC = ?)4 Serial'print(nilaiADCi9)4 Serial'print(? @a+t- +on5ersi = ?)4 Serial'print(*a+t-3erentii9 Serial'print(*a+t-3erenti i9 % *a+t--laii9)4 Serial'print(? -sn?)4 < dela,($$$)4 <
(ati bah+a +a$tu $onver!i !ebe!ar 50 i$ro'eti$ 9 0,00005 'eti$, atau !etara 'en&an 15 $a@! a, a, ha!il $ita a!ih cu$u# a!u$ a$al =a!il $onver!i .u&a cu$u# !tabil >a&aiana $alau $ita nai$$an !a#ai bata! toleran!i yan& 'i#erboleh$anK Bita &una$an #re!caler #alin& $ecil yaitu 15 en&an en&&anti !atu bari! $o'in&, yaitu (C*( (C*( |9 PQ5:R en.a'i (C*( |9 PQ15R $ita #eroleh ha!il !eba&ai beri$ut<
Bece#atan terce#at yan& 'i#eroleh a'alah 20 i$ro'eti$, 'an ini !etara 'en&an ;0 $a@! Ter'a#at Ter'a#at varia!i lebih banya$ ban ya$ #a'a 8ilai (C yan& 'i#eroleh Ini enun.u$$an (C !ea$in ti'a$ !tabil 8aun 'ei$ian, varia!i ti'a$ terlalu ti#an& >i!a $ita tari$ $e!u#ulan bah+a 'en&an re!olu!i a$!ial (C, yaitu 10Fbit, a$a $ece#atan a$!iu yan& 'a#at 'ica#ai a'alah ;0 $a@! =a!il yan& cu$u# cu $u# en&e!an$an $etiban& $ece#atan $e ce#atan S'e%ault (r'uino, yaitu !e$itar $a@!