• Tidak ada hasil yang ditemukan

[EL3214_[2]_[13213080]

N/A
N/A
Protected

Academic year: 2021

Membagikan "[EL3214_[2]_[13213080]"

Copied!
17
0
0

Teks penuh

(1)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1

MODUL II TIMER, COUNTER, INTERRUPT

Raden Arifudin Nur Fauzan (13213080) Asisten: Zuhditazmi (13212149)

Tanggal Percobaan: 29/03/2016 EL3214-Praktikum Sistem Mikroprosesor

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak

Pada praktikum Timer, Counter, Interrupt ini dipelajari

mengenai cara kerja timer & counter pada ATMega8535

yang merupakan fungsi dasar untuk menghasilkan delay.

Dalam implementasinya dilakukan dengan cara pengujian

seperti delay dengan timer/counter, external clock sebagai

counter, aplikasi interrupt dengan timer/counter, dan external

interrupt.

Kata kunci: ATMega 8535, clock, counter, delay,

interrupt, timer.

1. PENDAHULUAN

Timer/counter dapat digunakan dan diatur dengan cara mengatur timer register. Timer berfungsi sebagai pencacah untuk fungsi clock internal maupun eksternal. Mikrokontroler dapat menerima interrupt dan akan segera melakukan instruksi lain ketika sedang menjalankan suatu tugas atau instruksi utama.

Tujuan dari praktikum ini adalah:

a. memahami datasheet ATMega 8535; b. mampu membuat aplikasi Timer/Counter

dan Interrupt pada AVR dengan menggunakan bahasa pemrograman C pada WinAVR; serta

c. mampu membuat aplikasi External Interrupt pada AVR dengan menggunakan bahasa pemrograman C pada WinAVR.

2. STUDI PUSTAKA

2.1

MIKROKONTROLER ATMEGA8535

Mikrokontroler ATMega 8535 merupakan mikrokontroler CMOS 8 bit yang memiliki daya rendah dan termasuk ke dalam basis arsitektur RISC. ATMega 8535 dapat bekerja dengan kecepatan tinggi dan mengonsumsi daya rendah karena instruksi dijalankan pada satu siklus clock serta ATMega8535 memiliki throughput mendekati 1 MIPS per MHz.

2.1.1

I/O ATMEGA 8535

a. Port A (PA0-PA7) merupakan pin I/O dua arah dan pin masukan ADC.

b. Port B (PB0-PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu timer/counter, komparator analog, dan SPI. c. Port C (PC0-PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, dan timer oscillator. d. Port D (PD0-PD7) merupakan pin I/O dua

arah dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal, dan komunikasi serial.

2.2.2

KONFIGURASI PIN

M

IKROKONTROLER

AVR

ATM

EGA

8535

Mikrokontroler ATMega 8535 memiliki 40 pin untuk model PDIP dan 44 pin untuk model TQFP dan PLCC.

a. VCC untuk tegangan pencatu daya positif. b. GND untuk tegangan pencatu daya negatif. c. Port A (PA0-PA7) sebagai pin I/O dua arah

dan sebagai input ADC.

d. Port B (PB0-PB7) sebagai pin I/O dua arah dan pin fungsi khusus, yaitu timer/counter, komparator analog, dan SPI.

e. Port C (PC0-PC7) sebagai pin I/O dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, dan timer oscillator. f. Port D (PD0-PD7) sebagai pin I/O dua arah

dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal, dan komunikasi serial.

g. RESET untuk melakukan reset program dalam mikrokontroler.

h. XTAL1 dan XTAL2 sebagai input pembangkit sinyal clock.

i. AVCC sebagai pin masukan tegangan pencatu daya untuk ADC.

j. AREF untuk pin tegangan referensi ADC.

2.2

REGISTER

T

IMER

/C

OUNTER

Dalam penggunaan timer/counter dapat dilakukan pengaturan terhadap register timer. Dalam datasheet ATMega8535 terdapat beberapa register, seperti

(2)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2 TCCR (register timer/counter 8 bit (Timer/Counter 0)),

TCNT, OCR, TIMSK, dan TIFR.

Gambar 2-1 Register TCCR, TCNT, OCR, TIMSK, dan TIFR

2.3

REGISTER

E

XTERNAL

I

NTERRUPT Dalam datasheet ATMega8535 tercantum pula register-register yang dapat digunakan untuk keperluan external interrupt, seperti MCUCSR, GICR, dan GIFR.

Gambar 2-2 Register MCUCSR, GICR, dan GIFR

3. METODOLOGI

Peralatan yang digunakan selama praktikum: a. 1 unit computer b. Software WinAVR c. Sismin ATMega 8535 d. Trainer Board e. Power supply f. Kabel/konektor

Adapun percobaan yang dilakukan adalah sebagai berikut.

3.1

DELAY DENGAN

T

IMER

/C

OUNTER

Gambar 3-1 Diagram percobaan 1

3.2

E

XTERNAL

C

LOCK SEBAGAI

C

OUNTER

Gambar 3-2 Diagram percobaan 2

Modifikasi program yang dibuat sesuai dengan ketentuan pada Tugas II.A.2. Ulangi langkah sebelumnya. Eksekusi program yang telah dibuat (II.A.1) dengan menggunakan perintah MakeAll dan MakeProgram (pastikan kabel/konektor terhubung dengan benar).

Perhatikan dan amati nyala LED.

Set alat dan komponen yang diperlukan (sesuai pada modul). Buka software WinAVR kemudian atur sesuai

dengan ketentuan.

Modifikasi program yang dibuat sesuai dengan ketentuan pada Tugas II.B.2. Ulangi langkah sebelumnya.

Eksekusi program yang telah dibuat (II.B.1) dengan menggunakan perintah MakeAll dan MakeProgram (pastikan kabel/konektor

terhubung dengan benar). Perhatikan dan amati nyala LED. Set alat dan komponen yang diperlukan (sesuai pada modul). Buka software WinAVR kemudian atur sesuai

(3)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3

3.3

A

PLIKASI

I

NTERRUPT DENGAN

T

IMER

/C

OUNTER

Gambar 3-3 Diagram percobaan 3

3.4

E

XTERNAL

I

NTERRUPT

Gambar 3-4 Diagram percobaan 4

4. HASIL DAN ANALISIS

Hasil dari beberapa percobaan tersebut disajikan dalam bentuk tabel/citra gambar seperti berikut.

4.1

DELAY DENGAN

T

IMER

/C

OUNTER

A. Tugas II.A.1

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-1 Flowchart Tugas II.A.1

Gambar 4-2 Flowchart delay

Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

LED

Bit 7 6 5 4 3 2 1 0

Gambar 4-3 Konfigurasi LED Tugas II.A.1 Modifikasi program yang dibuat sesuai dengan ketentuan

pada Tugas II.C.2. Ulangi langkah sebelumnya. Eksekusi program yang telah dibuat (II.C.1) dengan menggunakan perintah MakeAll dan MakeProgram (pastikan kabel/konektor terhubung dengan benar).

Perhatikan dan amati nyala LED.

Set alat dan komponen yang diperlukan (sesuai pada modul). Buka software WinAVR kemudian atur sesuai

dengan ketentuan.

Modifikasi program yang dibuat sesuai dengan ketentuan pada Tugas II.D.2. Ulangi langkah sebelumnya. Eksekusi program yang telah dibuat (II.D.1) dengan menggunakan perintah MakeAll dan MakeProgram (pastikan kabel/konektor terhubung dengan benar).

Perhatikan dan amati nyala LED.

Set alat dan komponen yang diperlukan (sesuai pada modul). Buka software WinAVR kemudian atur sesuai

(4)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4 Pada kode program tertulis DDRA =0xFF;

yang menunjukkan bahwa PORT A digunakan sebagai inisialisasi output. Berdasarkan kode program menunjukkan bahwa LED akan menyala secara bergantian antara 4 bit LSB kemudian berganti dengan 4 bit MSB dengan delay 1 detik.

Delay yang digunakan pada program ini diatur oleh fungsi void init_tim(void) dan void Delay(void).

Pada mode operasi CTC, sumber clock prescaller bernilai 256 dengan pengaturan menggunakan register TTCR TTCR1A = 0; TCCR1B = 0b00001100; dan fungsi interrupt disable TIMSK|=(0<<TOIE1);. Implementasi fungsi delay dilakukan dengan mengatur register OCR1AH dan OCR1AL menggunakan nilai yang diperoleh melalui persamaan berikut.

𝑂𝐶𝑅1𝐴 =𝑑𝑒𝑙𝑎𝑦 × 𝑓𝑐𝑙𝑜𝑐𝑘 𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 =

1 𝑥7372800 256 = 28800 Nilai register OCR1A adalah 28800 dalam desimal atau 7080h dalam heksadesimal yang dapat dipecah menjadi OCR1AH= 0x70 dan OCR1AL= 0x80 serta delay yang terjadi adalah 1 detik.

Program ini berada pada loop dengan durasi 1 detik setiap siklus sesuai perintah loop_until_bit_is_set(TIFR,OCF1 A); yang akan menunggu nilai TCNT1 match dengan nilai OCR1A. Setelah selesai, program akan keluar dari void Delay dan kembali pada program utama. Ketika terjadi match, flag (OCF1A) akan menjadi nol dan overflow interrupt menjadi disable untuk kembali pada program utama. B. Tugas II.A.2

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-4 Flowchart Tugas II.A.2 Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

LED

Bit 7 6 5 4 3 2 1 0

Gambar 4-5 Konfigurasi LED Tugas II.A.2

Pada kode program tertulis DDRA =0xFF; yang menunjukkan bahwa PORT A digunakan sebagai inisialisasi output. Berdasarkan kode program menunjukkan bahwa LED akan menyala secara bergantian antara 4 bit LSB kemudian berganti dengan 4 bit MSB dengan delay 6 detik sesuai dengan ketentuan pada modul dan kelompok praktikan adalah kelompok 9 (𝑥 = (9𝑚𝑜𝑑5) + 2).

Pada Tugas II.A.2 tetap menggunakan prinsip program yang sama dengan Tugas II.A.1 tetapi dengan menggunakan delay sebesar 6 detik sesuai dengan ketentuan perhitungan pada modul. Implementasi fungsi delay dilakukan dengan mengatur register OCR1AH dan OCR1AL menggunakan nilai yang diperoleh melalui persamaan berikut.

𝑂𝐶𝑅1𝐴 =𝑑𝑒𝑙𝑎𝑦 × 𝑓𝑐𝑙𝑜𝑐𝑘 𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑙𝑒𝑟 =

6 𝑥7372800 1024 = 43200

(5)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5 Nilai register OCR1A adalah 43200 dalam

desimal atau A8C0h dalam heksadesimal yang dapat dipecah menjadi OCR1AH= 0xA8 dan OCR1AL= 0xC0 serta delay yang terjadi adalah 6 detik. Prescaller yang digunakan adalah 1024 sehingga nilai register TCCR1B=0B00001101.

Prescaler merupakan rangkaian pencacah elektrik yang akan mereduksi frekuensi sinyal elektrik pada frekuensi tinggi manjadi frekuensi yang lebih rendah dengan pembagian menggunakan bilangan integer. Prescaler dapat membuat timer bekerja pada clock tertentu sesuai dengan keinginan pengguna.

4.2

E

XTERNAL

C

LOCK SEBAGAI

C

OUNTER

A. Tugas II.B.1

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-6 Flowchart Tugas II.B.1

Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

State 1 LED Bit 7 6 5 4 3 2 1 0 State 2 LED Bit 7 6 5 4 3 2 1 0

Gambar 4-7 Konfigurasi LED Tugas I.B.1

Kondisi awal LED tertampil seperti pada state 1 dan pada saat menerima 2 kali penekanan tombol (button IS3-PB0) akan berubah konfigurasi menjadi state 2 dengan delay selama 500 ms kemudian berpindah kembali pada state 1.

Perintah TCCR0=0b00000110; pada mode operasi dan sumber clock me-nunjukkan bahwa external clock source terletak pada pin T0 dan clock pada falling-edge. Kemudian dilakukan pula pengaturan overflow interrupt disable dengan perintah TIMSK=(0<<OCIE0);. Pada program utama, dilakukan perbandingan nilai TCNT0 yang sebelumnya bernilai 123 diatur menjadi nilai awal dengan OCF0. Hal ini berlangsung ketika register tersebut memiliki kesamaan nilai dan akan menunjukkan nilai 1 sehingga program tidak masuk kedalam kondisi perulangan while. Ketika TCNT0=OCR0 flag OCF0 bernilai 0 maka program masuk ke dalam kondisi perulangan while.

B. Tugas II.B.2

Berikut ini merupakan flowchart program dengan kode program terlampir.

(6)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6 Gambar 4-8 Flowchart Tugas II.B.2

Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

State 1 LED Bit 7 6 5 4 3 2 1 0 State 2 LED Bit 7 6 5 4 3 2 1 0

Gambar 4-9 Konfigurasi LED Tugas II.B.2 Pada tugas ini menggunakan prinsip yang mirip dengan Tugas II.B.2 dengan beberapa perubahan seperti jumlah interupsi penekanan tombol menjadi 7 kali sesuai dengan ketentuan pada modul yaitu 𝑥 = (9𝑚𝑜𝑑5) + 3. Ketika program men-capai state 2, LED akan menyala semua sesuai dengan konfigurasi PORTA=0xFF dengan lama delay 7 detik. Nilai awal timer pada program utama diatur menjadi 1 dan nilai compare diatur menjadi 7.

4.3

A

PLIKASI

I

NTERRUPT DENGAN

T

IMER

/C

OUNTER

A. Tugas II.C.1

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-10 Flowchart Tugas II.C.1

Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

State 1 LED Bit 7 6 5 4 3 2 1 0 State 2 LED Bit 7 6 5 4 3 2 1 0

Gambar 4-11 Konfigurasi LED Tugas II.C.1

Pada kondisi state 1 LED menyala bergantian dengan delay 100 ms dan akan menuju pada state 2 ketika mencapai waktu

(7)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 7 200 ms terakhir dalam rentang waktu 1

detik serta LED menyala secara keseluruhan.

Pada tugas ini digunakan interrupt dengan timer/counter sehingga ketika program mencapai interrupt kemudian akan menjalankan ISR dan dilanjukan dengan program default yang sedang berjalan. Pada prosedur void init_int (void), perintah TIMSK=0b000000; akan membuat interrupt menjadi disable. Kemudian akan digunakan Timer0 yang ditunjukkan dengan pengaturan TCCR0= 0b00000101; dan menggunakan prescaller 1024. TCNT0 diset 0x00 sehingga counter diatur menjadi 0. Fungsi sei() pada prosedur void init_int (void) digunakan untuk membuat kode assembler dari fungsi menjadi satu baris saja agar tidak melakukan overwrite terhadap pemanggilan fungsi lain.

Program utama menjalankan prosedur void init_int (void) lalu melakukan assign PORTA sebagai output dengan perintah DDRA=0xFF. Kemudian program diberi delay selama 0.1 detik untuk memberikan output 0b10101010. Setelah itu, TIMSK diatur menjadi 0b000100 sehingga interrupt menjadi enable dan masuk ke dalam ISR yang kemudian akan kembali pada program utama. Interrupt terpanggil setiap 1 detik.

B. Tugas II.C.2

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-12 Flowchart Tugas II.C.2 Tugas ini merupakan gubahan dari Tugas II.C.1. Pada kode program dilakukan perubahan pada waktu terjadinya interupsi, yaitu menjadi setiap 6 detik sesuai dengan ketentuan pada modul, yaitu 𝑥 = (9𝑚𝑜𝑑5) + 2.

Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORT A yang terhubung pada LED dengan konfigurasi seperti berikut.

State 1 LED Bit 7 6 5 4 3 2 1 0 State 2 LED Bit 7 6 5 4 3 2 1 0

Gambar 4-13 Konfigurasi LED Tugas II.C.1

Pada kondisi state 1 LED menyala bergantian dengan delay 100 ms dan akan menuju pada state 2 ketika mencapai waktu 200 ms terakhir dalam rentang waktu 6

(8)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 8 detik serta LED menyala secara

keseluruhan.

Pada tugas ini digunakan interrupt dengan timer/counter sehingga ketika program mencapai interrupt kemudian akan menjalankan ISR dan dilanjukan dengan program default yang sedang berjalan. Pada prosedur void init_int (void), perintah TIMSK=0b000000; akan membuat interrupt menjadi disable. Kemudian akan digunakan Timer0 yang ditunjukkan dengan pengaturan TCCR0 0b00000101; dan menggunakan prescaller 1024. TCNT0 diset 0x00 sehingga counter diatur menjadi 0. Fungsi sei() pada prosedur void init_int (void) digunakan untuk membuat kode assembler dari fungsi menjadi satu baris saja agar tidak melakukan overwrite terhadap pemanggilan fungsi lain. Nilai TCNT berubah menjadi 0x5740 mengikuti ketentuan pada modul.

Program utama menjalankan prosedur void init_int (void) lalu meng-assign PORTA sebagai output dengan perintah DDRA=0xFF. Kemudian program diberi delay selama 0.1 detik untuk memberikan output 0b10101010. Setelah itu, TIMSK diatur menjadi 0b000100 sehingga interrupt menjadi enable dan masuk ke dalam ISR yang kemudian akan kembali pada program utama. Interrupt terpanggil setiap 6 detik.

4.4

EXTERNAL

I

NTERRUPT A. Tugas II.D.1

Berikut ini merupakan flowchart program dengan kode program terlampir.

Gambar 4-14 Flowchart Tugas II.D.1

Gambar 4-15 Flowchart ISR

Program utama akan terus berjalan secara default. Interrupt eksternal akan menyebabkan fungsi ISR bekerja dan meninggalkan program utama serta akan segera menampilkan output LED yang

(9)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 9 menyala dari LSB hingga MSB secara

berurutan dengan delay 0.25 detik.

Pada program utama, terdapat pemanggilan prosedur Init_Ext_Int (void); yang berfungsi sebagai inisialisasi external interrupt. MCUCR berfungsi untuk mengatur external interrupt. Apabila terdapat perintah MCUCR=0x02 maka akan menunjukkan bahwa pin INT0 pada ATMega8535 adalah tempat interrupt bekerja ketika input memberikan sinyal falling edge (terhubung dengan interrupt input IS2). MCUCSR berfungsi pada penggunaan INT2 (asynchronous external interrupt). Apabila MCUCSR diatur pada nilai 0x00 akan menunjukkan bahwa MCUCSR tidak digunakan. GICR merupakan register yang berfungsi untuk menentukan INT yang enable dalam melakukan interrupt request. GIFR berfungsi untuk memberikan external flag pada INT yang digunakan. GIFR di atur pada nilai 0x40 karena bit ke-7 digunakan untuk mengaktifkan pin INT1 (terhubung dengan interrupt input IS3). Program utama akan menjalankan inisialisasi prosedur void Init_Ext_Int (void) kemudian dilanjutkan dengan melakukan assign PORTA sebagai output dengan perintah DDRA=0xFF. Selanjutnya dilakukan kondisi perulangan pada PORTA dengan nilai 0b10101010 dan 0b01010101 secara bergantian dengan delay 0.5 detik. Ketika diberikan interrupt eksternal, maka program akan menjalankan ISR dan mengeluarkan perintah untuk menghasilkan output seperti pada running LED dari bit LSB ke bit MSB secara bergantian dengan delay 0.25 detik.. Berdasarkan realisasi program yang telah dibuat akan menghasilkan keluaran pada PORTA yang terhubung pada LED dengan konfigurasi seperti berikut.

State 1 LED Bit 7 6 5 4 3 2 1 0 State 2 LED Bit 7 6 5 4 3 2 1 0

Gambar 4-16 Konfigurasi LED Tugas II.D.1 B. Tugas II.D.2

Berikut ini merupakan flowchart program dengan kode program terlampir.

(10)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1 0 Gambar 4-17 Flowchart ISR

Tugas II.D.2 merupakan gubahan Tugas II.D.1 dengan melakukan penambahan ISR untuk INT1 kemudian mengatur MCUCR menjadi 0b00001010, GICR=0b1100 0000, GIFR=0b11000000. Pada program utama nilai PORTA diganti menjadi 0xFF dan 0x00 secara bergantian dengan delay 0.5 detik.

Penggantian nilai MCUCR=0b00001010 digunakan untuk mengatur bit ISC 00, 01, 10, dan 11 agar pin INT1 dan INT2 berada pada saat respon falling edge. GIFR dan GICR diatur agar dapat mengaktifkan interrupt dan flag untuk pin INT1 serta INT0.

Berikut adalah tampilan LED untuk Tugas II.D.2. LED akan bergantian konfigurasi nyalanya selama 0.5 detik

State 1

LED

Bit 7 6 5 4 3 2 1 0

State 2 = INT0 (terhubung dengan IS2)

LED

Bit 7 6 5 4 3 2 1 0

State 2 = INT1 (terhubung dengan IS3)

LED

Bit 7 6 5 4 3 2 1 0

Gambar 4-18 Konfigurasi LED Tugas II.D.2

5. KESIMPULAN

Pengaturan timer/counter dan interrupt dapat dilakukan dengan cara mengatur register-register terkait dan sesuai dengan fungsi yang akan dijalankan.

Register yang membuat timer dapat diatur adalah register TCCR (Timer/Counter Control Register).

Timer/Counter dapat memberikan delay pada program dengan mengubahnya menjadi timer dengan clock internal. Prescaler berfungsi untuk memperlambat timer dengan mengatur nilai pada register TCCR1B. Prescaler diatur dengan menggunakan register CS pada TCCR. Ada 3 jenis prescaler yang dapat digunakan, yaitu Timer 0 ( 8 bit ), Timer 1 (16 bit), dan timer 2 (8 bit).

Clock External dapat menjadi counter (perncacah) dengan menggunakan register pencacah seperti TCNT dan digunakan OCR sebagai nilai pembandingnya.

Interrupt akan dijalankan secara langsung ketika interrupt trigger yang berasal dari luar (external) atau dari dalam (internal) diberikan pada sistem dengan memperhatikan urutan antrean-nya/eksekusinya. Ketika flag aktif, program secara langsung akan menjalankan ISR (Interrupt Service Routine) yang akan menangani interrupt yang terjadi dan mengembalikan nilai logika interrupt tersebut. ISR harus bekerja dengan cepat agar tidak menhambat keberjalanan program utama, atau program dengan prioritas terendah. Ketika ISR selesai dijalankan, maka program akan kembali memasuki program utama dan

(11)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 11 melanjutkan instruksi berikutnya yang

sempat tertunda.

DAFTAR PUSTAKA

[1]

PETUNJUK

PRAKTIKUM:

Sistem

Mikroprosesor, Laboratorium Dasar Teknik

Elektro STEI ITB, Bandung, 2016.

[2]

Datasheet ATMega8535

[3]

https://en.wikipedia.org/wiki/Prescaler,

diakses pada 30 Maret 2016 20:00

[4]

https://msdn.microsoft.com/en-us/library/ms892408.aspx?f=255&MSPPErr

or=-2147217396, diakses pada 30 Maret 2016

20:27

(12)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 12

LAMPIRAN

A. Kode program Tugas II.A.1

#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 = OCR1A)

loop_until_bit_is_set(TIFR,OCF1A);

//meng-nol-kan flag

TIFR|=_BV(OCF1A);

//overflow interrupt disable

TIMSK|=_BV(TOIE1); }

B. Kode program Tugas II.A.2

#include <avr/io.h> void init_tim(void);

void Delay(void);

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

(13)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 13 Delay(); PORTA = 0xF0; Delay(); } return 0; }

void init_tim(void) {

//mode operasi CTC, sumber clock prescaller 256

TCCR1A = 0;

TCCR1B = 0b00001101;

//overflow interrupt1 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 = 0xA8; OCR1AL = 0xC0;

//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); }

C. Kode program Tugas II.B.1

#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;

(14)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 14 }

void init_tim(void) {

//mode operasi dan sumber clock

TCCR0=0b00000110;

//overflow interrupt disable

TIMSK=(0<<OCIE0); }

D. Kode program Tugas II.B.2

#include <avr/io.h> #include <avr/io.h> void init_tim(void);

void init_tim1(void);

void Delay(void);

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

//penentuan nilai awal timer TCNT0 = 1;

//penentuan nilai compare OCR0 = 7;

//menanti compare match

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

void init_tim(void){

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

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

}

void init_tim1(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); //(1<<TOIE1);

//penentuan nilai awal timer

TCNT1H=0; TCNT1L=0;

(15)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 15

//penentuan nilai compare untuk delay 7 detik : = 7x8000000/1024

OCR1AH=0x98; OCR1AL=0x97;

//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); }

E. Kode program Tugas II.C.1

#include <avr/io.h>

#define F_CPU 7372800UL //8MHz

#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=0xE0; }

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; //prescalar 1024 TCNT1H=0xE3; TCNT1L=0xE0; sei(); }

F. Kode program Tugas II.C.2

#include <avr/io.h>

#define F_CPU 7372800UL //8MHz

#include <util/delay.h> #include <avr/interrupt.h>

(16)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 16

void init_int(void); ISR(TIMER1_OVF_vect) { unsigned char i; PORTA=0xFF; _delay_ms(200); TIFR=(1<<TOV1);

TCNT1H=0x57; //9mod5 +2=6, dengan 8MHz didapat 48E5, dengan 7372800 didapat 5740

TCNT1L=0x40;//9mod5 +2=6, dengan 8MHz didapat 48E5, dengan 7372800 didapat 5740

}

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; //prescalar 1024

TCNT1H=0x57; //9mod5 +2=6, dengan 8MHz didapat 48E5, dengan 7372800 didapat 5740

TCNT1L=0x40;//9mod5 +2=6, dengan 8MHz didapat 48E5, dengan 7372800 didapat 5740

sei(); }

G. Kode program Tugas II.D.1

#include <avr/io.h>

#define F_CPU 7372800UL //8MHz

#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();

(17)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 17 DDRA=0xFF; while (1) { PORTA = 0b10101010; _delay_ms(500); PORTA = 0b01010101; _delay_ms(500); } return 0; }

void Init_Ext_Int(void) { MCUCR=0x02; MCUCSR=0x00; GICR=0x40; GIFR=0x40; }

H. Kode program Tugas II.D.2

#include <avr/io.h> #define F_CPU 8000000UL #include <util/delay.h> #include <avr/interrupt.h> void Init_Ext_Int(void); ISR(INT0_vect){ PORTA = 0x99; _delay_ms(500); PORTA = 0x66; _delay_ms(500); } ISR(INT1_vect){ PORTA = 0x4F;//nim 079 _delay_ms(500); PORTA = 0x50;//nim 080 _delay_ms(500); }

int main(void){ Init_Ext_Int(); sei(); DDRA=0xFF; while (1){ PORTA = 0xFF; _delay_ms(500); PORTA = 0x00; _delay_ms(500); } return 0; }

void Init_Ext_Int(void){ MCUCR=0b00001010; MCUCSR=0x00; GICR=0b11000000; GIFR=0b11000000; }

Gambar

Gambar 2-2 Register MCUCSR, GICR, dan GIFR
Gambar 3-4 Diagram percobaan 4
Gambar 4-4 Flowchart Tugas II.A.2 Berdasarkan  realisasi  program  yang  telah  dibuat  akan  menghasilkan  keluaran  pada  PORT  A  yang  terhubung  pada  LED  dengan konfigurasi seperti berikut
Gambar 4-7 Konfigurasi LED Tugas I.B.1
+6

Referensi

Dokumen terkait

Penelitian bertujuan untuk mengetahui konsentrasi bubur nanas dan maltodekstrin yang tepat pada pembuatan kecap bubuk ampas tahu secara enzimatis.. Hasil uji

Sedangkan subjek dengan perilaku baik terbanyak pada rentang usia Disarankan bagi pasien yang menggunakan gigi tiruan lepasan agar lebih memperhatikan kebersihan gigi.. tiruannya

Hasil : Hasil penelitian uji paired sample T-test pada kedua kelompok didapatkan hasil p=0,000&lt;0,05 yang berarti ada pengaruh pemberian terapi laser berintensitas rendah dan

Selama jangka waktu audit (Desember 2017, Januari 2018 dan Februari 2018) tidak terdapat kegiatan penerimaan bahan baku berupa kayu bulat (KB) atau kayu olahan,

Para PNS lingkungan Kecamatan dan Kelurahan wajib apel pagi setiap hari senin di Halaman Kantor Kecamatan Kebayoran Baru, dan akan diberikan teguran kepada yang tidak ikut apel

Sesuai dengan tujuan PetroChina mewujudkan MNC yang memiliki daya saing tinggi dan meningkatkan produksi minyak dan gas bumi di Indonesia maka tahapan-tahapan

Dalam studi manajemen, kehadiran konflik pendidikan tidak bisa terlepas dari permasalahan keseharian yang dirasakan oleh pengelola lembaga pendidikan. Konflik tersebut

Dalam jangka panjang, monopolis akan tetap beroperasi hanya jika ia dapat memperoleh laba atau setidak-tidaknya mencapai breakeven dengan memproduksi pada tingkat