310 likes | 502 Views
EE-2623 Mikroprosesor & Antarmuka. Materi 9 Interrupt Team Dosen 2007. INTerrupt. Sinyal input Fungsi: meminta pelayanan prosesor Kerja gabungan antara h/w dan s/w dikarenakan uP untuk kaki INTR dan NMI NMI = non maskable interrupt tidak bisa dihalangi oleh software.
E N D
EE-2623Mikroprosesor & Antarmuka Materi 9 Interrupt Team Dosen 2007
INTerrupt • Sinyal input • Fungsi: meminta pelayanan prosesor • Kerja gabungan antara h/w dan s/w dikarenakan uP untuk kaki INTR dan NMI • NMI = non maskable interrupt tidak bisa dihalangi oleh software
Langkah-langkah interrupt • H/W : Devais mengirim INT • S/W : • Menghentikan program yang sedang berjalan • Simpan parameter-parameter penting dari program tersebut agar bisa kembali meneruskan program tsb • Menjalankan program pelayanan interupt • Ambil parameter-parameter program awal dan teruskan
Parameter penting program • Isi dari register FLAG 15 141312111009080706050403020100 XX X XODITSZXAXPXC O = Overflow T = Trap A = Auxiliary carry D = Direction S = Sign P = Parity I = interrupt Z = Zero C = Carry X = tidak terpakai I = 0 melayani interupt, I = 1 tidak melayani interupt • Alamat : IP dan CS • Isi dari register-register data yang digunakan oleh program interupt
Assembly • PUSHF simpan flag • STI I = 1 • PUSH IP • PUSH CS • PUSH AX atau PUSH BX ataudll • Program Interupt • Dllatau POP BX atau POP AX • POP CS • POP IP • POPF mengambilisi flag asal
Program Interupt • Mengisi IP dan CS • instruksi • ….. • instruksi • IRET interupt return
uP IR0 Int Cont IR7 INTR Interrupt Controller • Masalah : kaki INT di uP 8088/8086 hanya 1 (satu) padahal devais yang minta pelayanan >1 • Solusi : ditambahkan IC interrupt controller
3. INTA 5. Send Interrupt Type 4. INTA (Timer untukkesempatan Master mengirim ID ke slave 1. Interrupt dari divais 2. PIC mengirim INT ke uP
IBM PC-AT Interrupt architecture IRQ7 IRQ15 IRQ0 IRQ8 Prioritas IRQ: 0,1,8,9,10,11,12,13,14,15,3,4,5,6,7
Alamatfisik FFFF0 tabel vector bootupF000:284E Alamatfisik 00000 sd 003FF table vector intterupt Interrupt Vector Table
Interupt 0 sd 255 • Dari IVT didapatkan 256 vector ISR (Interrupt Service Routine) • Interrupt hardware PIC • Interrupt software OS (contoh : INT 21H) • Interrupt hardware mempunyai prioritas lebih tinggi dari interrupt software kecuali interrupt dari system (INT 0,1,2,3,4)
INT 0 • Divide by Zero • Menangani hasil operasi aritmetik pembagian yang hasilnya 0 • Umumnya : menghasilkan pesan kesalahan ke OS pesan ke program aplikasi • MOV AL,92 ;AL=92 SUB CL,CL ;CL=0 DIV CL ;92/0=undefined result • MOV AX,0FFFFH ;AX=FFFFH MOV BL,2 ;BL=2 DIV BL 65535/2 =32767 larger than 255 .maximum capacity of AL
Masking Interrupt & NMI (non maskable interrupt) • IRQ padadasarnyabisadihalangioleh software memprogram OCW1 • Fungsinyamenghalangidivais-divaistertentu yang meminta IRQ • Disediakan kaki NMI sebagaimasukan interrupt yang mautidakmauharusdilayani
0 0 0 0 1 LTIM 0 SNGL IC4 1= ICW4 needed 0= no ICW4 needed 1= single 0= cascade Always 0 for the x86 1= level trigger input 0= edge trigger input Always 0 for x86 Programming • ICW1 • A0 = 0 dan D4 = 1 A0 D4
A0 1 T7 T6 T5 T4 T3 T2 T1 T0 ICW2 • ICW2 cirinya A0 = 1 • ICW2 menentukanIRx INTy ; 3 bit LSB ICW2 ditentukanoleh PIC sesuaidenganIRnya • Contoh: • IR0 INT 70H ; program ICW2 = 01110000 Maka: IR0 INT70H IR1 INT71H dst
ICW3 Di PIC master diprogramsesuaidenganIRx yang dihubungkandengan PIC slave • Misal : di IMB PC/AT slave melalui IR2 PIC master ICW3 = 00000100 ; A0 = 1 • Di PIC slave ICW3 menentukanalamatdari slave (CAS0, CAS1, CAS2 dari master)
OCW • Setelahdiprogramdengan ICW1, ICW2, ICW3, ICW4, padadasarnya PIC telahsiapuntukmenerima Interrupt daridivais. • Program aplikasibisamemask interrupt tertentu, program aplikasitidakingindigangguoleh INT tertentu, misal : tidakingindiganggu KYB, maka interrupt untuk keyboard di mask • Caranyadenganmemprogram OCW
OCW1 • OCW1 langsunguntukmemask IR tertentu, misal IR6 ingindi mask OCW1 = 01000000 ; A0 = 1 • Karena status mask padasaat PIC dimulaitidakdiketahuimaka, OCW1 harusdi set segerasetelah ICW-ICW diprogram
OCW2 • Untuk menentukan urutan priotitas IR0 sd IR7 • Ada 3 mode • Fully Nested • Sedang menjalankan IR3, datang IR2 dan IR4 pada saat yang bersamaan IR3 ditunda ke stack, IR2 dilayani sampai selesai, IR3 dilanjutkan sampai selesai, baru IR4 dilayani
MODE : Fully nested • Urutan prioritas bisa digeser dengan mengisi OCW2 • Misal : • paling tinggi IR5 OCW2 = 00100101 • Melayani IR4, datang IR5 dan IR0 IR4 ditunda ke stack, IR5 dilayani, IR0 dilayani, IR4 dilanjutkan
MODE : Automatic Rotation • IR yang sudah dilayani menjadi IR dengan prioritas terendah • Misal • IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7 • Dilayani IR5, maka urutan : IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5 • Dilayani IR2, maka urutan : IR3,IR4,IR5,IR6,IR7,IR0,IR1,IR2 • Agar semua intterupt bisa kebagian dilayani
MODE : specific rotation • IR5 selesai dilayani, maka : IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5 • IR2 selesai dilayani, maka : IR3,IR4,IR6,IR7,IR0,IR1,IR5,IR2 • IR4 selesai dilayani, maka : IR6,IR7,IR0,IR1,IR3,IR5,IR2,IR4 • IR7 • IR1 • IR3 • IR0 • IR6 • IR5 selesai dilayani, maka : IR0,IR1,IR2,IR3,IR4,IR6,IR7,IR5 • IR2 selesai dilayani, maka : IR0,IR1,IR3,IR4,IR6,IR7,IR5,IR2 • IR4 selesai dilayani, maka : IR0,IR1,IR3,IR6,IR7,IR5,IR2,IR4 • IR7 selesai dilayani, maka : IR0,IR1,IR3,IR6,IR5,IR2,IR4,IR7 • IR1selesai dilayani, maka : IR0,IR3,IR6,IR5,IR2,IR4,IR7,IR1 • IR3selesai dilayani, maka : IR0,IR6,IR5,IR2,IR4,IR7,IR1,IR3 • IR0selesai dilayani, maka : IR6,IR5,IR2,IR4,IR7,IR1,IR3,IR0 • IR6 selesai dilayani, maka : IR5,IR2,IR4,IR7,IR1,IR3,IR0,IR6 Program : IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7
GND 1 40 VCC AD14 2 39 AD15 AD13 3 BHE/S7 38 A16/S3 AD12 4 MN/MX 37 A17/S4 AD11 5 RD 36 A18/S5 AD10 6 35 A19/S6 AD9 7 34 AD8 8 8086 WR 33 AD7 9 M/IO 32 AD6 10 DT/R 31 HOLD AD5 11 DEN 30 HLDA AD4 12 29 AD3 13 INTA 28 AD2 14 TEST 27 AD1 15 26 AD0 16 25 ALE NMI 17 24 INTR 18 23 CLK 19 22 READY GND 20 21 RESET • Reset • Menghentikan aktifitas mp saat itu • masukan • Aktif ‘high’ • Kondisi register di dalam mikroprosesor setelah reset:
Kondisi Reset / Bootup • Q : Alamat (IO / Memori) berapa yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset) ? • A : Memori • Q : Tahudarimana yang diaksesmemori? • A : Register CS diisi FFFF • Q : Memangnyadipeta I/O tidakadasegmen? • A : Tidakadakarenapeta I/O hanya 64 kB • Q : Apa yang andatahutentangsegmen? Ukuran? Jenis? • A : Ukuransegmen 64kB, Jenis 4 : Code, Data, Stack, Extra • Q : Alamat (IO / Memori) berapa yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset) ? • A : AlamatMemori FFFF0 yang diaksesolehuPpadasaatpertama kali bootup (sesudah reset) Back