Anda di halaman 1dari 9

Percobaan II

TIMER, COUNTER DAN INTERRUPT


Gomgom Silalahi (14S16048)
Tanggal Percobaan : 08/32/2019
[EL 3102] [Praktikum Elektronika II]
[Lab Dasar teknik Elektro] – Teknik Elektro
Institut Teknologi Del

berikutnya, yaitu mulai dari $20 sampai $5F. Register tersebut


Abstrak --- In the Timer, Counter practice, this Interrupt is merupakan register yang khusus digunakan untuk mengatur
learned about how the timer & counter works on ATMega8535 fungsi terhadap berbagai peripheral mikrokontroler, seperti
which is a basic function to produce delay. The implementation kontrol register, timer/counter, fungsi fungsi I/O, dan
is done by testing such as delay with timer / counter, external sebagainya. Register khusus alamat memori secara lengkap
clock as a counter, application interrupt with timer / counter, dapat dilihat pada tabel dibawah. Alamat memori berikutnya
and external interrupt. digunakan untuk SRAM 512 byte, yaitu pada lokasi $60 sampai
dengan $25F.
Keyword : Timer, Counter , Interrupt, CVAVR , ATmega
8535
A.Fitur ATmega8535
 Sistem processor 8 bit berbasis RISC dengan
I. PENDAHULUAN kecepatan maksimal 16 MHz.
ATMega adalah sebuah sistem minimum yang sering digunakan
 Ukuran memory flash 8KB, SRAM sebesar 512 byte,
sebagai prosesor sebuah sistem sederhana. Dalam hal ini, sistem
EEPROM sebesar 512 byte.
minimum ATMega, khususnya ATMega 8535 digunakan sebagai
 ADC internal dengan resolusi 10 bit sebanyak 8
kit praktikum.
channel
Timer/counter dapat digunakan dan diatur dengan cara mengatur
 Port komunikasi serial USART dengan kecepatan
timer register. Timer berfungsi sebagai pencacah untuk fungsi
maksimal 2.5 Mbps
clock internal maupun eksternal. Mikrokontroler dapat menerima
interrupt dan akan segera melakukan instruksi lain ketika sedang  Mode Sleep untuk penghematan penggunaan daya
menjalankan suatu tugas atau instruksi utama. listrik
Tujuan dari praktikum ini adalah:
B. Konfigurasi pin ATmega8535
 Memahami datasheet ATMega 8535;
 Mampu membuat aplikasi Timer/Counter dan  VCC merupakan pin yang berfungsi sebagai pin
Interrupt pada AVR dengan menggunakan bahasa masukan catudaya
pemrograman C pada WinAVR; serta  GND merupakan pin Ground
 Mampu membuat aplikasi External Interrupt pada  Port A (PA0...PA7) merupakan pin I/O dan pin
AVR dengan menggunakan bahasa pemrograman C pada masukan ADC
WinAVR.  Port B (PB0...PB7) merupakan pin I/O dan pin yang
mempunyai fungsi khusus yaitu Timer/Counter,
II. LANDASAN TEORETIS komparator Analog dan SPI
1. ATMega8535
ATMega8535 merupakan salah satu mikrokontroler 8 bit
buatan Atmel untuk keluarga AVR yang diproduksi secara
massal pada tahun 2006. Karena merupakan keluarga AVR,
maka ATMega8535 juga menggunakan arsitektur RISC.
ATmega8535 memiliki ruang pengalamatan memori data dan
memori program yang terpisah. Memori data terbagi menjadi 3
bagian yaitu : 32 buah register umum, 64 buah register I.O, dan
512 byte SRAM internal. Register untuk keperluan umum
menempati space data pada alamat terbawah yaitu $00 sampai
$1F. Sementara itu register khusus untuk menangani I/O dan
kontrol terhadap mikrokontroler menempati 64 alamat
 Port C (PC0...PC7) merupakan port I/O dan pin yang
mempunyai fungsi khusus, yaitu komparator analog
dan Timer Oscillator
 Port D (PD0...PD1) merupakan port I/O dan pin fungsi
khusus yaitu komparator analog dan interrupt
eksternal serta komunikasi serial
 RESET merupakan pin yang digunakan untuk mereset
mikrokontroler
 XTAL1 dan XTAL2 merupakan pin masukan clock V. GAMBAR BLOK DIAGRAM TIMER/COUNTER
eksternal
 AVCC merupakan pin masukan untuk suplai tegangan
ADC Timer memiliki beberapa mode, yaitu mode normal, mode
AREF merupakan pin masukan tegangan referensi untuk ADC capture pada timer 1, mode normal sebagai counter, dan mode
pwm. Mode normal diaktifkan dengan memberi nilai 0 pada
WGM01 dan WGM00 pada register TCCR
2. TIMER/COUNTER
Timer/Counter adalah suatu komponen yang tertanam didalam
microcontroller yang digunakan sebagai pewaktu. Dengan 3. PRESCALER
timer/counter, pengguna microcontroller dapat menentukan Prescaler adalah sirkuit penghitungan elektronik yang
kapan suatu perintah dijalankan. Timer/counter dapat digunakan untuk mengurangi sinyal listrik frekuensi tinggi ke
digunakan sebagai oscilator, PWM, ADC, dan lain-lain. Timer frekuensi yang lebih rendah oleh divisi integer. Prescaler
bekerja dengan memberikan prescaling (pembagi frekuensi) mengambil frekuensi clock timer dasar (yang mungkin
pada clock microcontroller atau clock eksternal. Digunakan merupakan frekuensi clock CPU atau mungkin beberapa
prescaling untuk mendapatkan frekuensi yang diinginkan. frekuensi lebih tinggi atau lebih rendah) dan membaginya
Register yang digunakan untuk operasi Timer/Counter pada dengan beberapa nilai sebelum memasukkannya ke timer,
AVR adalah TCNT, TCCR, TIMSK, TIFR, dan OC. TCNT sesuai dengan bagaimana register prescaler dikonfigurasikan.
Nilai prescaler yang dapat dikonfigurasi mungkin terbatas pada
adalah register pencacah dari 0 hingga nilai maksimum yang beberapa nilai tetap (kekuatan 2), atau mereka mungkin nilai
dapat ditentukan, TCCR berfungsi untuk pengaturan mode integer dari 1 hingga 2 ^ P, di mana P adalah jumlah bit
operasi timer/counter, TIMSK berfungsi untuk memilih prescaler. Tujuan dari prescaler adalah untuk memungkinkan
timer/counter berapa yang aktif, TIFR berfungsi untuk timer untuk di-clock pada kecepatan yang diinginkan pengguna.
mengetahui adanya interupsi akibat operasi counter timer, dan Untuk pengatur waktu yang lebih pendek (8 dan 16- bit), sering
register OC untuk menyimpan nilai pembanding dengan nilai kali akan ada tradeoff antara resolusi (resolusi tinggi
pada register TCNT. memerlukan laju jam tinggi) dan kisaran (laju jam tinggi
menyebabkan timer meluap lebih cepat). Sebagai contoh,
seseorang tidak dapat (tanpa beberapa trik) mencapai resolusi 1
μs dan periode maksimum 1 detik menggunakan timer 16-bit.
Dalam contoh ini menggunakan resolusi 1 μs akan membatasi
periode hingga maksimum 65ms. Namun prescaler
memungkinkan penyesuaian rasio antara resolusi dan periode
maksimum untuk mencapai efek yang diinginkan.

IV. GAMBAR REGISTER TIMER0

Timer berfungsi sebagai counter ketika sumber clock dari


external/pin T. Pemilihan sumber clock ada pada bit CS pada
register TCCR
pada gcc bisa menghitung delay pada waktu yang
diberikan hanya dengan merubah variabel fungsi
III. HASIL DAN ANALISIS sementara untuk prosedur delay pengubahan waktu delay
yang diinginkan tidak bisa di dalam main program
A. Tugas 1 : Delay dengan Timer/Counter karena itulah ia merupakan prosedur.
(Tugas II.A.1) Dari praktikum yang telah dilaksankan bahwa percobaan
yag dilakukan sesuai dengan yang diinginkan yaitu LED
Pada tugas ini akan melakukan percobaan praktikum menyala dan mati seluruhnya dengan delay 1 detik.
membuat delay dengan Timer/Counter dan outputnya
merupakan LED./Counter dan outputnya merupakan LED.
Inisialisasi awal yaitu DDRB 0xFF (Output). Untuk nilai (Tugas II.A.2)
TCNT1 yaitu 49910 dari persamaan :
Pada tugas kedua akan dilakukan percobaan praktikum
16.000.000
OCR = n x membuat delay dengan Timer/Counter dan outputnya
𝑁
merupakan LED./Counter dan outputnya merupakan LED
16
TCNT1 = 22 - OCR tetapi delaynya diubah menjadi :
𝑛=𝑁𝑜𝑚𝑜𝑟 𝑘𝑒𝑙𝑜𝑚𝑝𝑜𝑘 𝑚𝑜𝑑 9+1
7 6 5 4 3 2 1 0 Dimana N= 2 sesuai dengan mod nomor kelompok 10
Delay (1s) ditambah 1.
7 6 5 4 3 2 1 0

Pada kode program tertulis DDRA =0xFF; yang


menunjukkan bahwa PORT A digunakan sebagai
inisialisasi output. Pada algoritma prosedur delay,
register TCNT 1 di set bernilai nol. TCNT merupakan
register yang berfungsi untuk mencacah counter dari
nilai nol hingga maksimum. Kemudian waktu yang
diinginkan dalam delay adalah satu detik, maka nilai
register OCR1A harus di set dengan banyaknya getaran
yang dilakukan dalam satu detik di mana progra m
menggunakan frekuensi 7372800Hz dan prescaler 256.
Satu hal yang perlu diperhatikan pada progra m ialah
penggunaan prosedur delay dan bukan menggunakan
fungsi delay bawaan. Jika kita perhatikan, terdapat
perbedaan antara prosedur delay yang dibuat pada
program dan fungsi bawaan gcc. Perbedaannya tersebut
ialah penggunaan clock. Jika menggunakan fungsi delay
bawaan maka frekuensi clock yang digunakan ialah
frekuensi CPU sementara untuk delay frekuensi yang
digunakan bisa berbeda - beda. Selain itu, fungsi delay
Disini analisi yang dihasilkan sama seperti pada tugas II keypad ditekan tanpa dilepas, program tidak menganggap itu
A.1 merupakan clock, sedangkan keypad interrupt ditekan, program
B.Tugas 2 : External Clock sebagai Counter baru menganggapnya sebagai clock.
(Tugas II.B.1)
Pada percobaan kali ini, progra m akan dibuat dengan (Tugas II.B.2)
memanfaatkan clock sebagai timer. Tombol interrupt
Pada tugas II B 2akan melakukan percobaan praktikum
push button akan dijadikan acuan. Counter akan
membuat program counter menggunakan external clock dan
menghitung sebanyak beberapa kali tombol ini ditekan
keypad untuk interrupt dalam menambah counter tetapi
dan setelah penekanan tersebut progra m utama akan
outputnya ditambah LED.
berubah.

Pertama-tama program ini akan mengeset agar clock yang


digunakan ialah clock external. Bit TCCR0 di set bernilai
0b00000110. Hal ini menunjukkan bahwa sumber external clock
C.Tugas 3 : External Interrupt
diambil pada pin T0(yang dihubungkan dengan IS1). . Hal ini
berarti jika tombol interrupt selesai ditekan, progra m baru (Tugas II.C.1)
menganggap itu sebagai clock. Dengan kata lain, jika tombol Pada tugas ini akan melakukan percobaan praktikum membuat
ditekan tanpa dilepas, progra m tidak menganggap itu sebagai external interrupt pada PORTD (INT0 & INT1) menggunakan
clock. Program ini akan membandingkan nilai TCNT0 dan 0CR0. keypad 1 dan 2 sebagai interrupt dan output yang nanti hasilnya
Pada percobaan ini hasil yang didapat sesuai dengan yang akan ditampilkan pada LCD kit. Hasilnya adalah sebagai
diharapkan pada modul yaitu Bit TCCR0 0b00000110 (sumber berikut :
external clock diambil pada pin T0 dihubungkan pada IS1) Jika
LCD = Ext Interrupt
Keypad 1 ditekan
LCD = Ext Interrupt
INT Ext 0
Keypad 2 ditekan
LCD = Ext Interrupt
INT Ext 1
IV. SIMPULAN
 Mikrokontroller ATMega 8535 mempunyai fasilitas
time, counter dan interrupt.
 Register yang digunakan pada saat penggunaan
timer/counter adalah TCCR, TCNT, OCR, TIMSK,
dan TIFR.
 TCCR merupakan register timer yang digunakan
apakah itu timer 0 maupun timer 1 dan 2.
 TCNT merupakan register pencacah dari fungsi
timer/counter sedangkan OCR merupakan register
pembanding terhadap TCNT
 Register yang digunakan pada interrupt adalah
MCUCR, MCUSCR, GICR, GIFCR.

REFERENSI
[1] Electrical Engineering IT Del,2015, “Modul Praktikum
Sistem Mikroprosesor”,Laguboti
[2] Adel S. Sedra and Kennet C. Smith, Microelectronic
Circuits, Oxford University Press, USA, 2004.
[3] Mervin T Hutabarat, Praktikum Sistem Mikroprosesor
Laboratorium Dasar Teknik Elektro ITB,Bandung, 2015.

Dari percobaan yang telah dilakukan dapat dilihat bahwa otput


yang dihasikan sesuai dengan yang diharapkan bahwa DDRD2
dan DDRD3 = 0 sehingga PORTD2 dan PORTD3 menjadi
input. Untuk membuat port menjadi ON maka nilai di set
menjadi 1. Apabila timer interrupt dan external interrupt hidup
secara bersamaan maka prioritas utama adalah external
interrupt karena pada ATmega 8535 prioritas utama ada pada
external interrupt.
LAMPIRAN

LAMPIRAN
1. Tugas II.A.1
Code Program
#include <mega8535.h>
void main()
{
DDRB = 0xFF;
while(1)
{
TCNT1 = 49910;
TCCR1B = 0b101;
while((TIFR & 0b00000100) == 0);
TCCR1B = 0;
TIFR = 0b00000100;
PORTB = ~PORTB;
}
}

Hasil Percobaan :
2. Tugas II.A.2
Code Program
#include <mega8535.h>
void main()
{
DDRB = 0xFF;
while(1)
{
TCNT1 = 34286; TCCR1B = 0b101;
while((TIFR & 0b00000100) == 0); TCCR1B = 0;
TIFR = 0b00000100; PORTB = ~PORTB;
}
}

Hasil percobaan sama dengan Tugas II.A.1

3. Tugas II.B.1
Code Program
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
char str[10];
void main()
{
DDRB.0 = 0; PORTB.0 = 1; lcd_init(16); lcd_clear();
lcd_putsf("Counter 0= "); TCCR0 = 0b110;
while(1)
{ sprintf(str,"%i",TCNT0); lcd_gotoxy(10,0);
lcd_puts(str);
}
}

Hasil percobaan :
4. Tugas II.B.2
Code Program
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
char str[10];
void main()
{
unsigned int i; DDRB.0 = 0; PORTB.0 = 1; DDRA = 0xFF; lcd_init(16); lcd_clear();
lcd_putsf("Counter 0= "); TCCR0 = 0b110;
while(1)
{
sprintf(str,"%i",TCNT0); lcd_gotoxy(10,0); lcd_puts(str);
i = TCNT0; PORTA = 0xFF; delay_ms(i*1000); PORTA = 0x00; delay_ms(i*1000);
}
}

Hasil percobaan :
5. Tugas II.C.1

#include <mega8535.h>
#include <alcd.h>
void main()
{
DDRD.2 = 0; DDRD.3 = 0; PORTD.2 = 1; PORTD.3 = 1;
GICR = 0b11000000; MCUCR = 0b00000000;
#asm("sei") lcd_init(16); lcd_clear();
lcd_putsf("EXT Iterrupt");
while(1);
}

interrupt[2]void interupsi_ext0(void)
{ lcd_gotoxy(0,1); lcd_putsf("INT Ext 0");
}

Hasil percobaan :
interrupt[3]void interupsi_ext1(void)
{ lcd_gotoxy(0,1); lcd_putsf("INT Ext 1");
}

Anda mungkin juga menyukai