Penggunaan Timer secara mendasar yaitu scanning Timer Value setiap saat, yaitu dengan cara mengaktifkan timer lalu timer akan counting secara otomatis dan pada Main loop (program utama) selalu deteksi nilai counting timer (Timer Value), dan jika counting timer = timer yang diinginkan, maka selanjutnya lakukan proses yang diinginkan.
Seperti pada contoh sebelumnya, anda ingin counting hanya sebanyak 250 counting (dari 0 - 249) lalu setiap saat pada Main Loop mengecek register Timer Value apakah telah mencapai 250 hitungan atau tidak, maka hal ini membuang siklus waktu, memperlambat proses, dan tidak efisien.
Sedangkan jika menggunakan flag OV (OverFlow) sebagai detektor, pada timer 8 bit flag OV akan aktif jika counting timer lebih dari 255 (OV = nilai 256) yang artinya nilainya kelebihan 6 counting dari nilai counting 250 yang diinginkan.
Oleh sebab itu dibutuhkan solusi lain yaitu dengan menggunakan Start Value (Timer Value) atau Compare Match.
Start Value
Start Value timer adalah nilai awal Timer Value saat proses counting timer terjadi. Yaitu dengan menentukan nilai awal timer, misal Timer Value = 0x05h maka timer tidak dimulai dari 0x00 tetapi dari nilai 0x05. Timer Value adalah register nilai timer yang terus bertambah sebagai counting timer.
Compare Match
Compare Match adalah membandingkan nilai Timer Value dengan nilai tertentu yang telah didefinisikan pada register pembanding. Jika nilai Compare Match dan Timer Value telah sama maka flag pada status akan set dan Timer Value akan reset (ke nilai awal 0x00 / nilai yg telah didefinisikan).
Mode Timer CTC
AVR memiliki fungsi spesial yang disebut "Clear on Timer Compare" atau CTC. Mode operasi CTC terjadi secara hardware dengan membandingkan nilai timer (Timer Value) saat ini dengan nilai timer yang ditentukan. Dan karena terjadi secara hardware maka tidak perlu secara software untuk terus mengecek Timer Value saat ini, cukup dengan melihat status flag-nya saja. Selain itu mode CTC secara otomatis akan mereset nilai Timer Value menjadi 0x00 jika nilai pembanding timer telah sama, dan anda lakukan hanya mereset flagnya saat nilai timernya tercapai.
Sumber : www.avrfreaks.net dan datasheet AVR.
(Panjang bener bacanya... Bahasa inggris jadi agak pusing artiinya... T T)
Pada post selanjutnya akan saya coba beri contoh menghitung putaran motor DC menggunakan interupsi timer.
CMIIW ...^^v...
Seperti pada contoh sebelumnya, anda ingin counting hanya sebanyak 250 counting (dari 0 - 249) lalu setiap saat pada Main Loop mengecek register Timer Value apakah telah mencapai 250 hitungan atau tidak, maka hal ini membuang siklus waktu, memperlambat proses, dan tidak efisien.
Sedangkan jika menggunakan flag OV (OverFlow) sebagai detektor, pada timer 8 bit flag OV akan aktif jika counting timer lebih dari 255 (OV = nilai 256) yang artinya nilainya kelebihan 6 counting dari nilai counting 250 yang diinginkan.
Oleh sebab itu dibutuhkan solusi lain yaitu dengan menggunakan Start Value (Timer Value) atau Compare Match.
Start Value
Start Value timer adalah nilai awal Timer Value saat proses counting timer terjadi. Yaitu dengan menentukan nilai awal timer, misal Timer Value = 0x05h maka timer tidak dimulai dari 0x00 tetapi dari nilai 0x05. Timer Value adalah register nilai timer yang terus bertambah sebagai counting timer.
Compare Match
Compare Match adalah membandingkan nilai Timer Value dengan nilai tertentu yang telah didefinisikan pada register pembanding. Jika nilai Compare Match dan Timer Value telah sama maka flag pada status akan set dan Timer Value akan reset (ke nilai awal 0x00 / nilai yg telah didefinisikan).
Mode Timer CTC
AVR memiliki fungsi spesial yang disebut "Clear on Timer Compare" atau CTC. Mode operasi CTC terjadi secara hardware dengan membandingkan nilai timer (Timer Value) saat ini dengan nilai timer yang ditentukan. Dan karena terjadi secara hardware maka tidak perlu secara software untuk terus mengecek Timer Value saat ini, cukup dengan melihat status flag-nya saja. Selain itu mode CTC secara otomatis akan mereset nilai Timer Value menjadi 0x00 jika nilai pembanding timer telah sama, dan anda lakukan hanya mereset flagnya saat nilai timernya tercapai.
Sumber : www.avrfreaks.net dan datasheet AVR.
(Panjang bener bacanya... Bahasa inggris jadi agak pusing artiinya... T T)
Pada post selanjutnya akan saya coba beri contoh menghitung putaran motor DC menggunakan interupsi timer.
CMIIW ...^^v...