Home > Mikrokontroler, Tutorial > Control Timer/Counter0 AVR using WinAVR

Control Timer/Counter0 AVR using WinAVR

Timer merupakan salah satu bagian penting dari embedded system. Timer dapat membuat hidup kamu lebih mudah jika digunakan dengan baik. Pada dasarnya satu hal yang membuat itu baik adalah timer tersebut dapat berjalan sendiri di luar program utama. Kamu tinggal set up timer dan biarkan dia bekerja melakukan tugasnya sementara program utama mengerjakan tugasnya sendiri. Timer pada kenyataanya mudah untuk digunakan. Kita akan memperkenalkan timer yang terpasang di mikrokontroller ATMega8. Pada mikrokontroller AVR yang lain mempunyai model timer yang sama. ATmega8 memiliki 3 timer yaitu timer0 8 bit, timer1 16 bit dan timer2 8 bit. Pada penulisan ini akan dibahas mengenai timer0 8 bit. Timer0 atau yang biasa disebut timer/counter0 memiliki beberapa fitur antara lain:
1. Satu channel counter
2. Generator frekuensi
3. External event counter
4. 10 – bit clock prescaler
Untuk dapat menjalankan timer/counter0 harus dipelajari dulu mengenai register timer/counter0 karena di register itulah tempat setting Timer/Counter0 agar bisa bekerja. Register tersebut terdiri dari TCCR0, TCNT0, TIMSK dan TIFR. Register TCCR0 merupakan tempat setting clock yang intinya agar timer/counter0 bisa bekerja maka register ini jangan sampai diisi dengan 0x00 (dikosongkan). Sumber clock bisa berasal dari internal mulai dari no prescaler sampai 1024 prescaler dan bisa juga dari sumber external. Register TCNT0 merupakan register pencacah setiap ada trigger bisa tepi naik atau tepi turun, tapi kalo sumbernya dari dalam (internal) pencacahan dilakukan pada saat tepi naik. Register ini akan mencacah naik dari 0x00 sampai nilai max 0xFF kemudian di reset kembali lagi ke 0x00. Pada saat overflow yaitu kondisi dari 0xFF ke 0x00 maka bit TOV0 dari register TIFR akan di set 1. Keadaan overflow juga bisa digunakan untuk menjalankan interrupt. Register TIMSK merupakan register tempat setting interrupt timer/counter0 overflow diaktifkan atau tidak. Dengan memberikan logika satu pada bit 0 yaitu bit TOIE0 maka interrupt timer/counter0 aktif dengan catatan global interrupt diaktifkan (terdapat di Status register). Register ini diguankan oleh semua timer/counter yang ada di ATMega8, oleh karena itu pengubahan pada register ini harus hati-hati apabila ketiga timer tersebut digunakan secara bersama-sama. Sedangkan register TIFR (Timer/Counter Interrupt Flag Register) digunakan sebagai penanda apakah sudah terjadi overflow atau compare match. Pada timer/counter0 overflow ditandai dengan logika 1 pada bit 0 (TOV0) pada register ini.
Pada WinAVR untuk menangani proses interrupt telah disediakan header interrupt.h. Berikut ini contoh program sederhana dari timer/counter0 menggunakan WinAVR yang dijalankan menggunakan program AVRStudio 4 SP 4.

  1. include
  2. include
  3. include
  4. define outp(a, b) b = a

uint8_t led;
/* signal handler for timer interrupt TOV0 */
ISR(TIMER0_OVF_vect) {
led++;
}
int main(void) {
/* use PortB for output (LED) */
outp(0xFF, DDRB);
/*enable timer overflow interrupt*/
outp((1<<TOV0), TIMSK);
/*set timer counter initial value*/
TCNT0=0x00;
/*start timer without presscaler*/
outp((1<<CS00), TCCR0);
/* enable interrupts */
sei();
/*Initial led value*/
led = 0x00;
for (;;) {
/* loop forever timer interupts will
change the led value*/
outp(led, PORTB);
}
}

Program diatas merupakan operasi incremental yang hasilnya dikeluarkan ke portB. Proses Increment berlagsung saat terjadi interrupt overflow.

Salam Hangat
Dayat Kurniawan

Categories: Mikrokontroler, Tutorial
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: