• Tidak ada hasil yang ditemukan

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak

N/A
N/A
Protected

Academic year: 2021

Membagikan "Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak"

Copied!
15
0
0

Teks penuh

(1)

MODUL 2 Timer, Counter, Interupt Samuel Andrian (13213100)

Asisten: Aditya Rachman (13212143) Tanggal Percobaan: 30/03/2015 EL3214-Praktikum Sistem Mikroprosesor

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika

ITB

Abstrak

Empat buah tugas sederhana akan dilakukan pada percobaan ini. Tugas

pertama bagaimana

Mengimplementasikan delay dengan timer/counter. Tuga kedua yaitu membuat external clock sebagai counter. Tugas ketiga yaitu membuat membuat aplikasi interupt dengan timer/counter. Tugas terakhir yaitu tugas ke empat mengimplementasikan eksternal interupt . Bagaimanakah melakukan empat tugas ini dan bagaimanakah ke-empat tugas ini di implementasikan, semua aka di bahas pada laporan praktikum kali ini.

Kata kunci: Timer, counter, interrupt.

1. Pendahuluan

Adapun beberapa tujuan yang hendak dicapai

dalam modul praktikum ini adalah sebagai berikut:

 Praktikan dapat memahami datasheet ATMega8535.

 Praktikan mampu membuat aplikasi Timer/Counter dan Interrupt pada AVR dengan menggunakan Bahasa pemogramanan C pada Win AVR.  Praktikan mampu membuat aplikasi

External Interrupt pada AVR dengan menggunakan bahasa pemograman C pada WinAVR.

2. Studi Pustaka

2.1Konfigurasi timer/counter dan interrupt

Gambar dan table berikut ini dikutipkan dari datasheet ATMega 8535.

Deskripsi register Timer/Counter 8 bit (Timer/Counter 0) (Hal. 83)

Konfigurasi Mode operasi (hal 83)

Pengaturan perilaku pin OCO (untuk mode non PWM) (hal 84)

Pengaturan sumber clock (hal 85)

(2)

2.2 Konfigurasi External Input Register-register untuk keperluan external interrupt diuraikan pada hal. 68-70 di datasheet ATMega8535. Di sini diberikan kutipan-kutipannya.

Bit 7 – INT1: External Interrupt Request 1 Enable

Bit 6 – INT0: External Interrupt Request 0 Enable

Bit 5 – INT2: External Interrupt Request 2 Enable

Bit 7 – INTF1: External Interrupt Flag 1 Bit 6 – INTF0: External Interrupt Flag 0 Bit 5 – INTF2: External Interrupt Flag 2 3. Metodologi

3.1Alat dan komponen

 Aplikasi WINAVR

 Board Modul praktikum  Kabel downloader  Kabel port to port

 Catu daya teregulasi (2 buah) 3.2Langkah kerja

3.2.1 Tugas 2A1

1. Buat program untuk tugas 1A1 2. Download ke ATMega 8535 3. Lihat keluaran

3.2.2 Tugas 2A2

1. Modiikasi program pada tugas 1A1 2. Download ke ATMega

3. Lihat keluarannya 3.2.3 Tugas 2B1

1 Buat program untuk tugas 2B1 2 Download ke ATMega 8535 3 Lihat keluaran

3.2.4 Tugas 2B2

1. Modifikasi program untuk tugas 2B2 2. Download ke ATMega 8535

3. Lihat keluaran 3.2.5 Tugas 2C1

1 Buat program untuk tugas 2C1 2 Download ke ATMega 8535 3 Lihat keluaran

3.2.6 Tugas 2C2

1. Modifikasi program 2C1 untuk tugas 2C2

2. Download ke ATMega 8535 3. Lihat keluaran

3.2.7 Tugas 2D1

(3)

2 Download ke ATMega 8535 3 Lihat keluaran

3.2.4 Tugas 2D2

1. Modifikasi program 2D1 untuk tugas 2D2

2. Download ke ATMega 8535 3. Lihat keluaran

4 Hasil dan analisis

Berikut adalah data dari setiap percobaan dan analisisnya.

4.1Tugas 1A

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-1a : Hasil untuk tugas 1A1

Gambar 4-1b : flow-chart dan penggalan program tugas 2A1

Analisis :

Delay yang didapat sebesar 1 detik karena sesuai rumus

OCR=Tyan

g

diinginkan

FCPU

prescaler

Dengan T yang di inginkan = 1 detik dan FCPU sebesar 7372800 dan prescaler 256

sehingga OCR didapat sebesar 28800 dalam hexadecimal 0x7080.

4.2 Tugas 2A1

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-2a : hasil untuk tugas 2A2

Gambar 4-2b : flow-chart program utama dan penggalan program tugas 2A1

Analisis :

Hasil yang didapat hampir sama dengan percobaan 1A1 hanya delaynya yang dirubah menjadi dua detik. Untuk membuat delay sebesar 2 detik maka nilai OCR diubah dengan menggunakan rumus

OCR=Tyan

g

diinginkan

FCPU

prescaler

Dengan T yang di inginkan = 2 detik dan FCPU sebesar 7372800 dan prescaler 256 sehingga OCR didapat sebesar 57600 dalam hexadecimal 0xE100.

4.3Tugas 2B1 7 6 5 4 3 2 1 0

start

TCR 1A =0

TCR1B = 0b00001100

TIMSK = (0<<TOIE1)

End

start

TCR 1A =0

TCR1B = 0b00001100

TIMSK = (0<<TOIE1)

End

(4)

7 6 5 4 3 2 1 0 Gambar 4-3a : hasil untuk percobaan 1B1

Gambar 4-3b :

flow-chart dan penggalan

program tugas 2b1

Analisis :

Hasilnya LED akan flip-flop seperti pada gambar 4-3a dengan delay 0.5 detik. Delay menggunakan delay eksternal sebesar 500ms seperti gambar 4-3b. 4.4 Tugas 2B2

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-4a : hasil untuk percobaan 2B2

Gambar 4-4b : flow-chart dan penggalan program tugas 2b2

Analisis :

Hasil dapat dilihat pada gambar 4.4 dengan delay yang diinginkan sebesar 3 detik maka untuk membuat delay sebesar 3 detik untuk TCNT = 123 maka OCR0 = 125.

4.5 Tugas 2C1

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-5a : untuk setiap 0.1 detik maka LED akan flipflop seperti ini

7 6 5 4 3 2 1 0

Gambar 4-5b : untuk setiap 1 detik maka lampu akan menyala semua seperti gambar ini

start

Program utama

Interrupt

Program utama

End

start

Program utama

Interrupt

Program utama

End

(5)

Gambar 4-5c : flow-chart dan penggalan program tugas 2C1

Analisis :

Untuk delay sebesar 0.1 detik digunakan delay eksternal sebesar 100 ms. Sedangkan untuk delay interrupt sebesar 1 detik didapatkan dengan menggunakan rumus

OCR=Tyan

g

diinginkan

FCPU

prescaler

dengan T yang diingingkan sebesar 1 detik dan prescaler 1024 dan FCPU sebesar 727280 maka didapatkan OCR dalam heksadesimal 0x1C20

dan TCNT didapat didapatkan dengan rumus

TCNT =1+FFFF – OCR

Sehingga TCNT yang didapatkan0xE3DF. 4.6 Tugas 2C2

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-6a : untuk setiap 0.1 detik maka LED akan flipflop seperti ini

7 6 5 4 3 2 1 0

Gambar 4-6b : untuk setiap 2 detik maka lampu akan menyala semua seperti gambar ini

Gambar 4-6c : flow-chart dan penggalan program tugas 2C2

start

Program utama

Interrupt

Program utama

End

start

Program utama

Interrupt

Program utama

End

(6)

Untuk delay sebesar 0.1 detik digunakan delay eksternal sebesar 100 ms. Sedangkan untuk delay interrupt sebesar 1 detik didapatkan dengan menggunakan rumus

OCR=Tyan

g

diinginkan

FCPU

prescaler

dengan T yang diingingkan sebesar 1 detik dan prescaler 1024 dan FCPU sebesar 727280 maka didapatkan OCR dalam heksadesimal 0x3840

dan TCNT didapat didapatkan dengan rumus

TCNT =1+FFFF – OCR

Sehingga TCNT yang didapatkan0xC7C0. 4.7 Tugas 2D1

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-7a : untuk setiap 0.5 detik maka LED akan flipflop seperti ini

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Gambar 4-7b : jika IS1 ditekan LED akan running lalu kembali lagi ke keadaan awal

Gambar 4-7c : flow-chart dan penggalan program tugas 2D2

Analisis :

Delay LED sebelum ada interrupt adalah 500 ms. Interupt terjadi saat IS1 ditekan dan delanya 250 ms dapt dilihat codenya pada gambar 4-7c. 4.8 Tugas 2D2 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

start

Program utama

Interrupt

Program utama

End

(7)

Gambar 4-8a : untuk setiap 0.5 detik maka LED akan flipflop seperti ini

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Gambar 4-8b : saat ada interrupt oleh IS1 dengan delay flipflop 0.5 detik

7 6 5 4 3 2 1 0

Gambar 4-8c : saat ada interrupt oleh IS2 selama 1 detik

Gambar 4-8d : flow-chart dan penggalan program tugas 2D2

Pada percobaan ini jika tidak ada interrupt maka LED akan flip-flop seperti gambar 4-8a, jika ada interrupt dari IS1maka LED akan seperti gambar 4-8b, jika interrupt dari IS2 maka LED akan seperti gambar 4-8c.

5 Kesimpulan

Dari praktikum ini dapat disimpulkan bahwa:

 Penjelasan deskripsi register Timer/Counter 8 bit, konfigurasi mode operasi, pengaturan perilaku pin OCO, pengaturan sumber clock, dan register-register untuk keperluan external interrupt, yang dipakai dalam percobaan ini, terdapat dalam datasheet ATMega 8535.

 Aplikasi timer/counter dan interrupt dapat dilakukan pada AVR ATMega 8535 dengan mengatur nilai register TCNT dan OCR,.

 Aplikasi external interrupt dapat dilakukan pada AVR Atmega 8535

start

Program utama

Interrupt 1/ interrupt 2

Program utama

(8)

dengan mengatur nilai register MCUCR, GICR, dan GIFR.

DAFTAR PUSTAKA

[1] Mervin T. Hutabarat, Praktikum system mikroprosesor, Laboratorium Dasar Teknik Elektro, ITB, 2015.

(9)

Source code ---2A1---#include <avr/io.h> void init_tim(void); void Delay(void); int main(void) { DDRA=0xFF; PORTA = 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);//(1<<TOIE1); //penentuan nilai awal timer TCNT1H = 0;

TCNT1L = 0;

//penentuan nilai compare untuk delay 1 detik OCR1AH = 0x70;

OCR1AL = 0x80;

//menunggu hingga compare match, (nilai TCNT1 = OCF1A) loop_until_bit_is_set(TIFR,OCF1A);

//meng-nol-kan flag TIFR|=_BV(OCF1A);

(10)

//overflow interrupt disable TIMSK|=_BV(TOIE1); } ---2A2---#include <avr/io.h> void init_tim(void); void Delay(void); int main(void) { DDRA=0xFF; PORTA = 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);//(1<<TOIE1); //penentuan nilai awal timer TCNT1H = 0;

TCNT1L = 0;

//penentuan nilai compare untuk delay 2 detik OCR1AH = 0xE1;

OCR1AL = 0x00;

//menunggu hingga compare match, (nilai TCNT1 = OCF1A) loop_until_bit_is_set(TIFR,OCF1A);

(11)

TIFR|=_BV(OCF1A);

//overflow interrupt disable TIMSK|=_BV(TOIE1);

}

---2B1---#include <avr/io.h>

#include <avr/io.h>

#define F_CPU 7372800UL // 8MHz #include <util/delay.h> void init_tim(void); int main(void) { init_tim(); DDRA=0xFF; while (1) {

//penentuan nilai awal timer TCNT0 = 123;

//penentuan nilai compare OCR0 = 124;

//menanti compare match

while(bit_is_clear(TIFR,OCF0)) { PORTA = 0b10101010; } //meng-nol-kan flag TIFR|=_BV(OCF0); PORTA = 0b01010101; _delay_ms(500); } return 0; } void init_tim(void) {

//mode operasi dan sumber clock TCCR0=0b00000110;

//overflow interrupt disable TIMSK=(0<<OCIE0);

}

---2B2---#include <avr/io.h>

#include <avr/io.h>

#define F_CPU 7372800UL // 8MHz #include <util/delay.h>

(12)

int main(void) { init_tim(); DDRA=0xFF; while (1) {

//penentuan nilai awal timer TCNT0 = 123;

//penentuan nilai compare OCR0 = 125;

//menanti compare match

while(bit_is_clear(TIFR,OCF0)) { PORTA = 0b10101010; } //meng-nol-kan flag TIFR|=_BV(OCF0); PORTA = 0b11111111; Delay(); } return 0; } void init_tim(void) {

//mode operasi dan sumber clock TCCR0=0b00000110;

//overflow interrupt disable TIMSK=(0<<OCIE0);

}

void Delay(void) {

//overflow interrupt enable TIMSK|=_BV(TOIE1);//(1<<TOIE1); //penentuan nilai awal timer TCNT1H = 0;

TCNT1L = 0;

//penentuan nilai compare untuk delay 1 detik OCR1AH = 0xE1;

OCR1AL = 0x00;

//menunggu hingga compare match, (nilai TCNT1 = OCF1A) loop_until_bit_is_set(TIFR,OCF1A);

//meng-nol-kan flag TIFR|=_BV(OCF1A);

//overflow interrupt disable TIMSK|=_BV(TOIE1);

(13)

---2C1---#include <avr/io.h>

#define F_CPU 7372800UL #include <util/delay.h> #include <avr/interrupt.h> void init_int(void); ISR(TIMER0_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; } return 0; } void init_int(void) { TIMSK=0b000000; TCCR1B=0b00000101; //prescaler 1024 TCNT1H=0xE3; TCNT1L=0xDF; sei(); } ---2C2---#include <avr/io.h>

#define F_CPU 7372800UL #include <util/delay.h> #include <avr/interrupt.h> void init_int(void); ISR(TIMER0_OVF_vect) { unsigned char i; PORTA=0xFF; _delay_ms(200);

(14)

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; } return 0; } void init_int(void) { TIMSK=0b000000; TCCR1B=0b00000101; //prescaler 1024 TCNT1H=0xC7; TCNT1L=0xC0; sei(); } ---2D1---#include <avr/io.h>

#define F_CPU 7372800UL #include <util/delay.h> #include <avr/interrupt.h> void Init_Ext_Int(void); ISR(INT0_vect)

{

unsigned char i=0x01,n; for(n=0;n<8;++n) { PORTA = i; _delay_ms(250); i=(i<<1)|(i>>7); } } int main(void) { Init_Ext_Int(); sei(); DDRA=0xFF; while (1) { PORTA = 0b10101010;

(15)

_delay_ms(500); PORTA = 0b01010101; _delay_ms(500); } return 0; } void Init_Ext_Int(void) { MCUCR=0x02; MCUCSR=0x00; GICR=0x40; GIFR=0x40; } ---2D2---#include <avr/io.h>

#define F_CPU 7372800UL #include <util/delay.h> #include <avr/interrupt.h> void Init_Ext_Int(void); ISR(INT0_vect)

{

unsigned char i=0x01,n; for(n=0;n<8;++n) { PORTA = i; _delay_ms(250); i=(i<<1)|(i>>7); } } int main(void) { Init_Ext_Int(); sei(); DDRA=0xFF; while (1) { PORTA = 0b11111111; _delay_ms(500); PORTA = 0b00000000; _delay_ms(500); } return 0; } void Init_Ext_Int(void) { MCUCR=0x02; MCUCSR=0x00; GICR=0x40; GIFR=0x40; }

Gambar

Gambar 4-1a : Hasil untuk tugas 1A1
Gambar 4-3b :   flow-chart dan  penggalan program tugas 2b1
Gambar   4-6a   :  untuk   setiap   0.1   detik maka LED akan flipflop seperti ini
Gambar   4-7a   :  untuk   setiap   0.5   detik maka LED akan flipflop seperti ini
+2

Referensi

Dokumen terkait

Berdasarkan latar belakang ini, penulis akan mengidentifikasi tatanan geologi Daerah Kedondong dan sekitarnya secara detail dengan menggunakan prinsip Pemetaan

Pilih Instruksi Tambah maka : Input data rekening tabungan karyawan di ubah/edit data. rekening

dilakukan kepada 30 responden di wilayah kerja Puskesmas Jatibanteng Kabupaten Situbondo kemudian dilakukan uji statistik sperman’s rho sehingga di dapatkan nilai p

Informasi data yang berupa obyek gambar diterima kamera kemudian data informasi tersebut dikirim ke komputer dengan kabel USB (Universal Serial Bus), setelah komputer

Berdasarkan analisis penelitian pada tabel 4 dan tabel 5 menunjukkan bahwa ada hubungan antara kecemasan dengan pola tidur pada lansia dengan hipertensi dan lansia

yang berasal dari komite sekolah, hendaknya pihak sekolah melakukan pendekatan yang lebih baik lagi kepada orang tua siswa, sehingga tunggakan yang terjadi

Pengendalian penyakit HDB pada tanaman padi yang disebabkan oleh Xoo masih cukup sulit dilakukan, mengingat patogen ini mempunyai daerah pencar yang luas dan mempunyai kemampuan

Berdasarkan hasil pembahasan dan analisis yang telah dilakukan dapat diambil kesimpulan bahwa rumusan strategi berdasarkan prinsip blue ocean strategy adalah melakukan