MODE TIMER PADA MIKROKONTROLER AVR
ATMEGA 16
PENDAHULUAN
1.1 Latar Belakang
AVR seri
mikrokontroler Complementary Metal Oxide
Semiconductor (CMOS) 8-bit buatan Atmel berbasis arsitektur RISC (Reduced Instruction Set Computer).
Hampir semua program dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter
fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable
Watchdog Timer, power saving mode,
ADC dan PWM (Pulse Width Modulation).
AVR pun In-System Programmable (ISP) Flash on-clip yang mengijinkan memori
program untuk diprogram ulang (read/write)
dengan koneksi secara serial yang disebut Serial
Peripheral Interface (SPI).
Dari semua
fasilitas yang diberikan pada mikokontroler AVR ATmega 16, timer merupakan salah satu sarana input yang kurang dapat perhatian pengguna mikrokontroler, dengan
sarana input ini mikrokontroler
dengan mudah bisa dipakai untuk mengukur lebar pulsa, membangkitkan pulsa
dengan lebar yang pasti, dipakai dalam pengendalian tegangan secara PWM (Pulse Width Modulation) dan lain
sebagainya. Mengingat banyaknya kegunaan dari timer pada mikrokontroler maka pada makalah ini akan dibahas
mengenai Timer.
1.2 Tujuan
Untuk
mengetahui mode pada Timer/Counter
Untuk
mengetahui register pada mode Timer/Counter
1.3 Rumusan Masalah
1.
Apa saja mode-mode yang digunakan pada
Timer/Counter?
2.
Apa saja register-register pada
masing-masing mode Timer/Counter?
PEMBAHASAN
Timer
adalah
salah satu fitur yang terdapat pada
mikrokontroler yang mempunyai fungsi sebagai pencacah nilai berdasarkan nilai
frekuensi yang digunakan. Timer dapat
bekerja secara paralel walaupun mikrokontroler sedang mengeksekusi suatu
perintah. Pada saat timer selesai
berhitung, interrupt akan diaktifkan
agar mikrokontroler tahu dan beranjak untuk mengeksekusi perintah terkait timer tersebut. Mikrokontroler AVR
ATmega 16 memiliki tiga buah Timer/Counter,
yaitu Timer 0, Timer 1, dan Timer 2.
2.1 Mode pada Timer
Dalam menggunakan timer,
ada beberapa istilah mode yang harus
diketahui pada saat akan melakukan pemograman, yaitu
·
Mode Normal
Pada mode ini timer akan
menghitung dari nilai terendah hingga nilai maksimal dan interrupt overflow akan diaktifkan saat hitungan reset ke nilai
terendah karena telah melebihi nilai maksimal.
·
Mode CTC (Clear Timer on Compare Match)
Pada mode ini, nilai maksimal dari timer
dapat diatur dengan nilai tertentu dan pada saat menyentuh nilai maksimal
tersebut, timer akan kembali ke nilai
terendah. Misalnya dalam timer 8-bit,
normalnya nilai maksimalnya adalah 255, namun pada mode ini nilainya dapat diatur menjadi 200, 100 atau sesuai
kebutuhan.
·
Mode Fast PWM
Pada dasarnya mode ini bekerja mirip mode
normal, namun pada mode ini
ketambahan fitur output compare
sehingga dapat menghasilkan pulse width
modulation. Misalkan, nilai OCR diatur 200, pada pin OC0A akan bernilai 1
saat timer menghitung dari nilai
terendah hingga kurang dari OCR, sebaliknya pada pin OC0A akan bernilai 0 saat
OCR lebih kecil atau sama dengan OCR.
·
Mode Phase Correct PWM
Pada dasarnya mode ini sama dengan Fast PWM, namun bedanya setelah mencapai nilai
maksimal, dia akan menghitung mundur hingga ke nilai terndah. Mode ini juga menyediakan fitur ouput compare untuk menghasilkan
PWM.
2.1 Register Timer
1. Timer 0
Timer
0 merupakan timer berjenis 8-bit
dengan jumlah cacahannya maksimal sebesar 256 kali. Pengaturan timer 0 diatur oleh TCCR0 (Timer Counter Control Register 0).
TCCR0
(Timer Counter Control Register 0)
adalah register yang berisi bit-bit untuk mengaktifkan timer serta mengatur mode-mode yang akan dijalankan oleh timer 0. Berikut register TCCR0.
Pada bit 0-2
(CS00, CS01, CS02) digunakan untuk mengaktifkan timer dan mengatur frekuensi timer
yang digunakan, dimana ketiga bit tersebut memilih sumber clock yang akan digunakan oleh timer.
Berikut tabel penjelasannya.
Pada bit ke 3
dan ke 6 (WGM01 dan WGM00) (WGM = Wave
Generation Mode) digunakan untuk mengatur mode - mode yang akan dijalankan
oleh mikrokontroler.
Pada bit ke 4
dan ke 5 (COM00 dan COM01) (COM = Compare
Output Mode).
Berikut tabel
Compare Output Mode apabila kita
menggunakan mode Non PWM.
Tabel Compare Output Mode apabila kita
menggunakan mode Fast PWM
Tabel Compare Output Mode apabila kita
menggunakan mode Phase Correct PWM.
Pada bit ke 7
yaitu FOC0 (Force Output Compare)
adalah bit yang akan bernilai 1 ketika bit WGM00 di mode Non PWM, maka apabila bit WGM00 di mode PWM, bit FOC0 akan bernilai 0.
Register TCNT0
Register TCNT0
adalah register yang dimiliki oleh timer0
sebagai pencacah atau counter. Range dari register TCNT0 ini sebesar 8 bit.
Register
OCR0
Register Output Compare Register adalah register
yang selalu di compare secara terus
menerus dengan register TCNT0. Pada saat nilai dari register OCR0 dan TCNT0 sama,
dapat kita sebagai interupsi, atau bisa gunakan outputnya menjadi PWM di Pin
OC0.
Register TIMSK
Register TIMSK (Timer/Counter Interrupt Mask Register)
adalah register yang berisi bit - bit untuk mengaktifkan interupsi pada setiap timer.
Bit 0 TOIE0 (Timer/Counter 0 Overflow Interrupt Enable)
adalah bit yang apabila kita set 1 digunakan untuk mengaktifkan interupsi overflow timer 0. Overflow
adalah suatu keadaan ketika cacahan telah mencapai puncak (0xFF = 255) sesuai
dengan range dari timer yang
digunakan.
Bit
1 OCIE0 (Timer/Counter 0 Output Compare
Interrupt Enable 0) adalah bit yang apabila kita set 1 digunakan untuk
mengaktifkan interupsi Compare match
atau interupsi ketika nilai TCNT0
sama dengan nilai OCR0.
Register TIFR
adalah register flag dari setiap
interupsi yang digunakan. Sebagai contoh apabila kita menggunakan interupsi Overflow, maka ketika cacah
telah mencapai nilai puncak (overflow)
maka flag TOV0 akan set menjadi 1.
Berikut isi dari register TIFR.
1. Timer 1
Timer/Counter 1
mempunyai keunggulan dibanding Timer/Counter 0 atau 2, namun cara mengatur.
Timer 0, 1, 2 sama saja, yaitu pada masing-masing registernya. Timer/Counter 1
dapat menghitung sampai dengan 65536 Timer/Counter. Timer 1 ini memiliki mode
operasi sebanyak 16 mode. Register pada Timer ini dibagi menjadi beberapa
register dengan fungsi khusus, yaitu: control register A, control register B
dan interrupt mask. Register – register pada Timer/Counter 1 yang
berfungsi untuk mengatur timer dan mode operasinya.
Register TCCR1A
Keterangan:
Bit
7
dan 6 : Compare Output untuk kanal A
Bit
5
dan 4 : Compare Output untuk kanal B
Bit
COM1
ini mempunyai Compare Output Mode pada setiap mode operasinya. Mode
tersebut mempengaruhi pin I/O OC1 A dan B.
Compare
Output Mode, Non-PWM
Compare Output Mode, Fast PWM
Compare Output Mode
Phase
Correct dan Phase Correct & Frequency PWM
Bit 3 : Force Output untuk kanal A
Bit 2
: Force Output untuk kanal B
Bit 1 dan 0 :
Waveform Generation Mode
Mode operasi sebanyak 16 mode,
diatur dalam bit WGM ini. Mode operasi tersebut ditunjukkan seperti
tabel dibawah.
Register
TCCR1B
Keterangan:
Bit
7
: Input Capture Noise Canceler, ketika bit ini diset 1(high)
maka
Noise
Canceler aktif dan masukkan dari Input Capture Pin (ICP1)
terfilter.
Bit
6
: Input Capture Edge Select, bit ini digunakan untuk trigger yang
disebabkan oleh edge ICP1. Jika bit ini diset 1 maka
sebuah rising edge (positif) akan men-trigger capture, Jika bit
ini diset 0 maka sebuah falling edge (negatif) akan men-trigger
capture.
Bit
5 :
Reserved, bit ini akan digunakan pada tahap pengembangan
selanjutnya.
Bit
4 dan
3 : lihat deskripsi register TCCR1A.
Bit
2, 1 dan 0 : Clock Select, bit ini
digunakan untuk memilih jenis sumber clock
untuk
digunakan pada suatu timer/counter.
Deskripsi
Clock Select Bit
Register
TCNT1
TCNT1, digunakan untuk
menyimpan nilai timer yang diinginkan. TCNT1 dibagi menjadi 2 register 8 bit,
yaitu TCNT1H dan TCNT1L.
Register
TCNT1
Register
TIMSK dan TIFR
TIMSK dan TIFR, Timer
Interrupt Mask Register (TIMSK) dan Timer Interrupt Flag (TIFR)
digunakan untuk mengendalikan interrupt mana yang diaktifkan, dengan
cara melakukan setting pada TIMSK dan untuk mengetahui interrupt mana
yang sedang terjadi.
Register TIMSK
Keterangan:
Bit 7 : Timer/Counter2
Output Compare Match Interrupt Enable
Bit 6 : Timer/Counter2
Overflow Interrupt Enable
Bit 5 : Timer1 Input
Capture Interrupt Enable
Bit 4 : Timer/CounterA
Output Compare Match Interrupt Enable
Bit 3 : Timer/CounterB
Output Compare Match Interrupt Enable
Bit 2 : Timer/Counter1
Overflow Interrupt Enable
Bit 1 : Timer/Counter0
Output Compare Match Interrupt Enable
Bit 0 : Timer/Counter0
Overflow Interrupt Enable
Register
TIFR
Keterangan:
Bit 7
: Output Compare Flag2
Bit 6
: Timer/Counter2 Overflow Flag
Bit 5
: Timer1 Input Capture Interrupt Flag
Bit 4
: Output Compare Flag1A
Bit 3
: Output Compare Flag1B
Bit 2
: Timer/Counter1 Overflow Flag
Bit 1
: Output Compare Flag0
Bit 0
: Timer/Counter0 Overflow Flag
Register OCR1n
OCR1n, Output
Compare Register Timer 1 n (n = A, B) merupakan register yang digunakan
untuk membangkitkan interupsi eksternal dengan melakukan perbandingan (Output
Compare) atau juga dapat digunakan untuk membangkitkan bentuk gelombang
(PWM). Fungsi tersebut di atas dikeluarkan oleh pin OC1n (n = A, B).
Register
OCR1n





















