Anda di halaman 1dari 22

SISTEM MIKROkontroller

DONNY RADIANTO
PENDAHULUAN
• INTTERRUPT dapat diistilahkan menyela. Misalkan 2 orang A dan B
sedang berbicara , kemudian tiba – tiba si B mendapat berita yang
sangat penting , maka pembicaraan antara A dan B akan berhenti
sejenak. Setelah Selesai, maka si B melanjutkan pembicaraan dengan
si A.
• Kondisi seperti ini dalam istilah mikrokontroller disebut sebagai
“interrupt”
INTERRUPT PADA BLOK DIAGRAM
Konfigurasi INTERRUPT Pada ATMEGA 16
• ATMEGA 16 memiliki 3 Interrupt , Interrupt 0, 1, dan 2

INTERRUPT 2

INTERRUPT 0

INTERRUPT 1
Macam Interrupt pada Atmega 16

Interrupt Unit :

1. Interrupt 0
2. Interrupt 1
3. Interrupt 2
Lokasi Interrupt Vektor pada Atmega 16

Eksternal Interrupt Request


0 dan 1

Eksternal Interrupt Request 2


GICR (GENERAL INTERRUPT
CONTROL REGISTER)

LOKASI INTERRUPT 2, 0, DAN 1


PADA BIT 5, 6, DAN 7
GICR (GENERAL INTERRUPT
CONTROL REGISTER)

IVSEL : Ketika bit ini = 0 , maka


interrupt vektor akan ditempatkan
pada Flash Memory , sebaliknya IVCE : bit ini harus di set “1”
jika bit ini = 1, maka interrupt untuk mengaktifkan IVSEL
vector akan ditempatkan pada
awal bagian boot loader dari Flash
Eksternal Interrupt 0, 1, dan 2
• Eksternal interrupt ini dapat ditrigger dengan menggunakan interrupt
0 , Interrupt 1, dan interrupt 2
• Eksternal Interrupt dapat ditrigger dengan memanfaatkan sisi turun
maupun naik atau dalam kondisi level rendah.
• Sedangkan untuk Interrupt 2 , hanya dapat ditrigger dengan
memanfaatkan sisi turun maupun naik.
• Interrupt akan aktif selama ditahan “rendah”
Setting Interrupt Service Control
• Untuk melakukan pensetting Interrupt Service Control dapat
memanfaatkan MCUCR (MCU Control Register)
Setting Interrupt Sense Control 1
• Digunakan untuk mensetting eksternal interrupt 1 dengan ISC 11 dan
ISC 10, yaitu pada bit 3, dan bit 2
Setting Interrupt Sense Control 1
• Digunakan untuk mensetting eksternal interrupt 1 dengan isc 1 dan
isc 0, yaitu pada bit 3, dan bit 2
• Penentuan eksternal interrupt falling edge atau rising edge dengan
memanfaatkan tabel dibawah ini
Setting Interrupt Sense Control 0
• Digunakan untuk mensetting eksternal interrupt 0 dengan ISC 01 dan
ISC 00, yaitu pada bit 1, dan bit 0
Setting Interrupt Sense Control 0
• Digunakan untuk mensetting eksternal interrupt 0 dengan ISC 01 dan
ISC 00, yaitu pada bit 1, dan bit 0
• Penentuan eksternal interrupt falling edge atau rising edge dengan
memanfaatkan tabel dibawah ini
Setting Interrupt Sense Control 2
• Untuk menggunakan mensetting eksternal interrupt 2 , maka
diperlukan “MCUCSR = MCU CONTROL AND STATUS REGISTER”
Setting Interrupt Sense Control 2
• Selain memanfaatkan MCUCSR, untuk mengaktifkan interrupt
eksternal 2 , maka settingan pada GICR (GENERAL INTERRUPT
CONTROL REGISTER) seperti pada gambar dibawah ini juga harus
dilakukan, yaitu dengan bit INT 2 diset ke “1”
SETTING INTERRUPT FLAG
• Untuk mensetting interrupt Flag, yaitu dengan menggunakan
“General Interrupt Flag Register”, seperti pada gambar dibawah ini :
Contoh Program Bagian 1
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
/*Interrupt Service Routine for INT0*/
ISR(INT0_vect)
{
PORTC=~PORTC;/* PORT C SEBAGAI KELUARAN */
_delay_ms(50); /* DELAY */
PORTB=~PORTB;/* PORT B SEBAGAI KELUARAN*/
_delay_ms(50);
}
Contoh Program Bagian 2
int main(void)
{
DDRC=0xFF;/* PORT C SEBAGAI KELUARAN*/
PORTC=0;
DDRB=0xFF;/* PORT B SEBAGAI KELUARAN*/
PORTB=0;
DDRD=0;/* PORTD SEBAGAI MASUKAN */
PORTD=0xFF;/* PORT D DI PULL UP */
Contoh program bagian 3
GICR = 1<<INT0;/* MENGAKTIFKAN INTERRUPT 0*/
//MCUCR = 1<<ISC01 | 1<<ISC00; /* Trigger INT0 on rising edge */
MCUCR = 0<<ISC01 | 0<<ISC00;
sei();/* MENGAKTIFKAN GLOBAL INTERRUPT*/
while(1);
}
HASIL PERCOBAAN

Masukan dari
Interrupt 0
(Atmega 16)
To
Port B dan Port
Laptop
C sebagai
Keluaran
Terimakasih Atas Perhatiannya

Anda mungkin juga menyukai