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
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.
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.
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
Next : Jenis jenis sistem exception