Anda di halaman 1dari 13

LAPORAN PRAKTIKUM MIKROKONTROLLER DAN PLC

TIMER COUNTER

Nama : Ranti Geotalia

Prodi : Elektronika Instrumentasi

Jurusan : Teknofisika Nuklir

Dosen Pengampu : Dr. Muhtadan

SEKOLAH TINGGI TEKNOLOGI NUKLIR


BADAN TENAGA NUKLIR NASIONAL
YOGYAKARTA
2019
1. TUJUAN

1. Praktikan mampu memahami fungsi timer/counter dalam mikrokontroler AVR


2. Praktikan mampu mengatur fungsi timer/counter
3. Praktikan mampu membuat program untuk mengendalikan timer/counter serta
untuk aplikasinya

2. DASAR TEORI

Mikrokontroler ATMega8535 memiliki beberapa pre-dimensi variable (register


yang terdapat pada datasheet) dengan fungsi tertentu. Tiga diantaranya adalah
Timer0, Timer1 dan Timer2.
1. Timer0
Merupakan timer 8 bit jadi dapat menghitung dari 0 sampai dengan 255 yang multi
fungsi, fitur-fitur dari 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
a. Dua buah unit pembanding
b. Dua buah register pembanding
c. Satu buah input capture unit
d. Dapat menghasilkan gelombang PWM
e. Sebagai pembangkit frekuensi
3. Timer2
Merupakan timer 8 bit jadi dapat menghitung dari 0 sampai dengan 255, dengan
fitur hampir sama dengan timer0.

Register Timer dan Counter


Masing-masing timer/counter pada ATMega8535/16/32 memiliki register tertentu
yang digunakan untuk mengatur mode dan cara kerjanya, namun terdapat dua
register yang digunakan bersama-sama oleh ketiga timer/counter tersebut yaitu
register TIMSK dan register TIFR. Selain itu, masing-masing timer/counter
memiliki register tersendiri yang akan dibahas pada subbab berikut.

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

1. Bit7, Timer/Counter2 Output Compare Match Interrupt Enable (OCIE2),


merupakan bit untuk mengaktifkan interupsi Output Compare Match
(OCM) Timer/Counter2.
2. Bit6, Timer/Counter2 Overflow Interrupt Enable (TOIE2), merupakan bit
untuk mengaktifkan interupsi Overflow Timer/Counter2.
3. Bit5, Timer/Counter1 Input Capture Interrupt Enable (TICIE1), merupakan
bit untuk mengaktifkan interupsi Input Capture Timer/Counter1.
4. Bit4, Timer/Counter1 Output Compare A Match Interrupt Enable
(OCIE1A), merupakan bit untuk mengaktifkan interupsi Output Compare
A Match (OCM) Timer/Counter1.
5. Bit3, Timer/Counter1 Output Compare B Match Interrupt Enable
(OCIE1B), merupakan bit untuk mengaktifkan interupsi Output Compare
B Match (OCM) Timer/Counter1.
6. Bit2, Timer/Counter1 Overflow Interrupt Enable (TOIE1), merupakan bit
untuk mengaktifkan interupsi Overflow Timer/Counter1.
7. Bit1, Timer/Counter0 Output Compare Match Interrupt Enable (OCIE0),
merupakan bit untuk mengaktifkan interupsi Output Compare Match
(OCM) Timer/Counter0.
8. Bit0, Timer/Counter0 Overflow Interrupt Enable (TOIE0), merupakan bit
untuk mengaktifkan interupsi Overflow Timer/Counter0.

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

Gambar 2.2 Register TIFR


1. Bit7, Timer/Counter2 Output Compare Match Flag (OCF2), merupakan
flag yang menunjukkan adanya interupsi Output Compare Match
Timer/Counter2.
2. Bit6, Timer/Counter2 Overflow Flag (TOV2), merupakan flag yang
menunjukkan adanya interupsi Overflow Timer/Counter2.
3. Bit5, Timer/Counter1 Input Capture Flag (ICF1), merupakan flag yang
menunjukkan adanya interupsi Input Capture Timer/Counter1.
4. Bit4, Timer/Counter1 Output Compare A Match Flag (OCF1A),
merupakan flag yang menunjukkan adanya interupsi Output Compare A
Match Timer/Counter1.
5. Bit3, Timer/Counter1 Output Compare B Match Flag (OCF1B),
merupakan flag yang menunjukkan adanya interupsi Output Compare B
Match Timer/Counter1.
6. Bit2, Timer/Counter1 Overflow Flag (TOV1), merupakan flag yang
menunjukkan adanya interupsi Overflow Timer/Counter1.
7. Bit1, Timer/Counter0 Output Compare Match Flag (OCF0), merupakan
flag yang menunjukkan adanya interupsi Output Compare Match
Timer/Counter0.
8. Bit0, Timer/Counter0 Overflow Flag (TOV0), merupakan flag yang
menunjukkan adanya interupsi Overflow Timer/Counter0.
Timer/Counter 8 bit (Timer0 dan Timer2)
Timer 8 bit dapat menghitung maksimal hingga 255 (00-FF) cacahan, dengan periode
setiap hitungan (clock) tergantung dari pengaturan prescaller-nya. Register yang
mengatur mode T/C dan prescaller-nya, digunakan register TCCRx (x adalah 0 atau
2). Contoh susunan TCCRx yaitu sebagai berikut (contoh untuk TCCR0)

Gambar 2.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, dengan susunan
sesuai Tabel 1

Table 1. Mode Timer0 dari konfigurasi WGM00 dan WGM01

WGM01 WGM00 Timer/Counter Update of TOV0


Mode Mode of TOP Flag Set
(CTC0) (PWM0) OCR0
Operation on
0 0 0 Normal 0xFF Immediate MAX
PWM, Phase
1 0 1 0xFF TOP BOTTOM
Correct
2 1 0 CTC OCR0 Immediate MAX
3 1 1 Fast PWM 0xFF TOP MAX
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, yaitu sesuai dengan Tabel 2,
Tabel 3 dan Tabel 4.
Table 2. Bentuk keluaran OC0 pada Mode Non-PWM

COM01 COM00 Fungsi

Operasi normal, OC0 tidak


0 0
terhubung pin

Kondisi toggle jika


0 1
TCNT0=OCR0

Bernilai 0 setelah
1 0
TCNT0=OCR0

Bernilai 1 setelah TCNT0-


1 1
OCR0
Table 3. Bentuk keluaran OC0 pada Mode Fast PWM
COM01 COM00 Fungsi

Operasi normal, OC0 tidak


0 0
terhubung pin

0 1 Tidak digunakan

Bernilai 0 setelah
1 0 TCNT0=OCR0 dan bernilai 1
saat TOP (puncak)

Bernilai 1 setelah TCNT0-


1 1 OCR0, dan bernilai 0 saat TOP
(puncak)

Register pada T/C 8 bit selain TCCRx adalah sebagai berikut


1. Timer/CounterX Register (TCNTx)
Register TCNTx berfungsi untuk menyimpan data cacahan
Timer/Counterx. Register ini memiliki ukuran 8-bit sehingga maksimal
nilai cacahan adalah 0xFF atau 255.

2. Output Compare Register x (OCR0)


Register OCRx berfungsi sebagai data pembanding yang akan selalu
dibandingkan dengan isi register TCNT0. Jika nilai TCNTx sama dengan
nilai OCRx maka akan terjadi keluaran pada pin OCx sesuai dengan mode
yang telah ditentukan di register TCCRx.

Timer Counter 16 bit (Timer1)


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.
1. Timer/Counter1 Control Register A
(TCCR1A) TCCR1A memiliki susunan
seperti pada Gambar 4.

Gambar 2.4 Susunan TCCR1A


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)

Gambar 2.5 Register TCCR1B


Bit 7, Input Capture Noise Canceler (ICNC1), merupakan bit untuk
mengaktifkan filter pada pin ICP1. Jika ICNC1 diset 1, berarti filter pada ICP1
diaktifkan.

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 4:3, WGM13:12, digunakan bersama-sama dengan WGM11:WGM10.

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.

5. Output Compare Register 1 B (OCR1BH dan OCR1BL)


Gabungan kedua register ini sering disebut dengan OCR1B yang berfungsi untuk
menyimpan data pembanding 16 bit yang selalu dibandingkan dengan register
TCNT1.
6. Input Capture Register 1 (ICR1H dan ICR1L)
Register ini digunakan untuk mengukur rentang waktu sebuah kejadian. Dengan input
capture dapat diukur frekuensi dan duty cycle suatu sinyal.

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

3. ALAT DAN BAHAN


a. DT-COMBO AVR-51 STARTER KIT
b. Driver PL2303 (Prolific USB-to-Serial)
c. Sofware CodeVision

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

Anda mungkin juga menyukai