Fungsi Interupt dan Reset

2.1.5 Fungsi Interupt dan Reset

Interupsi dan reset, pada dasarnya adalah fungsi panggilan. Tujuan dari bagian ini adalah untuk menggambarkan bagaimana menyela fungsi dan bagaimana me-reset, yang merupakan interupsi khusus, fungsi Interupsi, sebagai nama mereka menyarankan, mengganggu aliran program prosesor dan menyebabkannya bercabang ke sebuah rutin layanan interupsi ISR yang melakukan apa yang seharusnya terjadi ketika interupsi terjadi. Interupsi berguna untuk situasi-situasi di mana prosesor harus segera menanggapi interupsi atau dalam kasus-kasus di mana sangat boros untuk prosesor untuk menghitung sebuah perintah. Contoh perlunya tanggapan langsung termasuk menggunakan interupsi untuk melacak waktu interrupt dapat memberikan tanda centang untuk basis waktu jam atau tombol off darurat yang segera menghentikan mesin saat terjadi keadaan darurat. Contoh aplikasi yang berguna lainnya interupsi termasuk perangkat seperti keypads atau perangkat input lainnya. Dalam hal kemampuan mikrokontroler untuk instruksi proses, kita manusia sangat lambat. Ini akan menjadi boros untuk prosesor perhitungan keypad dengan harapan bahwa salah satu kita manusia lambat telah menekan tombol. Dalam hal ini, menekan sebuah tombol mungkin menyebabkan interupsi dan mikrokontroler akan kemudian sebentar berhenti sejenak untuk melihat apakah tindakan yang diperlukan itu. Jika penekanan tombol adalah yang pertama dari beberapa yang diperlukan untuk menyebabkan tindakan terjadi, prosesor akan kembali ke tugas sampai cukup kunci telah ditekan untuk memerlukan tindakan. Menggunakan interupsi membebaskan prosesor dari polling keypad menerus pada tingkat yang banyak, jauh lebih cepat dari yang kita dapat menekan tombol. Semua menyela, termasuk reset, fungsi persis dengan cara yang sama. Setiap interrupt memiliki alamat vektor yang ditugaskan untuk itu rendah di memori program. Compiler menempatkan awal alamat interupsi layanan terkait rutin dan instruksi jump relatif di vector lokasi untuk setiap interrupt.When terjadi interrupt, program selesai mengeksekusi instruksi saat ini dan kemudian cabang ke lokasi vektor yang terkait dengan interupsi itu. Program ini kemudian mengeksekusi instruksi jump relatif terhadap ISR dan mulai dijalankan. Ketika interupsi terjadi, return address alamat dari instruksi berikutnya yang akan dieksekusi ketika interupsi selesai disimpan pada Universitas Sumatera Utara sistem stack. Instruksi terakhir dalam rutin layanan interupsi adalah RETI perakitan pengajaran bahasa, yang merupakan kembali dari mengganggu. Instruksi ini menyebabkan alamat pengirim yang akan muncul dari tumpukan dan Program eksekusi untuk melanjutkan dari titik di mana itu terganggu. Dalam prosesor AVR, semua menyela memiliki prioritas yang sama. Tidak ada penyisihan untuk satu mengganggu untuk mengganggu interupsi lain, yaitu, satu interupsi tidak dapat memiliki prioritas di atas yang lain mengganggu. Hal ini dimungkinkan, namun, untuk dua interupsi terjadi secara bersamaan. Arbitrase skema, kadang-kadang disebut sebagai prioritas, disediakan untuk menentukan interrupt mengeksekusi dalam kasus ini. Dalam kasus di mana dua interupsi terjadi secara bersamaan, interrupt dengan vektor terendah bernomor akan dieksekusi terlebih dahulu. Gambar 2.2 Hardware Interupt Program

2.2 Elektro-Pneumatic