“ TIMER COUNTER“
Disusun untuk memenuhi tugas mata kuliah Praktikum Mikrokontroller & PLC
yang diampu oleh : Dr. Muhtadan, M. Eng
Oleh :
Hasna Nurhanifa Rosyadi
021600471
B. DASAR TEORI
Mikro keluarga AVR ATmega memiliki fasilitas beberapa pre dimensi variable
dengan fungsi tertentu yaitu timer0, timer1 dan timer2.
1. Timer0
Merupakan timer 8 bit jadi dapat menghitung dari 0 sampai dengan 255 yang
multi fungsi, fitur-fiturdari Timer0 adalah:
a. Counter 1 kanal
b. Timer di-nol-kan saat nilai perbandingan tercapai
c. Sebagai pembangkit gelombang PWM
d. Sebagai pembangkit frekuensi
2. Timer1
Merupakan timer 16 bit jadi dapat menghitung dari 0 sampai dengan 65535
yang memungkinkan program pewaktu menjadi lebih akurat, fitur yang ada pada
Timer1 antara lain :
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 7.3.
1.
Gambar 3. TCCR0
1. Bit7, Force Output Compare (FOC0), digunakan pada mode non PWM, jika diset 1
maka pin OC0 akan mengeluarkan sinyal sesuai yang ditentukan COM01 dan
COM00.
2. Bit6 dan Bit 3, Waveform Generation Mode (WGM00 dan WGM01),
digunakan untuk menentukan mode Timer/Counter0.
3. Bit 5 dan 4, Compare Match Output Mode (COM01 dan COM00), digunakan
untuk mengatur keluaran dari pin OC0. Pengaturan COM01 dan COM00 ini
berbeda untuk tiap modenya.
4. Bit2, 1, dan 0, Clock Select, merupakan kombinasi bit untuk mengatur prescale
Timer1 sebagai T/C 16 bit, memiliki nilai maksimum cacahan sebanyak 65536
cacahan atau 0x0000 – 0xFFFF. Register yang berkaitan dengan Timer1 yaitu
TCCR1A, TCCR1B, TCNT1H, TCNT1L, OCR1AH, OCR1AL, OCR1BH, OCR1BL.
Bit 7:6 merupakan COM1A1:0, dan bit 5:4 COM1B1:0, berfungsi untuk mengatur
pola keluaran pada pin OC1A dan OC1B.
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 2:0, Clock Select (CS12:0), merupakan bit untuk mengatur prescale yang
akan digunakan oleh Timer/Counter1.
D. LANGKAH
KERJA
1. Sambungkan port terhadap modul yang diinginkan (LED, Switch dll)
2. Buatlah program berikut pada program CV AVR dan compile kemudian download ke
ATmega dengan downloader.
3. Lakukan uji coba dan variasi nilai variable pada program dan bagaimana hasil pada
keluaran Atmega
E. PEMBAHASAN
a) Percobaan 1
Program
Percobaan pertama bertujuan untuk membuat timer pada TC0, dimana frekuensi
kristal (fc) yang digunakan sebesar 80Hz. Program diatas digunakan untuk mengatur
waktu nyala dan mati led (delay) menggunakan interupsi Timer 0 (8 bit) yang dapat
menghitung count maksimal dari 0-255 count, dengan periode setiap hitungan (clock)
tergantung dari pengaturan prescaller.
Timer memiliki register sendiri yang berfungsi mengatur timer/counter seperti
TCNTx. Pada kepala program, terdapat instruksi TCNT0=0X00, yang artinya inisialisasi
timer ke nol atau T0 (8 bit) yang akan diaktifkan sebagai timer untuk menghitung
maksimal hingga 0 cacahan. Data dikeluarkan lewat PORTB yang disambung ke led.
Pada tubuh program, secara berurutan akan melakukan inisialisasi PORT B yang
akan menampilkan output program melalui sambungan ke led. Kemudian, dilanjutkan
instruksi TCNT0=0X00; untuk inisialisasi Timer 0 sebagai timer yang digunakan. Lalu,
program TCCR0=0X05; dilihat pada tabel Gambar 3. Akan menghasilkan konfigurasi
bilangan biner 0000 0101 berarti Bit 2 dan 0 aktif sebagai Clock Select(mengatur
prescale).
(256 − 0) × 1024
𝑇=
8 × 106
𝑇 = 32,76 ms
Dari hasil perhitungan didapatkan nilai waktu delay sebesar 32,76 ms atau 0,33
sekon yang artinya dibutuhkan waktu sebesar 0,33 sekon dari kondisi led menyala hingga
mati atau sebaliknya.
Hasil percobaan pertama, lampu led akan terus berkedip setiap 0,33 sekon
dikarenakan program di atas merupakan program loop yang ditandai dengan instruksi
while(1).
b) Percobaan 2
Program
Percobaan kedua, bermaksud untuk membuat timer TC0, fc=8Mhz untuk delay 1 detik.
Program dijalankan untuk mengatur waktu nyala dan mati led menggunakan interupsi timer
overflow dengan selang waktu 1 detik
Pada kepala program diisikan instruksi TCNT0=0X64; count++; if (count==50) berarti
nilai 64 yang diisikan pada TC0, apabila dalam desimal bernilai TCNT=100 dan saat nilai
cacah mencapai 50 cacahan maka ada inceasement.
Pada tubuh program, dilakukan inisialisasi PORTB sebagai output dimana akan terjadi
invers pada nyala led jika telah memenuhi program if (count==50) atau separuh cacah total
TCNTnya. Instruksi selanjutnya, sama seperti percobaan pertama
Dari parameter-parameter tersebut dapat dilakukan perhitungan :
T = (256 – TCNT0) x TCCR
fc
Sehingga didapatkan waktu untuk sekali overflow (satu kali cacah), ialah 20 ms
karena pada program diberi pengkondisian untuk cacah sebanyak 50 maka selang waktu
yang didapatkan adalah sebesar 2 ms dikalikan 50 atau sebesar 1 sekon.
Hasil percobaan kedua ini ialah kondisi led yang semula 1100 1100 akan menjadi
0011 0011 bergantian dengan program loop dari isntruksi while (1) per 1 sekon.
c) Percobaan 3
Program
Percobaan ketiga dimaksudkan untuk membuat program counter mode fast PWM
untuk timer 0 (8 bit) yang keluarannya diamati menggunakan simulasi LED yeng
terhubung dengan PORT B.
Dari program di atas dapat dilihat langsung pada tubuh program bahwa, PORTB diset
sebagai output . Selanutnya instruksi TCCR0=0X6A; bila dibinnerkan 0101 0110 berdasar
Gambar 3. dan konfigurasi berikut :
Mengaktifkan mode timer Fast PWM karena nilai WGM00 dan WGM01 dari TCCR0
bernilai 11. Dilakukan set TCNT0 = 0. Lalu, nilai OCR0 yang bernilai 127 dapat diamati
pada keluaran pada pin B3. Sehingga dengan rumus duty cycle hasil yang didapatkan
adalah lampu led pada pin B3 akan langsung meredup setengah dari kondisi awal. Hal
tersebut disebabkan karena persentase duty cycle mencapai 50%
𝑂𝑅0
𝑦 𝑦𝑐𝑒 = ( ) × 100%
255
127
= ( ) × 100%
255
= 49,8039% ≈ 50 %
Selain itu praktikan juga membuat program timer mode fast PWM dengan delay
tertentu untuk meredupkan LED secara bertahap. Dalam hal ini nilai OCR ditentukan oleh
A yang nilainya dimulai dari 0 dan akan bertambah hingga 254, sehingga dengan rumus
duty cycle hasil yang didapatkan :
𝑂𝑅0
𝑦 𝑦𝑐𝑒 =( ) × 100%
255
254
= ( ) × 100%
255
= 99%
Hasilnya adalah lampu led pada pin B3 akan meredup secara bertahap hingga kondisi
sangat redup. Hal tersebut disebabkan karena persentase duty cycle mencapai 99%
karena common anoda maka led akan meredup dengan delay sebesar 40 ms.
d) Percobaan 4
Program
Percobaan keempat program yang mengatur nyala dan mati led saat push button pada
PORT B ditekan 10 kali menggunakan interupsi timer overflow dan led pada PORT D
akan menyala bergantian hingga mencapai kondisi overflow nyala sebanyak 5kedip flip
flop.
Pada kepala program, instruksi konfigurasi pengaturan register timer nilai awalnya
TCNT0=0XF6 (1111 0110), kemudian untuk TCCR0=0X07 (0000 0111),
serta TIMSK=0X01(0000 0001). Dari konfigurasi tersebut didapatkan beberapa
parameter seperti nilai prescale 111 yang artinya menggunakan sumber clock eksternal
(PB0), kemduian TCNT bernilai 246 sehingga apabila push button ditekan counter akan
mencacah naik mulai dari F6 ke F7, F8, F9, FA, FB, FC, FD, FE, dan saat mencapai FF
akan terjadi overflow yang ditandai dengan LED menyala bergantian dengan delay 500ms
selama 5 kali lalu akan kembali pada keadaan awal yaitu F6. Hal tersebut terjadi karena
kapasitas timer/counter 0 bernilai 8 bit yang artinya mampu mencacah maksimal 255
sehingga pada cacah ke-256 (FF) akan terjadi overflow.
Namun, ada efek bouncing , dimana sebelum tombol ditekan 10 kali program usah
menjalankan flip flop. Hal ini diakrenakan ada faktor mekanis internal dari push button.
F. KESIMPULAN
1. Mikrokontroller AT Mega 8535 memiliki 3 variabel Timer/Counter yaitu TC1 (8bit) ,
TC2 (16 bit), dan TC 3 (8 bit).
2. Setiap timer/counter dikontrol menggunakan register global TIMSK dan TIFR dan
register khusus seperti TCNTx, OCRx, TCCRx.
3. Timing pulsa clock timer berbanding terbalik dengan nilai frekuensi kristal (fc) namun
sebanding dengan nilai prescaller (N).
G. DAFTAR PUSTAKA
Muhtadan. 2018. Modul2-Timer Counter AVR in cvavr. Yogyakarta :STTN-BATAN