Tiga perbedaan terbesar antara perubahan interupsi dan pin interupsi eksternal:
- Pin interupsi eksternal memungkinkan perangkat lunak menentukan apakah interupsi harus dipicu oleh sisi naik atau turun; jika misalnya pin rendah dan satu hanya tertarik pada tepi jatuh saja, interupsi tidak akan dipicu sampai pin naik dan turun secara bertahap. Menggunakan interrupt-on-change, kita harus bangun di kedua acara.
- Pin interupsi eksternal memiliki bit status latching individual. Bahkan jika pulsa input datang dan pergi sebelum perangkat lunak memiliki kesempatan untuk menanggapinya, perangkat lunak masih dapat mengetahui bahwa itu terjadi dan bereaksi sesuai.
- Membaca port I / O yang memiliki interupsi pin-perubahan diaktifkan tepat pada saat perubahan input dapat mengakibatkan interupsi pin-perubahan tidak memicu. Sebaliknya, membaca port I / O yang terhubung dengan pin interupsi eksternal tidak berpengaruh pada interrrupt.
Interupsi eksternal PIC lebih fleksibel dan andal daripada interupsi pin untuk tujuan umum. Saya sarankan menggunakan yang pertama saat praktis.
Interupsi pada perubahan umumnya untuk setengah byte I / O, di mana interupsi eksternal umumnya untuk bit individu. Seperti yang sudah Anda katakan, satu hal yang perlu Anda lakukan dalam IOC ISR adalah mencari tahu bit (atau bit) mana yang berubah.
IOC juga sedikit lebih sulit untuk digunakan, bahkan lebih dari itu. Sangat penting untuk membaca port segera sebelum mengaktifkan interupsi, dan bahkan lebih penting untuk MEMBACA PELABUHAN di dalam ISR! Jika Anda memiliki sinyal yang berubah lambat, dan berpikir Anda dapat mengatur bendera di dalam ISR dan membaca nanti, di luar ISR, pikirkan lagi! Pembacaan port (atau bit pada port, jika saya ingat dengan benar), me-reset kait pada komparator yang memicu interupsi. Jika Anda tidak menghapusnya di dalam ISR, itu akan segera retrigger ketika Anda keluar dari ISR. Jika Anda ingat untuk melakukan ini, itu semua baik, tetapi jika Anda lupa dan berpikir Anda dapat membaca port ketika Anda melakukannya, Anda akan sedikit frustrasi sampai Anda ingat untuk melakukan membaca di ISR.
sumber