Anda di halaman 1dari 16

LAPORAN PRAKTIKUM

MIKROKONTROLLER DAN PLC

“ TIMER COUNTER“
Disusun untuk memenuhi tugas mata kuliah Praktikum Mikrokontroller & PLC
yang diampu oleh : Dr. Muhtadan, M. Eng

Oleh :
Hasna Nurhanifa Rosyadi
021600471

PRODI ELEKTRONIKA INSTRUMETASI


JURUSAN TEKNOFISIKA NUKLIR
SEKOLAH TINGGI TEKNOLOGI NUKLIR
BADAN TENAGA NUKLIR NASIONAL
YOGYAKARTA
2018
A. TUJUAN
1. Memahami fungsi timer/counter dalam mikrokontroler AVR
2. Mampu mengatur fungsi timer/counter
3. Mampu mengatur dan membuat program untuk mengendalikan timer counter dan
aplikasinya

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 :

a. Dua buah unit pembanding


b. Dua buah register pembanding
c. Satu buah input capture unit
d. Dapa tmenghasilkan gelombang PWM
e. Sebagai pembangkit frekuensi
3. Timer2

Merupakan timer 8 bit jadidapatmenghitungdari 0 sampaidengan 255,


dengan fiturhampirsamadengan timer0.
Dari ketiga timer tersebut, diatursecara global olehbeberapa register yaitu register
TIMSK, TIFR. Sedangkansetiap timer memiliki register sendiri yang berfungsimengatur
timer/counter sepertiTCNTx, OCRx, TCCRx.

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 7.2.

Gambar 1. Register TIMSK


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 7.3.

1.

Gambar 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 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

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 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 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.

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
C. ALAT DAN
BAHAN
1. Minimum system Mikrokontroller ATmega8535/16/13
2. Adaptor
3. komputer yang terinstall program CV AVR dan program untuk download

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).

Dengan melihat tabel konfigurasi diatas, dimana nilai CS02-CS01-CS00 bertutut-


turut = 1-0-1 ,maka didapat nilai prescale sebesar 1024. Lanjut pada program
TIMSK=0X01; artinya register TIMSK diisi nilai 01, yang akan mengaktifkan bit ke nol
sesuai pada Gmbar 1. , sehingga program tersebut akan mengaktifkan interupsi Overflow
TC0. Program TIFR=0X00; artinya register TIFR diisikan 00 , dia akan menunjukkan
flag adanya interupsi Overflow pada TC0.
Berdasarkan konfigurasi register timer di atas dapat dilakukan perhitungan untuk
mencari waktu delay (Ttimer) lampu menggunakan rumus:
T = (TC0 – TCNT0) x N , dimana N=prescaller
fc

(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

Yogyakarta, 18 Oktober 2018


Praktikan

HASNA NURHANIFA ROSYADI

Anda mungkin juga menyukai