• Tidak ada hasil yang ditemukan

[EL3214]_[modul 2]_[13213100]

N/A
N/A
Protected

Academic year: 2021

Membagikan "[EL3214]_[modul 2]_[13213100]"

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   dan   table   berikut   ini   dikutipkan dari datasheet ATMega 8535.
Gambar 4-1a : Hasil untuk tugas 1A1
Gambar   4-4a   :    hasil   untuk   percobaan 2B2
Gambar   4-6a   :  untuk   setiap   0.1   detik maka LED akan flipflop seperti ini
+3

Referensi

Dokumen terkait

Suatu sistem di internet yang memungkinkan siapapun agar bisa menyediakan informasi. Dengan menggunakan teknologi tersebut, informasi dapat diakses selama 24 jam dalam

İdarenin veya yapı denetim görevlisinin yazılı bir tebliği olmaksızın yüklenicinin proje- lerde herhangi bir değişiklik yapması halinde sorumluluk Yüklenicinin, proje

Arah bangsa menjadi lebih baik apabila kita mampu memberikan yang terbaik untuk bangsa ini dengan ilmu yang telah kita dapat dari berbagai sumber.. Bagaimana

Puji syukur penulis panjatkan kehadirat Allah SWT atas segala anugrah dan nikmat yang telah dilimpahkan-Nya kepada kita semua, serta berkat rahmat- Nya sehingga penulis

Puji syukur penulis panjatkan kepada Allah subhanahuwata’ala Yang Maha Esa atas rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Konsep Perencanaan dan Perancangan

Mantan Walikota Jakarta Utara ini menyampaikan, jumlah tenaga kerja kontrak yang akan direkrut di masing- masing kelurahan bervariasi antara 40-70 orang, tergantung dari luasan

Biaya Sewa Tempat Usaha Biaya Sewa Tempat Usaha Jumlah Biaya Operasional Usaha ( 1 ) Jumlah Biaya Operasional Usaha ( 1 ) 2.. Biaya Operasional Rumah Tangga Biaya Operasional

Untuk mendapatkan model terbaik yang dapat diterakan pada kasus jumlah kematian ibu dan jumlah kematian bayi di Provinsi Jawa Tengah dilakukan dengan melakukan