Interrupt Kavramı ve STM32F4’te Interrupt Çeşitleri

Interrupt Kavramı

Sistem programlamada, Interrupt (Kesme) acil olarak dikkat edilmesi gereken bir olayın oluştuğunu gösteren donanım veya yazılım tarafından işlemciyi uyaran bir sinyal türüdür. Interrupt yürütülmekte olan kodun kesilmesini gerektiren High-Priority (yüksek öncelikli) durumdan ötürü işlemciyi uyarır. İşlemci, yürürlükteki faaliyetini Suspend ederek (askıya alarak), o anki State’ini (durumunu) koruyarak ve Interrupt Handler (veya  interrupt service routine, ISR) diye adlandırılan küçük bir programın yürütülmesini sağlayıp, olayla ilgilenerek yanıt verir. Bu Interrupt’ın geçici olduğunu bildirir ve Interrupt Handler’ın vazifesini bitirdikten sonra işlemci önceki Thread’in yürütülmesine devam ettirir.

İki türlü Interrupt vardır:

  • Hardware Interrupt (Donanımsal Kesme), harici bir cihazdan veya harici bir Peripheral’dan işlemciye gönderilen elektronik bir uyarı sinyaldir. Software Interrupt’tan farklı olarak, Hardware Interrupt asenkron ve komut yürütmesinin ortasında meydana gelebilir ve programlamada ek bir ilgi gerektirebilir. Bir Hardware Interrupt başlaması eylemi Interrupt Request, IRQ (Kesme Talebi) olarak adlandırılır.
  • Software Interrupt (Yazılımsal Kesme), ya işlemcinin kendisi tarafından Exceptional Condition (istisna durum) tarafından ya da yürütüldüğünde Interrupt’a sebebiyet veren bir Intruction (komut) seti içindeki özel bir komut ile oluşabilir. Genel haliyle trap (tuzak) veya exception (istisna) olarak adlandırılan ve program esnasında meydana gelen programın kendi içinde halledilemeyecek kadar istisnai hata ve olaylar için kullanılır. Örneğin, eğer işlemcinin Aritmetic Logic Unit (ALU) birimi bir sayıyı 0 ile bölünmesi emrini verirse, bu imkansız talep divide-by-zero exception oluşmasına sebebiyet verecektir. Hatta belki de bilgisayarın hesaplamadan vazgeçmesine veya bir hata mesajı göstermesine neden olacaktır.

Her Interrupt’ın kendine ait bir Interrupt Handler’ı vardır. Hardware Interrupt’larının sayısı işlemciye bağlı Interrupt Request (IRQ) sayısı ile sınırlıdır. Fakat yüzlerce farklı Software Interrupt bulunabilir.
Interrupt’lar genellikle Multitasking (Çoklu Görevleme) ve özellikle de Real-Time Computing ( Gerçek Zamanlı işlemler)’de kullanılan bir tekniktir. Böyle sistemlere Interrupt-driven (Kesme-yürüten veya bulunduran) sistemler denir.

Interrupt_Process

Buraya kadar Interrupt’ın ne olduğu hakkında bilgi vermek istedim. Şimdi  STM32F4’ün üzerinde ne çeşit Interrupt’lar varmış bir bakalım.

STM32F4’te Interrupt Çeşitleri

Bilindiği gibi STM32F4 üzerinde bir çok Peripheral bulunmaktadır. Bunların çoğunda Interrupt özelliği bulunmaktadır. Örnek verecek olursak,

  • External Interrupts, EXTI (Harici Kesmeler) – GPIO’ya Input (giriş) olarak bağlanan herhangi harici bir cihazın (en basitinden bir buton gibi) PIN değişimlerinde oluşabilen Interrupt çeşididir.
  • DMA Interrupts,
  • ADC (Analog-to-digital converter) Interrupts,
  • DCMI (Digital Camera Interface) Interrupts,
  • Timer Interrupts,
  • Timer DMA Interrupts,
  • CRYP (Cryptographic Processor)  Interrupts,
  • HASH Interrupt,
  • RTC (Real-Time Clock) Interrupts,
  • I2C (Inter-integrated circuit) Interrupts,
  • USART (Universal synchronous asynchronous receiver
    transmitter)  Interrupts,
  • SPI (Serial peripheral interface) Interrupts,
  • I2S Interrupts,
  • SDIO (Secure digital input/output interface) Interrupts,
  • bxCAN (Controller area network) Interrupts,
  • MAC (Media access control) Interrupts,
  • Ethernet Interrupts,
  • Ethernet DMA Interrupts,
  • OTG_FS (USB on-the-go full-speed) Interrupts,
  • OTG_HS (USB on-the-go high-speed) Interrupts.

Görebildiğimiz gibi liste baya bir kabarık. Interrupt’ın mikroişlemciler için ne kadar önemli bir konu olduğunu yukarıdaki listeye bakarak da anlayabiliriz.

ARM and STM32F4xx Operating Modes & Interrupt Handling pdf’ten daha detaylı bilgi alabilirsiniz.

 

Leave a Comment

%d bloggers like this: