top of page

Apa itu NVIC

Jika sebelumnya kita membahas mengenai pengertian dan jenis jenis exception maka sekarang kita akan membahas pengaturan exception/interrupt.

Untuk menyederhanakan, istilah exception sering disebut juga interrupt.

Ya, Interrupt yang terjadi memang harus dikontrol, bayangkan jika semua Interrupt terjadi secara bersamaan, mana dulu yang harus diproses?


Perkenalkan, NVIC - Interrupt Controller

NVIC (Nested Vectored Interrupt Controller) adalah komponen dalam prosesor ARM Cortex-M yang bertanggung jawab untuk mengatur interrupt, seperti, konfigurasi interrupt, interrupt priority, dan interrupt masking

Jika masih bingung, mari kita pahami arti dari namanya


Nested

Nested artinya bersarang, atau "ngantri". Artinya semua interrupt yang masuk harus mengantri untuk di proses berdasarkan prioritasnya. Ingat bahwa semua interrupt mempunyai level priority-nya masing-masing yang menentukan urgensi.


Dengan NVIC kita dapat mengubah level prioritasnya sesuai kebutuhan kita melalui register NVIC_IPR0 (Interrupt Priority Register).


Vectored

Saat Interrupt terjadi, processor akan mengeksekusi interrupt tersebut melalui interrupt handler-nya. Alamat Interrupt handler ini tertulis dalam vector table di memori. Dari sanalah processor memulai eksekusi interrupt handler ini.

Contoh, NMI Exception terjadi, processor akan menuju ke alamat vector addressnya NMI, 0x00000008, di dalam alamat tersebut tersimpan value yang tidak lain adalah "NMI Handler", dari sanalah processor mulai mengeksekusi NMI Interrupt.


Fitur NVIC

  • Mendukung 240 jenis Interrupt, tapi ini tidak selalu di support oleh mikrokontroller vendor yang terkadang hanya mengimplementasikan kurang dari 240 interrupt (product-dependent)

  • Prioritas dari setiap interrupt dapat di atur dari level 0-15, semakin rendah level maka prioritas semakin tinggi

  • Nested Interrupt, artinya NVIC akan memprioritaskan interrupt dengan prioritas yang tinggi dan mem-pending (preempt) interrupt lainya yang masuk

  • Interrupt masking, dengan NVIC kita dapat men-disable interrupt (masking) yang tidak diperlukan agar sistem berjalan dengan lancar terlebih di saat-saat kritis seperti aplikasi real-time, dan critical task lainya


NVIC Register

Untuk mengkonfigurasikan interrupt, NVIC menyediakan beberapa register yang fungsinya

  • Mengaktifkan dan menonaktifkan interrupt (ISER & ICER)

  • Mengaktifkan dan Men-disable pending bit interrupt (ISPR & ICPR)

  • Melihat interrupt yang sedang aktif (IABR)

  • Mengatur level prioritas interrupt (IPR)



Selanjutnya apa?

Selanjutnya kita akan membahas vector table


Next : Vector Table

Related Posts

See All

ARM Cortex-M Processor

Cortex-M processor adalah salah satu anggota dari keluarga ARM processor yang dinamai “Cortex”. Cortex-M ditujukan untuk aplikasi

bottom of page