Anda di halaman 1dari 6

PERCOBAAN MODUL II

TIMER, COUNTER, INTERUPT


Ahmad Falah (13116050)
Asisten : Reymod Suluh Tarihoran (13115040)
Tanggal Percobaan : Selasa /12 Maret/ 2019
EL3203 Praktikum Sistem Mikroprosesor
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

Abstrak—Pada pengaplikasiannnya mikrokontroler AVR ada


beberapa fungsi untuk pengolahan tambahan yang diperlukan
diantaranya adalah delay yang bersumber dari timer, counter, dan
interrupt. Semuanya dapat kita akses secara internal dengan
beberapa ketentuan yang akan dipelajari pada praktikum kali ini.

Kata Kunci —AVR, timer, counter, interrupt, delay. Pengaturan prilaku pin 0C0 (misalnya untuk mode non-PWM)
(Hal. 84)
I. PENDAHULUAN
Praktikum ini bertujuan memahami datasheet ATMega 8535,
mampu membuat aplikasi timer/counter dan interrupt pada
AVR dengan menggunakan bahasa pemrograman C pada
WinAVR dan mampu membuat aplikasi eksternal interrupt
pada AVR dengan menggunakan bahasa pemrograman C pada Pengaturan sumber (Hal.85)
WinAVR. Dengan pemahaman yang ditanamkan diharapkan
praktikan dapat memahami secara lengkap dan dapat
melakukan pengaplikasian untuk pengaturan mikrokontroler
tingkat lanjut.

II. LANDASAN TEORITIS


Konfigurasi Timer/Counter Dan Interupt

Gambar dan tabel berikut ini dikutip dari datasheet ATMega 8535 Register-register penting (Hal.85)

Deskripsi register Timer/Counter 8 bit (Timer/Counter 0)


(Hal. 83)
Konfigurasi Eksternal Interupt Instal WinAVR dan driver giveio

Buat project baru pada WinAVR dan ketikan source


code yang tertera dibawah

Kemudian atur settingan clock speed dan media


downloader dengan USBasp pada MFile WinAVR

Lakukan konfigurasi pin pada hardware dengan


pengaturan aktif low dan hubungkan 8 pin port A
pada 8 pin LED

Lakukan proses compile WinAVR apabila tidak ada


error, maka lakukan proses download ke AVR
melalui WinAVR

//mode operasi CTC, sumber clock


prescaller 256
TCCR1A = 0;
TCCR1B = 0b00001100;
//overflow interrupt disable
III. METODELOGI TIMSK|=(0<<TOIE1);
}
A. Alat dan Bahan void Delay(void)
1. PC/Laptop {
2. Starter kit AVR-DT //overflow interrupt enable
3. Perangkat lunak/Driver (USBasp, WinAVR, Giveio) TIMSK|=_BV(TOIE1);//(1<<TOIE1);
4. Kabel jumper //penentuan nilai awal timer
TCNT1H = 0;
TCNT1L = 0;
B. Langkah Kerja //penentuan nilai compare untuk delay 1
detik
OCR1AH = 0x70;
Percobaan II.A Delay dengan Timer/Counter OCR1AL = 0x80;
//menunggu hingga compare match, nilai
TCNT1 = OCR1A)
loop_until_bit_is_set(TIFR,OCF1A);
//meng-nol-kan flag
TIFR|=_BV(OCF1A);
//overflow interrupt disable
TIMSK|=_BV(TOIE1);
}
#include <avr/io.h>
void init_tim(void);
void Delay(void);
int main(void)
{
DDRA=0xFF;
PORTA = 0x00; TCNT0 = 123;
init_tim(); //penentuan nilai compare
while (1) OCR0 = 124;
{ //menanti compare match
PORTA = 0x0F; while(bit_is_clear(TIFR,OCF0))
Delay(); {
PORTA = 0xF0; PORTA = 0b10101010;
Delay(); }
} //meng-nol-kan flag
return 0; TIFR|=_BV(OCF0);
} PORTA = 0b01010101;
void init_tim(void) _delay_ms(500);
{ }
TABEL 1.1 SOURCE CODE PERCOBAAN 1 return 0;
}
void init_tim(void)
Percobaan 2: Eksternal Clock Sebagai Counter
{
//mode operasi dan sumber clock
TCCR0=0b00000110;
//overflow interrupt disable
Prosedur pada percobaan 2 hampir sama dengan TIMSK=(0<<OCIE0);
}
percobaan percobaan 1 hanya berbeda pada
TABEL 1.2 SOURCE CODE PERCOBAAN 2
source code saja

Percobaan 3: Aplikasi Interrupt dengan Timer/Counter

Prosedur pada percobaan ketiga pun masih sama


dengan percobaan sebelumnya, hanya berbeda pada
bagian source code-nya saja

Konfigurasi hardware percobaan kedua, hubungan


dari port harus terkonkesi ke interupt (IS1-IS4)
yang dapat dilihat pada Apendiks B menggunakan
sistem aktif low dengan LED yang sama dan port ketikan dan lakukan proses kompilasi program. Apabila
yang digunakan yaitu port A. tidak ada kesalahan maka lakukan proses download ke
kit-AVR

#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>
#include <avr/interrupt.h>
void init_int(void);
ISR(TIMER1_OVF_vect)
{
Lakukan proses download ke AVR melalui WinAVR, unsigned char i;
dan lakukan analisis PORTA=0xFF;
_delay_ms(200);
TIFR=(1<<TOV1);
#include<avr/io.h> TCNT1H=0xE3;
#include<avr/io.h> TCNT1L=0xDF;
#define F_CPU 7372800UL // 8MHz }
#include <util/delay.h> int main(void)
void init_tim(void); {
int main(void) init_int();
{ DDRA=0xFF;
init_tim(); while (1)
DDRA=0xFF; {
while (1) PORTA = 0b01010101;
{ _delay_ms(100);
//penentuan nilai awal timer PORTA = 0b10101010;
_delay_ms(100);
TIMSK=0b000100;
}
return 0;
}
void init_int(void)
{
TIMSK=0b000000;
TCCR1B=0b00000101; //prescalar 1024
TCNT1H=0xE3;
TCNT1L=0xDF;
sei();
}
TABEL 1.3 SOURCE CODE PERCOBAAN 3

IV. HASIL DAN ANALISIS


Percobaan II.A: Delay dengan Timer/Counter
Percobaan ini adalah bagaimana kita mengatur
timer/counter dengan menggunakan bahasa tingkat bawah
bahasa program dengan bahasa C melalui WinAVR. Port yang
digunakan adalah port A dengan pengaturan aktif low.

{
PORTA = 0x0F;
GAMBAR 1.2 KONDISI AWAL LED (0,1,2,3) MENYALA 0.5
Delay(); DETIK
PORTA = 0xF0;
Delay();
}

TABEL 1.4 BAGIAN SETTING NYALA LED PERCOBAAN 1

Seperti yang terlihat pada tabel diatas karena menggunakan pengaturan


aktif low maka sistem akan mengeksekusi perintah menyalakan 4bit
terakhir yaitu LED 7-4 kemudian dilakukan proses delay selama
penyalaan LED dan kemudian 4bit pertama akan menyala dan
sebaliknya LED 7-4 akan padam.

TCCR1A = 0;
TCCR1B = 0b00001100;
TABEL 1.5 SETTING PENGGUNAAN PRESCALER

Syntax pada tabel diatas merupakan penulisan untuk penggunaan


prescaler 256. Prescaler memiliki beberapa nilai faktor yaitu 8,
64,256, 1024. Timer sendiri sebenarnya hanya melakukan proses
perhitungan dari siklus clock dari chip yang digunakan dan tidak bisa
dirubah kecuali dari kecepatan clock itu sendiri. Tetapi dengan adanya
prescaler perhitungan clock timer bisa diperlambat dengan cara
mengalikanya dengan prescaler yang lebih besar. GAMBAR 1.2 KONDISI KEDUA LED (4,5,6,7) MENYALA
SELAMA 0.5 DETIK
TMAX = 1/fclock x (FFFFh + 1)
= 0.25µ x 65536 Percobaan II.B: Eksternal Clock Sebagai Counter
= 0.016384 Percobaan kedua ini adalah tentang penggunaan eksternal
clock yang diakses untuk pemanfaat sistem nyala LED untuk
“blinking” prescaller yang digunakan adalah 1024 dan
penggunaan output pin port A.

#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>
#include <avr/interrupt.h>
void init_int(void);
ISR(TIMER1_OVF_vect)
{
unsigned char i;
PORTA=0xFF;
_delay_ms(200);
TIFR=(1<<TOV1);
TCNT1H=0xE3;
TCNT1L=0xDF;
}
int main(void)
{
init_int();
DDRA=0xFF;
while (1)
{
PORTA = 0b01010101;
_delay_ms(100);
PORTA = 0b10101010;
_delay_ms(100);
TIMSK=0b000100;
} GAMBAR 1.2 KONDISI AWAL LED (0,2,4,6) MENYALA
return 0; SELAMA 0.5 DETIK
}
void init_int(void)
{
TIMSK=0b000000;
TCCR1B=0b00000101;
TCNT1H=0xE3;
TCNT1L=0xDF;
sei();
}
TABEL 1.5 SOURCE CODE PERCOBAAN 2

Pada percobaan kedua kami tidak tidak bisa mendapatkan data


karena keterbatasan waktu.

Percobaan II.C: Aplikasi Interrupt dengan Timer/Counter


Pada percobaan ketiga merupakan pengaplikasian dari
fungsi intrupsi pada AVR. Sistem kerja dari percobaan kali ini
adalah AVR memiliki sistem satu sistem utama yang akan
menyalakan LED secara berkedip dengan delay 0.5 detik “
PORTA = 0b10101010;” pada port A, LED yang
dinyalakan adalah (0,2,4,6) dan ketika mendapat interrupt LED GAMBAR 1.2 KONDISI KEDUA LED (1,3,5,7) MENYALA
akan menyalakan secara berkedip LED (1,3,5,7) dengan delay SELAMA 0.5 DETIK
yang sama “PORTA = 0b01010101;”.
KESIMPULAN
while(bit_is_clear(TIFR,OCF0))//Bagian
sistem awal
{ ATMega AVR memiliki fasilitas register khusus
PORTA = 0b10101010; sebagai timer/counter yaitu timer 0, timer 1, timer 2.
}
Untuk timer/counter register global menggunakan
TIFR|=_BV(OCF0);//Bagian sistem TIMSK dan TIFR sedangkan register khusus
interrupt menggunakan TCNTx dan OCRx.
PORTA = 0b01010101;
_delay_ms(500); Timer counter dapat digunakan untuk pembangkit
TABEL 1.6 BAGIAN SISTEM UTAMA DAN INTERRUPT frekuensi dan PWM
PADA PERCOBAAN 3
Pengaturan timer pada AVR adalah melalui
perhitungan satu periode clock yang bergantung pada
kecapatan clock, untuk itu dapat digunakan prescaler
sebagai penyesuai waktu.
Referensi:

[1] Modul praktikum sistem mikroprosesor Institut Teknologi


Sumatra 2019
[2] Data kelompok B3

LAMPIRAN

HARDWARE AVR DT-COMBO STARTER KIT

Anda mungkin juga menyukai