Timer/Counter pada Microcontroller Atmel-AVR

Timer /Counter adalah suatu peripheral yang tertanam didalam microcontroller yang berfungsi pewaktu. Dengan peripheral ini pengguna microcontroller dapat dengan mudah menentukan kapan suatu perintah dijalankan (delay), tentu saja fungsi timer tidak hanya untuk penundaan perintah saja, timer juga dapat berfungsi sebagai oscilator, PWM, ADC, dan lain-lain.

Cara kerja timer adalah dengan cara memberikan prescaling (membagi frekuensi) pada clock yang terpasang pada microcontroller sehingga timer dapat berjalan dengan frekuensi yang diinginkan. Dalam contoh microcontroller yang saya bahas disini saya hanya menggunakan microcontroller Atmel-AVR ATmega16 karena hanya microcontroller jenis ini yang saya punya 😛

Didalam ATmega16 dan beberapa microcontroller AVR lainnya sudah terdapat 3 buah timer, yaitu TIMER0 (8 bit), TIMER1 (16 bit)dan TIMER2 (8 bit). Perbedaan timer yang 8 bit dan timer 16 terdapat pada maksimal waktu yang dapat dijangkau, semakin besar bit suatu timer semakin besar waktu yang dapat dicapai. Sebagai contoh TIMER1 yang memiliki kapasitas hingga 16 bit dapat menjangkau waktu hingga 67 detik lebih pada clock 1MHz berbeda dengan TIMER0 dan 2 yang memiliki kapasitas hanya 8 bit sehingga hanya dapat menjangkau maksimal 0,2 detik pada clock 1MHz namun ini bukan merupakan kekurangan.

Timer dioperasikan dengan mengubah nilai register yang berhubungan dengan peripheral timer, yaitu TCCRx, TCNTx, dan TIMSK. Fungsi register TCCRx adalah sebagai clock selector dan prescaler, output mode, waveform generation unit, dan Force Output Compare. Fungsi register TCNT adalah sebagai penyimpan nilai timer yang diinginkan. Fungsi register TIMSK adalah untuk menentukan timer mana yang akan kita gunakan apakah TIMER0, TIMER1, atau TIMER2.

Tinggalkan komentar