Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
TIMER COUNTER
2. DASAR TEORI
Register TIMSK
Register Timer/Counter Interrupt Mask (TIMSK) digunakan oleh ketiga timer
ATMega8535 untuk mengaktifkan interupsi. Register ini memiliki susunan bit seperti
pada Gambar 2.1
Gambar 2.1 Register-register yang dimiliki setiap port
Register TIFR
Register Timer/Counter Interrupt Flag Register (TIFR) memilki fungsi sebagai
penanda, status, atau flag apakah terjadi interupsi atau tidak. Jika bernilai 1 berarti
terjadi interupsi, kemudian program akan melompat ke vektor interupsi yang
sesuai. Susunan dari register TIFR ditunjukkan pada Gambar 2.2
Bernilai 0 setelah
1 0
TCNT0=OCR0
0 1 Tidak digunakan
Bernilai 0 setelah
1 0 TCNT0=OCR0 dan bernilai 1
saat TOP (puncak)
Bit3 adalah Force Output Compare for Channel A (FOC1A), dan Bit 2 adalah
Force Output Compare for Channel B (FOC1B), digunakan pada mode Non-
PWM. Jika FOC1A diset 1, maka pin OC1A akan dipaksa menghasilkan sinyal
sesuai pengaturan pada COM1A1:0. Demikian pula jika FOC1B diset 1, maka pin
OC1B akan dipaksa mengeluarkan sinyal sesuai pengaturan pada COM1B1:0.
Bit1:0, Waveform Generation Mode (WGM11 dan WGM10). Kedua bit ini
bersama-sama dengan WGM13 dan WGM12 pada register TCCR1B menentukan
mode pembangkitan runtun Timer/Counter1.
2. Timer/Counter1 Control Register B (TCCR1B)
Bit 6, Input Capture Edge Select (ICES1), merupakan bit untuk mengatur pemicu
kejadian input capture. Jika ICES1 bernilai 0, maka input capture terpicu oleh
transisi turun (falling edge) pada pin ICP1, sedangkan jika bernilai 1, maka input
capture terpicu oleh transisi naik (rising edge)pada ICP1.Bit 5 tidak digunakan
Bit 2:0, Clock Select (CS12:0), merupakan bit untuk mengatur prescale yang
akan digunakan oleh Timer/Counter1 dimana penggunaannya sama dengan
CS02:0
3. Timer/Counter Register 1 (TCNT1H dan TCNT1L)
Register TCNT1H dan TCNT1L merupakan register untuk menyimpan data
cacahan Timer/Counter1. TCNT1H (High) merupakan MSB dari 16 bit, dan
TCNT1L (Low) sebagai LSB dari 16 bit. Gabungan keduanya mampu menyimpan
hingga 65535 cacahan.
4. Output Compare Register 1 A (OCR1AH dan OCR1AL)
Gabungan kedua register ini sering disebut dengan OCR1A yang berfungsi untuk
menyimpan data pembanding 16 bit yang selalu dibandingkan dengan register
TCNT1.
Prescaler
Pada dasarnya Timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang
dihitung bisa sama dengan frekuensi kristal atau dapat diperlambat
menggunakan prescaler dengan faktor 8, 64, 256, 1024.
Misal suatu AVR dengan kristal 8 MHz, timer yang digunakan adalah Timer1 16
bit, maka maksimum waktu yang dihasilkan adalah
Tmax = 1/fclock × (FFFFh + 1)
= 0,125 µs × 65536
= 0,00819 s
Untuk menghasilkan waktu yang lebih lama, dapat digunakan prescaler
misal yang digunakan 1024 maka waktu maksimum yang dihasilkan timer
adalah Tmax = 1/fclock × (FFFFh + 1) × N
= 0,125 µs × 65536 × 1024
= 8,3886 s
4. LANGKAH KERJA
a) Hubungkan salah satu port dengan display led.
b) Hubungkan switch kedalam pin T0, T1, dan T2.
c) Buatlah program dibawah dengan CodeVision AVR, kemudian download dan
amati hasilnya.
5. LISTING PROGRAM
Program 1
Program 2
Program 3
Program 4
6. PEMBAHASAN
1. Program 1
Program pertama bertujuan untuk membuat Timer 0 menggunakan interupsi
overflow timer 0 clock 8 Mhz. Baris keempat adalah inisialisasi variable lamp
dengan value 0xcc = 204 = 1100 1100.
Pada baris ke 86 , adalah inisialisasi port B sebagai output, baris selanjutnya nilai
register port B adalah sama dengan variable lamp yang sudah dinisialisai menjadi
variable global sebelumnya.
TCNT0 = 0x00 menset nilai register TCNT0 yaitu 0 (low). Untuk pemilihan
sumber clock, ditunjukan pada script “TCCR0 = 0x05” yang berarti menset clock
dengan nilai 1024. Untuk mengaktifkan interupsi yang berasal dari timer nilai
0x01 menggunakan perintah TIMSK.
Secara umum nilai Timer akan bertambah setiap masukan clock, dan akan
tersimpan di register TCNTx. Apabila TCNTx sudah penuh, masukkan clock
berikutnya menyebabkan nilai TCNTx kembali ke nol, kondisi seperti ini dapat di
manfaatkan sebagai sumber interupsi, selanjutnya disebut sebagai timer overflow,
ditandai dengan terjadinya set pada bit TOVx di register TIFR.
#asm adalah perintah dalam bahasa C untuk mengakses perintah assembler secara
langsung (“sei”) yang berarti “set interupsi” untuk mengaktifkan interupsi global.
Rutin yang akan dikerjakan saat terjadi interupsi Timer Overflow terdapat pada
baris ke sampai 7-9 , TCNT0 diset ulang nilainya menjadi 0. Kemudian
lamp=~lamp membalik logika variabel lamp dan nilai Port B sama dengan
variabel lamp.
Untuk Tmax
1
𝑇𝑚𝑎𝑥 = × (𝐹𝐹𝐹𝐹ℎ + 1)𝑥 𝑁
𝑓𝑐𝑙𝑘
1
𝑇𝑚𝑎𝑥 = 𝑥(65536)𝑥1024
8𝑥106
𝑇𝑚𝑎𝑥 = 8.388 𝑠
2. Program 2
Program kedua bertujuan untuk membuat delay menggunakan timer. Pada
praktikum sebelumnya delay dibuat menggunakan fungsi delay _ms dari library
delay.h, sedangkan pada praktikum saat ini, delay dibuat dari interupsi timer
overflow.
Rutin yang dijalankan program saat interupsi timer overflow adalah pada baris ke
6-12. Nilai TCNT0 diset seperti inisialisasi diawal, Nilai variable count selalu
bertambah (+1) /increment, apabila nilai count sama dengan 50, maka nilai lamp
adalah logika terbalik dari varibel lamp dan akan menjadi keluaran PORTB.
Kemudian nilai count di set kembali nilai nya menjadi 0.
Untuk menghitung waktu timer yang dinginkan menggunakan rumus =
Ttimer = (256 –Tcnt0)*N/fclk
Ttimer = (256-100)*1024/8x106
Ttimer = 0,019968 s = 0.20 s (untuk satu kali overflow)
3. Program 3
Program ketiga bertujuan untuk membuat counter mode fast PWM dengan TC 1.
Nilai OCR1A diset untuk mengatur pembuatan pwm, saat nilai TCNT > nilai
OCR maka pin OC akan mengeluarkan sinyal HIGH sebaliknya saat nilai TCNT <
nilai OCR maka pin OC akan mengeluarkan nilai LOW. Berdasarkan nilai
TCCR0 diketahui prescale pada (CS2, CS1, CS0) adalag 010 sehingga nilai N
adalah 8 .
Saat di run, gelombang osiloskop yang diterapkan pada led menghasilkan
outputan led akan menyala terang kemudian lama kelamaan akan meredup dan
pada akhirnya mati. Begitu terulang kembali.
7. KESIMPULAN
1. Mikrokontroller ATMEGA8535 memiliki 3 timer yaitu timer0, timer1 dan timer2
2. Praktikan berhasil melakukan percobaan 1-3
3. Timer dapat digunakan sebagai pewaktu , pencacah dan PWM (pulse width
modulation)
8. DAFTAR PUSTAKA
[1]Muhtadan. 2018. Modul1-PIO AVR cvavr. Yogyakarta :STTN-BATAN
9. LAMPIRAN
Percobaan 1
Percobaan 2
Percobaan 3