top of page

Jenis Jenis Exception

Jika sebelumnya kita sudah membahas apa itu exception, sekarang kita akan membahas mengenai jenis jenis exception.


Terdapat 9 jenis exception pada Cortex-M Processor yang masing-masing memiliki priority yang fixed dan ada yang bisa di ubah.

Properties of the different exception types
Properties of the different exception types - Generic user guide cortex M4

Exception no 16 ke atas merupakan interrupt yang Exception number-nya bergantung pada vendor mikrokontroller.

Mari kita pahami maksud dari table di atas.

  1. Exception number, untuk mengidentifikasi exception jenis apa yang sedang terjadi saat itu, untuk mengetahuinya bisa di lihat di IPSR (Interrupt Program Status Register).

  2. IRQ Number, Mengidentifikasi jenis interrupt yang terjadi.

  3. Priority, untuk menentukan mana dulu exception yang akan di proses.

  4. Vector Address, alamat address dari setiap system exception bersifat fixed, sedangkan untuk interrupt tergantung dari vendor (produsen mikrokontroller).


Jenis Jenis Exception


1. Reset

Reset terjadi ketika processor dihidupkan pertama kali atau ketika tombol reset di tekan.


Reset memiliki level prioritas tertinggi dari 15 system exception lainya. Artinya, reset dapat menginterupsi kapanpun bahkan ketika processor sedang mengeksekusi exception lainya.


2. NMI

NMI (Non-Maskable Interrupt) adalah jenis exception yang digunakan untuk menangani interupsi penting yang tidak bisa ditangguhkan. Dapat dipicu oleh peripheral ataupun software. NMI memiliki nilai priority tertinggi setelah reset. Artinya NMI dapat kamu gunakan untuk membuat exception pada saat saat kritis, seperti habis battery dan sebagainya.


3. Hardfault

Hardfault exception terjadi apabila sistem gagal memproses suatu exception, atau apabila suatu exception tidak di handle secara proper oleh exception handler-nya.


Misalnya, programmer lupa mengimplementasikan "exception handler" untuk exception tersebut. Maka Hardfault akan terjadi dan processor otomatis akan mengeksekusi "Hardfault Handler" sebagai gantinya.


4. MemManage

Exception yang terjadi terkait dengan memory management, seperti ketika mengakses ke alamat memory tertentu yang restricted (terproteksi), atau pada saat eksekusi program dari area memori eXecute Never.


5. BusFault

Exception yang terjadi karena masalah pada memory yang menyebabkan proses fetching instruksi atau data mengalami kendala.


Karena proses fetching antara memory dan processor tersebut terhubung dengan bus, maka error akan terdeteksi pada sistem bus, sehingga exception BusFault akan ter-trigger.


6. Usage Fault

Exception yang terjadi berkaitan dengan eksekusi instruksi. Error pada Instruksi tersebut diantaranya

  • an undefined instruction

  • an illegal unaligned access

  • invalid state on instruction execution

  • an error on exception return

  • division by zero

  • an unaligned address on word and halfword memory access

7. Debug Monitor

Exception yang berkaitan dengan masalah pada saat melalkukan debugging seperti, brekpoints, watchpoints, dan sebagainya.


8. SVC (Supervisor Call)

SVC biasanya digunakan dalam sistem yang menerapkan sistem operasi (OS) yang memungkinkan user melakukan interrupt dengan tujuan meminta akses kepada OS berdasarkan SVC number yang di tulis.


9. PendSV

PendSV digunakan sebagai context-switching saat tidak ada exception lainya yang aktif. Untuk menggunakan PendSV kita harus mengaktifkan status pending pada register Interrupt Control and State Register.


10. SYSTICK

System Tick Timer Exception terjadi apabila timer mencapai 0. Exception ini dihasilkan oleh timer yang ada pada processor.


Selanjutnya Apa?

Oke sekian pembahasan mengenai jenis jenis exception, untuk Informasi lebih lengkapnya, kamu bisa baca dokumen "generic user guide cortex m4".


Selanjutnya kita akan membahas Exception Handling


bottom of page