Anda di halaman 1dari 9

MODUL 02 Timer, Counter, Interrupt

Ercherio G.D Marpaung (14S15056)


Asisten: William Siagian
Tanggal Percobaan: 13/04/2018
Praktikum Sistem Mikroprosessor
Laboratorium Sistem Digital – Fakultas Informatika dan Elektro IT Del

Abstrak
Timer, counter, and interrupt are fitur of Bit 7 – FOC0 : Force Output Compare
microprocessor ATmega8535. Atmega8535 have 3
timer are timer 0 (8 bits), timer 1 (16 bits), and timer 2 Bit 6, 3 – WGM01/0 : Waveform Generation Mode
(8 bits). The scale or setting its we need oscilator clock
Bit 5,4 – COM01/0 : Compare Match Output
and seeting prescaler (8,64,256, or 1024)/ In this
module we will do practice about tts. First, we make Mode
delay using timer/counter in Atmega 8535. Next, we set Bit 2,0 – CS02/0 : Clock Select
clock with external clock source., make appication of
interrupt with timer/counter. Finally, we will use of
external interrupt. From this module have objective to Konfigurasi Mode Operasi [1]
understand about timer/counter and interrupt.

Keywords : ATMega8535, AVR, timer, counter,


interrupt.

1. PENDAHULUAN Pengaturan perilaku pin OCO (misalnya untuk mode non


Atmega8535 merupakan mikrokontroller yang terdiri – PWM [1]
dari 40 pin. Atmega8535 memiliki 3 buah timer,
diantaranya 2 timer 8 bit (timer 0 dan timer 2) dan 1
timer 16 bit (timer 2). Pada praktikum ini akan
dilakukan 4 percobaan mengenai timer/counter dan
intrrupt pada Atmega8535. Praktikan akan mendesain,
mencoba, dan menganalisa kode program delay pada
CV AVR dengan Timer/Counter dan interrupt,
menganalisa proses pengaktifan Timer/Counter, dan Pengaturan sumber clock [1]
aplikasi eksternal inetrrupt.

2. STUDI PUSTAKA

2.1 KONFIGURASI TIMER/COUNTER DAN


INTERRUPT
Deskripsi register Timer/Counter 8 Bit
( Timer/Counter 0 ) [1]

Register-register penting lain [1]


Bit 7 – INTF1: External Interrupt Flag 1
Bit 6 – INTF1: External Interrupt Flag 0
Bit 5 – INTF1: External Interrupt Flag 2

- - -
:
Bit 1 – OCIE0 : Timer/Counter 0 Output Compare Match 4. HASIL DAN ANALISIS
Interrupt Enable
2.A Delay dengan Timer/Counter
Bit 0 – TOIE0 : Timer/Counter 0 Overflow Interrupt
Enable Tugas 2.A.1
Kode program bahasa C pada Code Vision AVR untuk
mendesain fungsi delay dengan Timer/Counter. Delay
yang diset adalah sebesar 1 sekon.

Bit 1 – OCF0 : Output Compare Flag 0


Bit 0 – TOV0 : Timer/Counter0 Overflow Flag

2.2 KONFIGURASI EKSTERNAL INTERRUPT

Diawali dengan menset DDRA sebagai output (0x00),


kemudian menset nilai dari awal PORTA= 0x00. Nilai
TCCR1 (TCCR1A dan TCCR1B) digunakan untuk
pengaturan dan pengaktifan prescaler. Initial kondisi
di set ‘0’ (TCCR1A=0). Kami menggunakan prescaler
256, kami menset (TCCR1B=0b00001100). Nilai
TCCR1B tersebut bertujuan/berfungsi untuk menset
Bit 7 – INT1: External Interrupt Request 1 Enable
penggunaan mode operasi ‘CTC (bit ke 4 (WGM01)=1
Bit 6 – INT0: External Interrupt Request 0 Enable dan bit bit ke 7 (WGM00=0)) dan prescaler 256 (100).
Bit 5 – INT2: External Interrupt Request 2 Enable Pada loop while terjadi pengulangan secara terus-
menerus selama ada voltage source (‘1’) untuk
menghidupkan lampu (LED) secara bergantian yang
dirpresentasikan dalam data bit pada pin ATMega; 4

Laporan Praktikum - Laboratorium Sistem Digital – FTIE ITDel 2


bit pertama (LSB) hidup (PORTA=0b00001111)
sedangkan bit yang lainnya padam dan kemudian 4 bit
MSB menyala (PORTA=0b11110000) dan bit yang
lainnya padam. Hal ini berlangsung dengan delay
pergantian = 1 sekon. Delau tesebut kami atur dengann
implementasi timer/counter.
Berikut adalah kode program fungsi delay dengan
timer/counter.

Gambar 1 Tugas 2.A.1 LED berganti dengan delay 1


sekon

1s
Keuntungan dari menggunakan delay dengan
Timer/counter adalah bahwa proses pencacahan untuk
delay dapat dilakukan dengan frequency yang berbeda-
beda dengan penyesuaian prescaler dan nilai bit OCR.

Tugas 2.A.2
Untuk memnuat program delay function dengan
Timer/Counter awalnya kami menset ‘enable’ untuk Kode program bahasa C pada Code Vision AVR untuk
interrupt nya dengan counter menset TIMSK bernilai mendesain fungsi delay dengan Timer/Counter. Delay
‘1’ (TIMSK=(TOIE1)). Agar mencacah dari nol hingga yang diset adalah sebesar ((n mod 9) +1)sekon, dengan
n merupakan nomor kelompok.
maksimum, kami menset nilai register TCNT1 sama
dengan ‘0’ (TCNT1H=0 dan TCNT1L=0). Kami
menginginkan delay sebesar 1 sekon. Untuk mengatur
jumlah siklus clock selama 1 sekon dengan frequency
clock = 16 MHz dan prescaler 256 kami menentukan
nilai dari OCR1.
fCLK I/O
OCR = t delay ×
N
16 MHz
OCR = 1 × = 6250010 = 0xF424
256

Dari hasil perhitungan di atas maka diset nilai


OCR1AH= F4

OCR1AL = 24

Setelah diset nilai compare match-nya (OCR1A) maka


prosedur akan looping hingga menemui nilai OCR1A setelah
itu program akan mematikan interrupt (disable).
Berikut adalah implementasi pada Hardware

Diawali dengan menset DDRA sebagai output


(0x00), kemudian menset nilai dari awal PORTA=
0x00. Nilai TCCR1 (TCCR1A dan TCCR1B)
digunakan untuk pengaturan dan pengaktifan
prescaler. Initial kondisi di set ‘0’ (TCCR1A=0).
Kami menggunakan prescaler 256, kami menset

Laporan Praktikum - Laboratorium Sistem Digital – FTIE ITDel 3


(TCCR1B=0b00001100). Nilai TCCR1B tersebut II.B External Clock Sebagai Counter
bertujuan/berfungsi untuk menset penggunaan II.B.1
mode operasi ‘CTC (bit ke 4 (WGM01)=1 dan bit bit
Pada tugas ini kami akan menggunakan
ke 7 (WGM00=0)) dan prescaler 1024 (101)
rancanagan kode program untuk menggunakan
clock external yang akan digunakan sebagai
Alasan kami memilih prescaler 1024 karena
Timer/Counter, sebagai interrupt digunakan
menghasilkan nilai yang melebihi kapasitas register
push button. Counter akan mengkalkulasikan
OCR (>>8 bit) jumlah/banyak/durasi tombol ditekan,
Nomor Kelompok 16 banyaknya penekanan akan mengubah delay
(16 mod 9) + 1 = 8 sekon wakru pergantian LED.
Berikut diagram alur dari kode program
Kami menggunakan frekuensi 8 MHz dengan
alasan frekuensi 16 MHz untuk 8 sekon
menghasilkan nilai yang melebihi kapasitas register
OCR (>>8 bit).
16 M
OCR = 8 × = 12500010 = 0x1E848
1024

Dengan 8 MHz prescaler 256


8M
OCR = 8 × = 25000010 = 0x3D090
256

Dengan 8 MHz prescaler 1024


8M
OCR = 8 × = 6250010 = 0xF424
1024

Dari hasil perhitungan di atas maka diset nilai


OCR1AH= F4

OCR1AL = 24

Nilai prescaler menyebabkan proses pencacahan dan


pembagian yang berbeda dari clock.

Berikut adalah implementasi pada Hardware

Gambar 2 Tugas 2.A.2 LED berganti dengan delay 8


sekon
1s

8s

Laporan Praktikum - Laboratorium Sistem Digital – FTIE ITDel 4


Berikut hasil dari tampilan Hardware kembali ke kondisi clear bit (PORTA=0xAA). Pada
saat 3 kali penekanan (TCNT0=OCR0=125) maka
nilai PORTA= 0xAA berubah menjadi PRTA=0x55,
dan dengan delay 0,5 sekon akan kembali lagi ke
kondisi clear bits(PORTA=0xAA). Clock external
adlah penekanan push button.
II.B.2
Pada tugas B2 ini hampir sama dengan B1, tetpi
jumlah penekanan push button memenuhi aturan
(n mod 9)+1. Kami kelompok 16 jadi terdapat 8
kali penekanan agar mengalami perubahan
kondisi.
Daigram Alur

Pada atemega8535 keluaranya adalah

(a) (b)

(c)
Gambar 3 Hasil Pada Kit Praktikum Tugas B.1
8
Analisa: time
Hasil pada kit praktikum sesuai dengan desain s
kode program pada CV AVR. Pertama niali TCCR
sebagai clock external .
TCCR0= 0b00000110;
Kondisi diatas menunjukkan falling edge clock
Nilai TCNT0 dan OCR0 nilainya diatur.
TCNT0= 123;
OCR0=125;
Nilai TCNT dan OCR selalu dibandingkan. Nilai
TCNT akan selalu bertambah (+1) setiap penekanan
push botton sebanyak 1 kali. Nilai TCNT tidak boleh
melebihi nilai OCR. Apabila melebihi maka

Laporan Praktikum - Laboratorium Sistem Digital – FTIE ITDel 5


• Untuk melakukan kofigurasi External
Interrupt, maka dilakukan pengesetan
pada register MCUCR, MCUCSR, GICR,
dan GIFR.

DAFTAR PUSTAKA
[1] Jackstar H. S., Panduan Penulisan Laporan,
Jacks Publishing, Bandung, 2008.
[2] Modul Praktikum Sistem Mikroprosessor,
ITDel, Sitoluama, 2018.

Analisa:
Hasil pada kit praktikum sesuai dengan desain
kode program pada CV AVR. Pertama niali TCCR
sebagai clock external .
TCCR0= 0b00000110;
Kondisi diatas menunjukkan falling edge clock
Nilai TCNT0 dan OCR0 nilainya diatur.
TCNT0= 118;
OCR0=125;
Nilai TCNT dan OCR selalu dibandingkan. Nilai
TCNT akan selalu bertambah (+1) setiap
penekanan push botton sebanyak 1 kali. Nilai TCNT
tidak boleh melebihi nilai OCR. Apabila melebihi
maka
kembali ke kondisi clear bit (PORTA=0xAA). Pada
saat 8 kali penekanan (TCNT0=OCR0=125) maka
nilai PORTA= 0xAA berubah menjadi PRTA=0x55,
dan dengan delay 0,5 sekon akan kembali lagi ke
kondisi clear bits(PORTA=0xAA). Clock external
adlah penekanan push button.

5. KESIMPULAN
Dari Praktikum yang telah dilakukan kami
memperoleh kesimpulan:

• Timer/Counter dan Interrupt dapat


diimplementasikan pada ATMega 8535.

• Fungsi delay dengan Timer/counter adalah


bahwa proses pencacahan untuk delay dapat
dilakukan dengan frequency yang berbeda-
beda dengan penyesuaian prescaler dan nilai bit
OCR

Laporan Praktikum - Laboratorium Sistem Digital – FTIE ITDel 6


Lampiran

TugasA1.c
#include <mega8535.h>
void init_tim(void);
void Delay(void);

int main()
{
DDRA = 0x00;
init_tim();
while (1) {
PORTA = 0x0F;
Delay();
PORTA = 0xF0;
Delay();
}
return 0;
}

void init_tim(void)
{
// mode operasi CTC, sumber clock prescaller 256
TCCR1A = 0;
TCCR1B = 0b00001100;
// overflow interrupt disable
TIMSK |= (0<<TOIE1);
}

void Delay(void)
{
// overflow interrupt enable
TIMSK |= BV(TOIE1);
// penentuan nilai awal timer
TCNT1H = 0;
TCNT1L = 0;
// penentuan nilai compare untuk delay 1 detik
OCR1AH = 0xF4;
OCR1AL = 0x24;
// menunggu hingga compare match, nilai TCNT1 = OCR1A
while (!((TIFR) & (1 << (OCF1A))));

// meng-nol-kan flag
TIFR |= BV(OCF1A);
//overflow interrupt disable
TIMSK |= BV(TOIE1);
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB


Tugas A2.c
#include <mega8535.h>
void init_tim(void); void
Delay(void);

int main()
{
DDRA = 0x00;
init_tim();
while (1) {
PORTA = 0x0F;
Delay();
PORTA = 0xF0;
Delay();
}
return 0;
}

void init_tim(void)
{
// mode operasi CTC, sumber clock prescaller 1024
TCCR1A = 0;
TCCR1B = 0b00001101;
// overflow interrupt disable
TIMSK |= (0<<TOIE1);
}

void Delay(void)
{
// overflow interrupt enable
TIMSK |= BV(TOIE1);
// penentuan nilai awal timer
TCNT1H = 0;
TCNT1L = 0;
// penentuan nilai compare untuk delay 8 detik
OCR1AH = 0xF4;
OCR1AL = 0x24;
// menunggu hingga compare match, nilai TCNT1 = OCR1A
while (!((TIFR) & (1 << (OCF1A))));

// meng-nol-kan flag
TIFR |= BV(OCF1A);
//overflow interrupt disable
TIMSK |= BV(TOIE1);
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 8


Tugas B1.c
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>

char str[10];
void main(void)
{
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);
}
}

Tugas B2.c
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>

char str[10];
void main(void)
{
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);
}
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 9

Anda mungkin juga menyukai