Minggu, 04 Desember 2016

MODUL VII



MODUL VII
MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER ATMEGA8535


 TUJUAN

  • Menjelaskan fitur interrupt dalam mikrokontroler.
  • Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk menjalankan interupsi pada saat program utama dijalankan

INTERRUPT

Interrupt adalah kondisi di mana pada saat program utama dieksekusi/dikerjakan oleh CPU kemudian tiba-tiba berhenti untuk sementara waktu karena ada rutin lain yang harus ditangani terlebih dahulu oleh CPU. Setelah selesai mengerjakan rutin tersebut, CPU kembali mengerjakan instruksi pada program utama. Port yang berfungsi sebagai interrupt eksternal adalah:
PORTD.2 (PD2)à External Interrupt 0 Input (INT0)
PORTD.3 (PD3)à External Interrupt 1 Input (INT1)
PORTB.2 (PB2)à External Interrupt 2 Input (INT2)
Di dalam mikrokontroler AVR terdapat 21 interrupt baik eksternal maupun internal. Interrupt tersebut dapat dilihat dalam tabel berikut.

Register-register yang digunakan untuk interrupt meliputi:
a.      MCU Control Register-MCUCR
·         Bit 3,2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 dan Bit 0
·         Bit 1,0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 dan Bit 0
b.      MCU Control and Status Register-MCUCSR
·         ISC2 = 0, a falling edge on INT2 activates the interrupt
·         ISC2 = 1,  a rising edge on INT2 activates the interrupt
·         Lebar pulsa minimum: 50 ns
c.       Status Register-SREG
·         Bit 7 – I: Global Interrupt Enable
·          
d.      General Interrupt Control Register-GICR
·         Bit 7 - INT1:eksternal interrupt request 1 enable
·         Bit 6 – INT0 :eksternal interrupt request 0 enable
·         Bit 5 – INT2 : eksternal interrupt request 2 enable





e.      General Interrupt Flag Register-GIFR
·         Bit 7 - INT1:eksternal interrupt flag 1 enable
·         Bit 6 – INT0 :eksternal interrupt flag 0 enable
·         Bit 5 – INT2 : eksternal interrupt flag 2 enable

ALAT DAN BAHAN YANG DIGUNAKAN

  • 1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
  • 1 buah catu daya DC +5V
  • 1 buah multimeter
  • 1 buah ISP Downloader AVR
  • 1 buah sistem minimum AVR
  • 1 buah I/O
  • 1 buah kabel printer USB
  • 2 buah kabel pita hitam

PROSEDUR

A.     MENGGUNAKAN 1 INTERRUPT
1.      Hubungkan PORTC pada minimum system dengan soket jumper OUTPUT pada trainer dan PORTD.2 (INT0) dari minimum sistem ke soket IS1 pada trainer.
2.      Buka program Code Vision AVR
3.      Buatlah project baru. Pada tap External IRQ centang INT0 lalu pilih Mode Falling edge dan set PORTC sebagai OUTPUT












4.      Ketik sub routine interrupt seperti sintaks dibawah ini.
5.      Ketik dalam program utama (main program) 
6.      Compile dan Build program, jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.
7.      Amati nyala LED sebelum dan sesudah anda menekan tombol interupsi (lihat tabel interupsi pada data hasil percobaan)
8.      Ulangi langkah 3-9 untuk mode interupsi (Interrupt Sense Control)Rising Edge, Any Change dan Low Level.

B.      MENGGUNAKAN 3 INTERRUPT SECARA BERSAMAAN
1.      Hubungkan PORTC pada minimum system dengan soket jumper OUTPUT pada trainer,  PORTD.2 (INT0), PORTD.3 (INT1) dan PORTB.2 (INT2) dari minimum sistem ke soket IS1 pada trainer.
2.      Buka program Code Vision AVR.
3.      Buatlah project baru. Pada tap External IRQ centang INT0 Enabled, INT1 Enabled dan INT2 Enabled. Kemudian pilih Mode Falling Edge untuk semua interrupt dan set PORTC sebagai OUTPUT.








4.      Ketik sub routine interrupt seperti sintaks dibawah ini.

5.      Ketik dalam program utama (main program) 
6.      Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.
7.      Hubungkan INT0, INT1, dan INT2 menjadi satu dengan IS1 pada trainer
8.      Amati nyala LED sebelum dan sesudah anda menekan tombol interupsi tombol IS1








DATA HASIL PERCOBAAN

Tabel Interupsi
No
Mode Interupsi
Program yang dijalankan (Interrupt / Main Program)
Saat tombol IS1 belum ditekan (Low)
Saat tombol IS1 ditekan dan ditahan
(Raising)
Saat tombol IS1 dilepaskan
(Falling)
1
Falling Edge
11110000
11110000
10101010
11111111
2
Rising Edge
11110000
10101010
11111111
10101010
11111111
3
Any Change
11110000
10101010
11111111
10101010
11111111
4
Low Level
10101010
11111111
11110000
10101010
11111111






ANALISA DATA

1.      Analisa data hasil pada Tabel Interupsi
Dari tabel interupsi terdapat 4 jenis mode interupsi, seperti pada teori yang sudah dipelajari. Dalam praktikum ini adalah bagaimana kita tahu fungsi dari setiap mode interup, yang mana fungsi interup adalah sebegai penyela dalam suatu program. Keadaan awal pada lampu LED adalah 11110000, pada mode pertama adalah mode falling. Mode falling adalah interup akan diterapkan pada suatu program ketika keadaan 1 berubah atau menjadi 0. Dari hasil tabel interup dapat dilihat yang mula nyala LED 11110000 dan diberi keadaan raising tetap 11110000, selanjutnya ketika diberi keadaan falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup. Mengapa dapat berubah? Dikarenakan perpindahan dari raising ke falling adalah syarat dari keadaan mode Falling Edge bekerja.
Pada mode kedua adalah mode raising. Mode raising adalah interup akan diterapkan pada suatu program ketika keadaan 0 berubah atau menjadi 1. Dari hasil tabel interup dapat dilihat yang mula nyala LED 11110000 dan diberi keadaan raising menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup, selanjutnya ketika diberi keadaan falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup. Seharusnya ketika diberi keadaan falling nyala LED akan berubah menjadi 11110000, karena ketika falling tidak memenuhi syarat dalam mode raising. Kenapa nyala LED dapat berubah & tidak seperti pada teori? Dikarenakan perpindahan dari falling ke raising adalah syarat dari keadaan mode Raising Edge bekerja. Dalam hal ini belum mendapat solusi terhadap masalah tersebut.
Pada mode ketiga adalah mode any change. Mode any change adalah interup akan diterapkan pada suatu program ketika keadaan 0 berubah atau menjadi 1 ataupun sebaliknya. Dari hasil tabel interup dapat dilihat yang mula nyala LED 11110000 dan diberi keadaan raising menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup, selanjutnya ketika diberi keadaan falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup. Kenapa hal tersebut terjadi? Dikarenakan perpindahan dari raising ke falling adalah syarat dari keadaan mode Any Change bekerja. Dan perpindahan dari falling ke raising adalah syarat dari keadaan mode Any Change bekerja.
Pada mode keempat adalah mode Low level. Low level adalah interup akan bekerja ketika kondisinya = 0. Dari hasil tabel interup dapat dilihat yang mula nyala LED 10101010 & 1111111  dan diberi keadaan raising menjadi 11110000 seperti isi program yang terdapat pada interup, selanjutnya ketika diberi keadaan falling menjadi 10101010 & 1111111 seperti isi program yang terdapat pada interup. Kenapa pada moe ini dalam keadaan awal interup bekerja? Dikarenakan dalam kodisi awal yang diberikan adalah 0, sehingga pada awal program interup bekerja dan memenuhi syarat dari mode Low Level. Pada saat diberi keadaan falling pun interup bekerja, karena sudah memenuhi syarat dari mode Low level.
2.      Ketika ke dua interupt diaktifkan secara bersamaan tuliskan urutan terjadinya interupt
Dalam kondisi ini, urutan terjadinya interup tergantung dari mode interup mana yang terpenuhi syaratnya. Untuk praktikum ini kelompok kami menggunakan mode yang sama, yaitu Falling Edge akan tetapi menggunakan 2 interup yang berbeda dan program berbeda, yaitu INT0 & INT1. Ketika syarat dari Falling Edge terpenuhi, interup yang bekerja adalah interup yang lebih dulu menerima keadaan atau syarat yang diberikan. Seperti yang terlihat pada gambar

Tidak ada komentar:

Posting Komentar