top of page

Apa itu Exception & Interrupt

Selalu ada skenario misalnya, saat kamu menulis kode dan ternyata kode itu tidak bisa di baca oleh processor apa yang terjadi, sudah pasti processor mengirimkan sinyal bahwa kode ini tidak bisa di eksekusi, Istilah teknis-nya, kode yang kamu tulis itu termasuk undefined instruction.


Undefined Instruction inilah yang mentrigger processor untuk mengirimkan sinyal yang disebut Exception.


Jadi, Apa itu Exception?

Exception adalah suatu event yang menyebabkan perubahan alur program yang sedang berjalan.


Jadi ketika suatu exception terjadi, maka processor akan berhenti dan mengeksekusi exception tersebut melalui apa yang disebut exception handler. setelah selesei, processor melanjutkan instruksi yang sebelumnya tertunda.


Definisi lainya

An exception is like an unscheduled function call that branches to a new address.

Contoh Exception : Usage Fault

Biar lebih jelas kita gunakan contoh kasus, salah satunya tipe exception usage fault. Dalam contoh ini, Exception disebabkan oleh undefined Instruction

Usage Fault Exception
Usage Fault Exception - Undefined Instruction

Pada kasus diatas, undefined instruction disebabkan karena processor mengeksekusi instruksi "ngawur" 0xABCDEFFF yang disimpan di dalam RAM beralamatkan 0x20011100.


Pada window Fault Analyzer bisa kita lihat, dari yang tadinya "No Fault Detected" menjadi "Usage Fault Detected" pada saat prosesor mengeksekusi fungsi some_addr(), yang mana fungsi ini merujuk ke alamat memori 0x20011100 yang memiliki value 0xABCDEFFF - undefined instruction


Tipe Exception

Secara garis besar, terdapat dua jenis exception yaitu system exception dan interrupt.


System Exception

System exception di hasilkan oleh processor itu sendiri secara internal.

System Exception
Macam Macam Exception

Terdapat 9 System Exception pada ARM processor, mulai dari Reset sampai Systick. Masing masing memiliki priority, ada yang fix dan ada yang bisa diubah (configurable).


Interrupt

Interrupt adalah salah satu bentuk exception yang dipicu oleh peripheral atau perangkat eksternal di luar processor, seperti push-button, ADC, SPI, I2C dan sebagainya.


Processor ARM mendukung 240 Interrupt yang bisa digunakan, Tergantung masing masing produsen mikrokontroller mau menggunakan berapa, untuk STM32 sendiri mempunyai 82 Interrupt.

System Exception
Macam macam exception

Contoh beberapa interrupt: WWDG, EXTI16 / PVD, FLASH, dan sebagainya. Informasi ini dapat ditemukan di dokumen reference manual masing masing vendor


Exception States

Berikut beberapa keadaan yang terjadi pada saat exception terjadi

  • Inactive, tidak terjadi adanya exception/interrupt

  • Pending, Exception mengantri untuk di eksekusi processor

  • Active, Exception yang sedang dieksekusi processor pada saat itu

  • Active & Pending, Exception yang aktif saat ini bisa saja di interupsi oleh exception lainya sehingga menjadikan exception tersebut pending dan harus menunggu exception lainya selesei di eksekusi.


Selanjutnya apa?

Di tutorial selanjutnya kita akan mengenal lebih dalam jenis jenis system exception


bottom of page