Anda di halaman 1dari 8

Percobaan II

Timer, Counter, Interrupt


RAFI NUANSAH (13116099)
Asisten : Dinur Wahyu Pratiwi (13115010)
Tanggal Percobaan : 11/03/2019
EL3203 Praktikum Sistem Mikroprosesor
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

Abstrak — Pada praktikum kali ini kami menggunakan II. LANDASAN TEORETIS
mikrokontroller yang jenisnya ATmega8535. Dengan
mempelajari timer, counter dan interupt pada
mikrokontroller baik yang menggunakan switch maupun 2.1. TIMER/COUNTER
tidak kami dapat mengatur suatu program dengan Timer adalah sarana untuk menghitung durasi
menggunakan waktu yang diinginkan yang didapat dari kejadian seperti halnya stopwatch atau fungsi
hasil bagi antara frekuensi mikrokontroller dengan nilai waktu yang sumber clocknya berasal dari clock
Prescaller. Aplikasi yang digunakan untuk pemrograman internal. Sedangkan Counter merupakan fungsi
yaitu dengan menggunakan WinAVR dalam Bahasa C. perhitungan yang sumber clocknya berasal dari
selain itu praktikum kali ini salah satunya bertujuan clock external pengawal mikro.
untuk mengaplikasikan external interrupt pada AVR Timer/Counter ialah salah satu fitur yang terdapat
dengan menggunakan WinAVR. pada mikrokontroller yang mempunyai fungsi
Kata kunci : Timer, Counter, Interrupt, Prescaller dan penyacah nilai berdasarkan nilai frekuensi yang
WinAVR. digunakan.
Timer/counter dalam Atmega8535 ada 3 yaitu:
I. PENDAHULUAN a. Timer/counter 0
ada praktikum ini, kami melakukan beberapa Merupakan 8 bit timer/counter, pengaturan
Ppercobaan yaitu percobaan pada mikrokontroler Timer/Counter 0 diatur oleh TCCR0
(Timer/Counter control register 0) seperti
ATmega8535 yang menggunakan Port A sebagai input,
dan output pada Trainer Board. Dalam hal ini, sistem berikut ini:
minimum yang digunakan saat praktikum yaitu
ATmega8535 sebagai kit praktikum. Sehingga
diharapkan setelah melakukan percobaan ini mahasiswa
Gambar 2.1. Register TCCR0
dapat memahami dari tujuan pada praktikum ini.
Tujuan dari praktikum ini adalah:
▪ Bit 7 – FOC0: Force Output Compare
1. Memahami Datasheet ATMega8535. ▪ Bit 6, 3 – WGM01:0: Waveform
2. Mampu Membuat Aplikasi timer atau counter dan Generation Mode
interrupt pada AVR dengan menggunakan Bahasa ▪ Bit 5:4 – COM01:0: Compare Match
Pemrograman C pada WinAVR. Output Mode
3. Mampu membuat Aplikasi External Interrupt pada ▪ Bit 2:0 – CS02:0: Clock Select
AVR dengan menggunakan bahasa pemrograman Ketiga bit tersebut memilih sumber clock yang
C pada WinAVR. akan digunakan oleh timer/counter.

Adapun beberapa mode yang digunakan untuk


melakukan operasi pada saat melakukan
pemrograman yang di atur dalam konfigurasi mode
operasi yang ada pada datasheet Hal. 83 seperti Register TCCR2 Bit 2,1,0 (CS22; CS21,
pada table dibawah ini. CS20): Clock Select. Ketiga bit ini memilih
Tabel 2.1. konfigurasi mode operasi sumber clock yang akan digunakan oleh
Timer/Counter.

Dalam Timer/counter juga memiliki register


lainnya yang penting untuk digunakan seperti:
a. TCNT0
Register TCNT0 adalah register yang dimiliki
oleh timer 0 sebagai pencacah atau counter.
Dalam menentukan pin OCO memiliki beberapa Range dari register TCNT0 ini sebesar 8 Bit.
peraturan yang misalnya untuk mode non – PWM Register ini juga bertugas mencacah nilai 0
itu dapat di atur sesuai dengan yang ada pada sampai 255.
datasheet seperti pada table dibawah ini. Gambar register dapat dilihat Seperti pada
Tabel 2.2. Pengaturan Perilaku Pin OCO gambar dibawah ini.

Gambar 2.2. Register TCNT0

Dalam timer/counter pun ada pula description yang b. OCR0 (Output Compare Register)
menjelaskan setiap clock yang ada pada setiap CS, Register OCR0 (Output Compare Register)
baik dari CS02 hingga CS00. Seperti pada table adalah register yang selalu dicompare secara
dibawah ini. terus menerus dengan register TCNT0. Pada
Tabel 2.3. Clock Select Bit Description saat nilai dari register OCR0 dan TCNT0 sama,
dapat kita sebagai interupsi atau bias
digunakan outputnya menjadi PWM di pin
OCO. Gambar register dapat dilihat Seperti
pada gambar dibawah ini.

Gambar 2.3. Register OCR0

c. TIMSK (Timer/Counter Interrupt Mask


b. Timer/counter 1 Register)
Merupakan 16 – bit timer/counter sehingga Register TIMSK (Timer/Counter Interrupt
terdapat perbedaan cara pengaksesannya Mask Register) adalah register yang berisi bit -
dengan 8-bit timer/counter. 16 – bit (1 word) bit untuk mengaktifkan interupsi pada setiap
timer/counter harus diakses dengan 8 bit high timer. Gambar register dapat dilihat Seperti
dan 8 bit low. Pengaturan Timer/Counter1 juga pada gambar dibawah ini.
diatur oleh register TCCR1B. Bit 2,1,0 (CS1
2:0): Clock Select. Ketiga bit tersebut
(CS2/CS1/CS0) mengatur sumber clock yang
digunakan untuk Timer/Counter1.
Gambar 2.4. Register TIMSK
c. Timer/counter 2
Timer/Counter2 adalah 8 – bit Timer/Counter, Bit 0 TOIE0 (Timer/Counter 0 Overflow
pengaturan pada Timer/Counter2 diatur oleh Interrupt Enable) Adalah bit yang apabila kita
TCCR2 (Timer/Counter Control Register 2). set 1 digunakan untuk mengaktifkan interupsi
overflow timer 0. Overflow adalah suatu
keadaan ketika cacahan telah mencapai puncak Tabel 2.4. kondisi pemicu interupsi
(0xFF = 255) sesuai dengan range dari timer ISCx1 ISCx0 Pemicu Interupsi
yang digunakan. 0 0 Level rendah pada pin INT0 atau INT1
Bit 1 OCIE0 (Timer/Counter 0 Output 0 1 Perubahan level pada pin INT0 atau INT1
Compare Interrupt Enable 0) adalah bit yang 1 0 Transisi turun pada pin INT0 atau INT1
apabila kita set 1 digunakan untuk 1 1 Transisi naik pada pin INT0 atau INT1
mengaktifkan interupsi Compare match atau
interupsi ketika nilai TCNT0 sama dengan nilai 2.2. INTERRUPT
OCR0. Interrupt adalah suatu kejadian atau peristiwa
yang menyebabkan mikrokontroller berhenti
d. TIFR sejenak untuk melayani interrupt tersebut.
Register TIFR adalah register flag dari setiap Yang harus diperhatikan saat menggunakan
interupsi yang digunakan. Sebagai contoh interrupt adalah harus mengetahui sumber -
apabila kita menggunakan interupsi Overflow, sumber interupsi, vector layanan interupsi dan
maka ketika cacah telah mencapai nilai puncak
yang terpenting rutin layanan interupsi, yaitu
(overflow) maka flag TOV0 akan set menjadi
1. Berikut isi dari register TIFR.
subrutin yang akan dikerjakan bila terjadi
interupsi.

2.3. PRESCALLER
Prescaller ialah nilai pembagi yang besarnya ialah
Gambar 2.5. Register TIFR 1,8,32,64,128,256,1024.
Sebelum kita melakukan setting timer, maka
Adapun register – register yang digunakan untuk haruslah menentukan nilai delay yang ingin
keperluan external interrupt yaitu: digunakan sehingga dapat menentukan berapa nilai
• Register MCUCR TNCTnya dengan rumus dibawah ini.
Register MCUCR adalah register yang
mengatur pemicu interupsi dari fungsi
MCU secara umum atau menentukan mode
interupsi eksternal. Berikut adalah isi dari
Dimana:
register MCUCR.
• TCNT : Nilai Timer (Hexsa)
• Fclk : Frekuensi clock (crystal) yang
digunakan (Hz)
• Ttimer : Waktu Timer yang diinginkan.
• N : Prescaller
Gambar 2.6. Register MCUCR • 1 + FFFFh : Nilai max timer adalah
FFFFh dan Overflow saat FFFFh ke 0000h
Bit penyususnnya yaitu:
Bit ISC11 dan ISC10 bersama – sama 2.4. WinAVR
menentukan kondisi yang dapat WinAVR adalah seperangkat software open
menyebabkan interupsi eksternal pada pin source, termasuk di dalamnya adalah Programmers
INT1. Dan Bit ISC01 dan ISC00 bersama Notepad dan AVRDude, untuk membuat,
– sama menentukan kondisi yang dapat mengcompile dan mendownload program Atmel
menyebebkan interupsi eksternal pada pin AVR dalam bahasa C.
INT0. Keadaan selengkapnya terlihat pada
table berikut:
III. METODOLOGI
A. Alat dan Bahan
1. Starter kit AVR (1 buah)
2. Percobaan 2.B
2. Usbasp (1 buah)
3. Laptop (1 buah) buatlah program yang ada pada
modul menggunakan WinAVR
4. WinAVR
Compile dan transfer melalui
5. Khazamma Programmer aplikasi khazammah ke kit
6. Kabel Jumper (Secukupnya) Praktikum dengan file.hex
7. Kristal 4 MHz (1 buah) lihat hasil pada kit output LED
akan menyala bergantian selama 2
kali penekanan switch.
Langkah Percobaan
modifikasi sesuai modulo dan
Persiapan catat pada buku BCP.

hubungkan kit praktikum 3. Percobaan 2.C

hubungkan training board dengan buatlah program yang ada pada


laptop/PC menggunakan modul menggunakan WinAVR
downloader
Compile dan transfer melalui
hubungkan port A pada port aplikasi khazammah ke kit
output (Trainer Board) Praktikum dengan file.hex
lihat hasil pada kit output LED
pastikan Kristal menggunakan 4 akan menyala, berbeda ketika
MHz dengan cara mengatur fuse terjadi interrupt.

modifikasi sesuai modulo dan


catat pada buku BCP.
1. Percobaan 2.A
buatlah program yang ada pada IV. HASIL DAN ANALISIS
modul menggunakan WinAVR
Pada percobaan I/O Dasar ini di dapat data seperti pada
masing – masing percobaan di bawah ini:
Compile dan transfer melalui
aplikasi khazammah ke kit 1. Percobaan 2.A
Praktikum dengan file.hex Pada Percobaan ini kami menggunakan Port A
yang digunakan sebagai input. Yang digunakan
lihat hasil pada kit. output LED saat praktikum kami melihat apakah hasil pada
akan menyala bergantian selama
1 detik. pemrograman yang telah di buat benar atau tidak,
kami menggunakan LED yang di sambung ke
modifikasi sesuai modulo dan port A dari setiap pin yang ada. Seperti pada
catat pada buku BCP. script yang ada pada gambar dibawah ini:
Pada percobaan ini kemudian membuat program
dengan aturan menggunakan rumus dalam
mencari waktu yang telah diberikan rumusnya
oleh asisten praktikum. Seperti dibawah ini.
𝑓
−1
𝑁

Dimana:
F adalah frekuensi
N adalah Prescallar

Kemudian kami menggunakan nilai Frekuensi


pada praktikum sebesar 4MHz dan Prescalar
sebesar 256. sehinga perhitungan seperti dibawah
ini:
𝑓
−1
𝑁

4000000
− 1 = 15624
256

Karena hasil masih bilangan decimal dan pada


pemrograman menggunakan heksa maka harus
dikonversikan terlebih dahulu. Sehingga hasil
Gambar 4.1. Script Pemrograman percobaan 2A dari bilangan (15624)10 = 3D08h.
Yang kemudian kami masukkan hasil heksa
tersebut kedalam program yang terlihat seperti
pada script dibawah ini:

Gambar 4.4. scrip menggunakan hasil


perhitungan untuk menentukan waktu selama 1
detik

Pada percobaan ini hasil yang di dapat sama


Gambar 4.2. Hasil Praktikum port A sebagai dengan gambar 4.2. dan gambar 4.3. yang
input dengan bilangan 0x0fh membedakan hanya program pada bagian
OCR1AH dan OCR1AL yang menentukan
lamanya lampu atau kecepatannya lampu
bergantian hidup sebanyak empat di kanan dan 4
dikiri. Dengan pin yang digunakan sebelah kanan
dari pin 0 – 3 dan sebelah kiri dari pin 4 – 7
dengan inputan dari port A dan bantuan tegangan
dari pin VCC pada kit.

2. Percobaan 2 B
Pada percobaan kedua ini sama dengan
Gambar 4.3. Hasil Praktikum port A sebagai percobaan yang pertama. Hanya saja yang
input dengan bilangan 0xf0h membedakan pada percobaan kedua ini
menggunkan switch pada pemrogramannnya
dengan penekanan 2 kali penekanan tombol
interrupt dan counter input. Seperti pada gambar
script di bawah ini.

Gambar 4.7. lampu LED saat menyala dan saat


setelah ditekan 2 kali

Ini dapat terjadi karena adanya perbedaan antara


TCNT0 dan OCR0. Dengan diganti nilai ingin
kita inginkan maka tombola tau penekanan pada
pemrograman ini pun akan berbeda dengan nilai
yang lainnya.
Pada pemrograman ini kami menggunakan 4 kali
penekanan yang didapat dari aturan pada modul
yang menggunakan mod setiap kelompok + 2.
Maka pada perhitungannya kami mendapatkan
nilai sebagai patokan penekanan yang harus kami
cari adalah:
5
= 𝑠𝑖𝑠𝑎 2 + 2 = 4
3
Maka yang harus kami cari adalah penekanan
sebanyak 4 kali penekanan pada pemrograman.
Adapun scipt yang kami ganti seperti pada
Gambar 4.5. script menggunakan switch
gambar dibawah ini.
Pada percobaan ini rangkaian yang digunakan
sama dengan percobaan 1 hanya saja
menggunakan switch dengan 2 kali penekanan.

Gambar 4.8. script yang menggunkan 4 kali


penekanan

Pada pemrograman kami menggunakan nilai


TCNT0 sebesar 123 dan 0CR0 sebanyak 126
yang kami ubah karena OCR0 adalah register
yang selalu di compare secara terus menerus
dengan register TCNT0. Pada saat nilai dari
register OCR0 san TCNT0 sama, makan terjadi
sebagai interupsi atau dapat digunakan outputnya
Gambar 4.6. lampu LED saat menyala dan menjadi PWM di pin OCO. Sehingga untuk
belum ditekan mendapatkan nilai penekanan sebanyak 4 kali
penekanan pada tombol kita dapat mengganti
pada bagian script yg ada pada gambar 4.8.
3. Percobaan 2 C
Pada percobaan ketiga ini yaitu membuat aplikasi
interrupt dengan timer/counter dengan
menggunakan prescallar 1024 seperti pada
gambar script dibawah ini.

Gambar 4.11. Rangkaian pada saat PORT A


bernilai 0b10101010

Gambar 4.12. Rangkaian pada saat PORT A


bernilai 0b01010101

Pada gambar tersebut terlihat bahwa lampu LED


akan menyala secara bergantian dengan delay
waktu tertentu dan interupsi selama waktu
tertentu. Pada gambar 4.10 lampu mati semua
pada saat mulai karena untuk jeda antara lampu
berkedip secara bergantian selama waktu yang
telah di program dengan lampu hidup secara
Gambar 4.9. script menggunakan push button berselang seling satu. Ini dikarenakan pada
pemrograman perintah TIMSK yang ada pada
Pada percobaan ini hasil yang didapat pada script script tersebut merupakan register yang berisi bit
terlihat pada gambar dibawah ini. – bit yang gunanya untuk mengaktifkan interupsi
pada setiap timer. Dimana bit pada TIMSK pun
memiliki 2 bagian yaitu ada yg overflow interrupt
enable dan output compare interrupt enable 0.
Pada bit 0 TOIE0 yaitu apabila kita set digunakan
untuk mengaktifkan interupsi overflow timer 0.
Sedangkan Overflow adalah suatu keadaan ketika
cacahan telah mencapai puncak (0xff = 255
sesuai dengan range timer yang digunakan).
Sedangkan bit 1 OCIE0 yaitu apabila kita set 1
digunakan untuk mengaktifkan interupsi compare
Gambar 4.10. Rangkaian pada saat awal lampu match atau interupasi ketika nikai TCNT sama
LED mati semua dengan nilai OCR0. Maka dari itu lampu LED
dapat menyala seperti pada gambar 4.11. dan
4.12.
V. KESIMPULAN 5. Dapat membuat aplikasi interrupt dengan
Dari hasil praktikum yang telah di lakukan dapat menggunakan Bahasa C dari Salah satu
disimpulkan bahwa: register external yang digunakan yang ada
1. Terjadinya sebagai interupsi dikarenakan pada interrupt seperti register MCUCR.
OCR0 yang selalu dicompere oleh TCNT0. Karena register ini yang sebagai register
2. Saat nilai TCNT lebih besar dari nilai OCR pemicu intrerrupt dari fungsi MCU secara
maka pin OC mengeluarkan sinyal High. umum.
Sedangkan nilai TCNT lebih kecil dari
nilai OCR maka pin OC mengeluarkan Referensi
• Modul Praktikum Sistem Mikroprosesor.
sinyal Low. ITERA. 2019
3. Nilai OCR dapat diset untuk mengatur • www.alldatasheet.com
pembentukan PWM. • Wardhana,Lingga.2006.Belajar sendiri
4. Timer adalah relay yang memiliki delay mikrokontroller AVR seri
ATMega8535.Yogyakarta:Andi
yang bisa diatur didalam ATmega8535.

Anda mungkin juga menyukai