1. TUJUAN PERCOBAAN
• Memahami Pengaturan timer dan counter pada mikrokontroller keluarga AVR
• Mampu menjelasakan pengaturan tumer dan counter mikrokontroller keluarga AVR
• Mampu memprogram mikrokontroller untuk memfungsikan timer dan counter
mikrokontroller
• Memehami sistem interupsi yang terdapat pada mikrokontroller ATMega 16
• Mampu menjelaskan dengan benar sistem interupsi yang terdapat pada ATMega16
• Mampu membuat prgram untuk mengaktifkan interupsi
2. DASAR TEORI
PRESCALER
Timer pada dasarnya hanya menghitung pulsa clock. Frekuensi pulsa clock yang
dihitung tersebut bisa sama dengan frekuensi crystal yang dipasang atau dapat
diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024. Berikut
penjelasannya: Sebuah AVR menggunakan crystal dengan frekuensi 8 MHz dan timer yang
digunakan adalah timer 16 bit, maka maksimum waktu timer yang bisa dihasilkan adalah:
Untuk menghasilkan waktu timer yang lebih lama dapat digunakan prescaler, misalnya
1024, maka maksimum waktu timer yang bisa dihasilkan adalah :
MACAM-MACAM TIMER/COUNTER
1. Timer/Counter 0
Merupakan 8 bit timer/counter. Pengaturan Timer/Counter 0 diatur oleh TCCR0
(Timer/Counter control register 0) sebagaimana ditunjukkan gambar 1.
Gambar 1. Register TCCR0
Fungsi masing masing bit pada register TCCR0 adalah sebagai berikut:
a. Bit 3 ~ 7 digunakan untuk setting PWM.
b. Bit 2, 1, 0 (CS02, CS01, CS00): Clock select. Ketiga bit tersebut memilih
sumber clock yang akan digunakan oleh timer/counter.
2. Timer/Counter 1
Merupakan 16-bit timer/counter sehingga terdapat perbedaan cara
pengaksesannya dengan 8-bit timer/counter. 16-bit (1 word) timer/counter harus
diakses dengan 8 bit high dan 8 bit low. Pengaturan Timer/Counter1 juga diatur
oleh register TCCR1B sebagaimana ditunjukkan pada gambar 2.
Bit 2,1,0 (CS1 2:0): Clock Select. Ketiga bit tersebut (CS2/CS1/CS0) mengatur
sumber clock yang digunakan untuk Timer/Counter1.
3. Timer/Counter 2
Timer/Counter2 adalah 8-bit Timer/Counter, pengaturan pada Timer/Counter2
diatur oleh TCCR2 (Timer/Counter Control Register 2).
SETTING TIMER
Sebelum melakukan setting timer maka tentukan dahulu nilai delay yang diinginkan
lalu bisa didapatkan nilai TCNTnya
INTERUPSI
Interrupt/Interupsi ialah suatu kondisi dimana CPU (Central Processing Unit)
mikrokontroler berhenti dari rutinitas yang sedang dikerjakan dan mengerjakan
rutinitas lain yang ditunjuk oleh interupsi tersebut. Ketika rutinitas yang ditunjuk
interupsi telah selesai dieksekusi, maka CPU akan mulai mengeksekusi rutinitas awal
sebelum adanya interupsi yang terhenti dari tempat terakhir.
Pada mikrokontroler ATMega 16 terdapat 21 sumber interupsi baik internal interupsi
maupun eksternal sebagaimana ditunjukkan pada tabel 1.
Tabel 1. Sumber interupsi ATMega 16
Pada bagian ini jenis interrupt yang akan dibahas ialah external interrupt.
ATmega8535 memiliki tiga buah eksternal interrupt yaitu INT0, INT1, dan INT2. Ketiga
interrupt ini yaitu INT0 s.d INT2 akan tertrigger walaupun portnya dikonfigurasi
sebagai output. Fitur ini memungkinkan interrupt yang dikondisikan oleh software.
Semua interrupt akan tertrigger jika terdapat perubahan rising edge atau falling edge.
Mode any change tidak dimiliki INT2, sedangkan INT0 dan INT1 memilikinya. Mode any
change memungkinkan interrupt terpanggil baik ketika rising dan falling edge.
Register-register yang harus di setting untuk mengaktifkan eksternal interupsi
ialah GICR (General Interrupt Control Register), GIFR (General Interrupt Flag
Register), MCUCR (MCU Control Register), dan MCUCSR (MCU Control and Status Register).
GICR (General Interrupt Control Register)
Regsiter ini memiliki panjang data 8 bit dengan konfigurasi sebagaimana
ditunjukkan pada gambar 1.
INTERUPSI
4. KESIMPULAN