Rabu, 24 Februari 2010

interupsi

INTERUPSI

Kelompok : Muhammad Muchlis
Pitriantoro Apriadi
Muchamad ikbal
Putut R
Januar adi
Muhammad sobirin
Fangky B.





Interupsi
Seperti namanya, interupsi adalah suatu kejadian yang akan menghentikan sementara jalan program saat itu. Dengan interupsi, suatu alur program dapat dihentikan sementara untuk menjalankan suatu subrutin, dan kemudian melanjutkan aliran program secara normal seperti tidak pernah ada interupsi. Subrutin ini yang disebut dengan interrupt handler, dan hanya dijalankan jika terjadi suatu kejadian khusus (event). Kejadian ini bisa berupa timer yang mengalami overflow, penerimaan karakter melalui port serial, mengirimkan karakter melalui port serial, atau salah satu dari dua kejadian eksternal. Mikrokontroler 89C51 bisa dikonfigurasi untuk menangani interupsi yang disebabkan oleh salah satu dari kejadian.
Dengan interupsi ini, dapat dengan mudah dimonitor kejadian-kejadian yang diinginkan. Tanpa interupsi maka proses monitor ini dilakukan manual dengan pengecekan berulang. Proses pengecekan manual ini akan membuat program menjadi panjang dan lebih rumit.
Interupsi dalam teknologi informasi merujuk kepada sebuah permintaan terhadap layanan dari CPU yang dibuat baik secara eksternal oleh sebuah perangkat keras (sebagai contoh: oleh disk drive, atau port I/O) atau secara internal oleh CPU itu sendiri. Interupsi perangkat keras eksternal digunakan untuk beberapa situasi seperti halnya ketika sebuah karakter telah diterima dari sebuah port I/O tertentu dan harus diproses oleh CPU, disk drive yang telah siap untuk mentransfer sekumpulan data, atau system timer yang berdetak. Sementara itu, interupsi perangkat keras internal terjadi ketika sebuah program mencoba sesuatu yang tidak mungkin, seperti halnya mencoba untuk mengakses alamat memori yang tidak ada atau membagi sebuah bilangan dengan angka nol. Interupsi perangkat keras umumnya diberi tingkatannya yang disusun berdasarkan prioritasnya dan tingkat kepentingannya. Tingkatan interupsi tertinggi diberikan kepada sebuah jenis interupsi yang disebut sebagi Non-Maskable Interrupt (NMI), yang mengindikasikan kesalahan yang serius, seperti halnya kerusakan/kegagalan memori atau perangkat lain yang harus dilayani secara langsung oleh prosesor.

Kejadian-kejadian yang Membangkitkan Interupsi
Dalam keluarga 8051, ada beberapa kejadian yang dapat membangkitkan interupsi, yaitu:
1. Timer 0 overflow
2. Timer 1 overflow
3. Penerimaan / Pengiriman data secara serial
4. Kejadian eksternal 0
5. Kejadian eksternal 1
Dengan demikian, perlu dibedakan interupsi yang terjadi karena kejadian-kejadian yang berbeda. Hal ini bisa diwujudkan dengan adanya alamat pasti bagi sebuah rutin interupsi untuk masing-masing interupsi.


Daftar Alamat Rutin Interupsi
Interupsi Flag Alamat Rutin
Eksternal 0 IE0 0003h
Timer 0 TF0 000Bh
Eksternal 1 IE1 0013h
Timer 1 TF1 001Bh
Serial R1/T1 0023h
Dengan referensi tabel di atas, dapat dilihat bahwa jika TIMER0 mengalami overflow (bit TF0 logika 1), maka program utama akan ditunda sementara dan kontrol program akan melompat ke alamat 0003h.
Menyeting Interupsi
Pada saat awal dihidupkan (power on), semua interupsi dimatikan. Jadi, meskipun bit TF0 diset (interupsi timer 0 diaktifkan), mikrokontroler 89C51 tidak akan menjalankan rutin interupsi. Sebuah program harus dibuat dan dijalankan untuk mengaktifkan dan menspesifikasikan interupsi mana yang diinginkan. Hal ini dapat dilakukan dengan mengkonfigurasi SFR IE (Interrupt Enable) yang berada di alamat A8h. Konfigurasi bit-bit SFR IE yang mengatur enable dari konfigurasi interupsi tercantum pada tabel di bawah ini.
Konfigurasi Bit-bit SFR IE
Bit Nama Alamat Fungsi
7 EA AFh Global enable/disable interupsi
6 - AEh Tidak didefinisikan
5 - ADh Tidak didefinisikan
4 ES ACh Enable interupsi serial
3 ET1 ABh Enable interupsi timer 1
2 EX1 AAh Enable interupsi eksternal 1
1 ET0 A9h Enable interupsi timer 0
0 EX0 A8 Enable interupsi eksternal 0
Sebelum semua interupsi dijalankan, bit 7 dari SFR IE harus diset terlebih dahulu. Global enable/disable interupsi ini menyebabkan semua interupsi enable atau disable. Jika bit 7 IE ini dinolkan, tidak akan ada satu interupsi pun yang terjadi. Prosedur yang benar adalah dengan mengeset jenis interupsi yang diinginkan dan kemudian mengeset bit 7 IE, barulah interupsi akan berjalan dengan baik.
Prioritas Interupsi
Mikrokontroler 89C51 menawarkan dua macam prioritas interupsi, yaitu prioritas tinggi dan prioritas rendah. Dengan demikian, dapat ditentukan suatu interupsi memiliki prioritas pengerjaan lebih dahulu daripada interupsi-interupsi yang lain yang bekerja saat itu. Sebagai contoh, interupsi timer 1 diaktifkan untuk secara otomatis memanggil sebuah rutin saat timer 1 mengalami kondisi overflow. Di samping itu, interupsi serial juga diaktifkan untuk memanggil suatu rutin saat ada sebuah karakter diterima dalam port serial. Dalam kasus ini diinginkan bahwa penerimaan karakter dari port serial lebih penting daripada interupsi timer. Jadi seandainya interupsi timer 1 sedang bekerja dan terjadi penerimaan karakter, maka rutin interupsi timer 1 tersebut akan diinterupsi oleh interupsi port serial dan akan ditunda sementara untuk mengerjakan rutin interupsi port serial ini. Setelah pengerjaan rutin interupsi serial selesai, maka kontrol program akan kembali ke rutin interupsi timer 1. Yang dikerjakan di sini adalah mengeset prioritas interupsi serial lebih tinggi daripada prioritas interupsi timer. Prioritas interupsi ini dikontrol oleh SFR IP dengan alamat B8h yang memiliki konfigurasi bit-bit sebagaimana tercantum dalam tabel di bawah ini.
Konfigurasi Bit-bit SFR IP
Bit Nama Alamat Fungsi
7 - Tidak terdefinisi
6 - Tidak terdefinisi
5 - Tidak terdefinisi
4 PS BCh Prioritas interupsi serial
3 PT1 BBh Prioritas interupsi timer 1
2 PX1 BAh Prioritas interupsi eksternal 1
1 PT0 B9h Prioritas interupsi timer 0
0 PX0 B8h Prioritas interupsi eksternal 0
Pemakaian prioritas interupsi di atas memiliki beberapa peraturan yang tercantum di bawah ini:
1. Tidak ada interupsi yang meninterupsi interupsi prioritas tinggi.
2. Interupsi prioritas tinggi boleh menginterupsi interupsi prioritas rendah.
3. Interupsi prioritas rendah boleh terjadi jika tidak ada interupsi lain yang sedang dijalankan.
4. Jika dua interupsi terjadi pada waktu bersamaan, interupsi yang memiliki prioritas lebih tinggi akan dikerjakan terlebih dahulu. Jika keduanya memiliki prioritas sama, maka interupsi yang berada pada urutan polling akan dikerjakan terlebih dahulu.
Mikrokontroler 89C51 secara otomatis akan menguji apakah sebuah interupsi bisa terjadi setelah setiap instruksi dikerjakan. Pengecekan ini mengikuti suatu alur yang disebut dengan Polling Sequence dengan urutan:
1. Interupsi Eksternal 0
2. Interupsi Timer 0
3. Interupsi Eksternal 1
4. Interupsi Timer 1
5. Interupsi serial
Ini berarti jika sebuah interupsi serial terjadi pada waktu bersamaan dengan interupsi eksternal 0, maka interupsi eksternal 0 akan dikerjakan terlebih dahulu dan interupsi serial baru akan dikerjakan setelah pengerjaan rutin interupsi eksternal 0 selesai dilakukan.

Tidak ada komentar:

Posting Komentar

YANG MO INFO