Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: refikos - 14 Nisan 2018, 14:57:37

Başlık: Interrupt ne işe yarıyor ?
Gönderen: refikos - 14 Nisan 2018, 14:57:37
arkadaşlar keilde stm32f407 mikroişlemcide kod yazıyor ,şimdi bir uygulama da void extıo_IRQhandler fonksiyonun içine
HAL_GPIO_TogglePin(GPIOD,led1_Pin|led2_Pin|led3_Pin|led4_Pin);
   HAL_Delay(1000);
yazdım ve butona basınca ledler yandı resete basınca söndü ,şimdi aynı işlemi while taşıdım ve çalıştırdığımda ledler yanıp söndü yanıp söndü hep yani extıo fonksiyonundaki gibi değildi şimdi bu basit örnekte ben ne anlamış oluyorum ,neyi anlamam lazım interupt ile ilgili olarak ?
Başlık: Ynt: Interrupt ne işe yarıyor ?
Gönderen: fide - 14 Nisan 2018, 18:08:46
Io irq portta lojik seviye değişiminde tetiklenir. İşlemci yaptığı işi bırakıp irq rutinine gider. Ordaki kodları işletip işi bitince yarım bıraktığı işe devam eder. Veri alma, tetikleme gibi işler için vazgeçilmezdir.
Başlık: Ynt: Interrupt ne işe yarıyor ?
Gönderen: refikos - 17 Nisan 2018, 14:14:34
Alıntı yapılan: fide - 14 Nisan 2018, 18:08:46Io irq portta lojik seviye değişiminde tetiklenir. İşlemci yaptığı işi bırakıp irq rutinine gider. Ordaki kodları işletip işi bitince yarım bıraktığı işe devam eder. Veri alma, tetikleme gibi işler için vazgeçilmezdir.
hocam mesela verdiğim led örneği üzerinden anlatabilirmisiniz ?
Başlık: Ynt: Interrupt ne işe yarıyor ?
Gönderen: fide - 17 Nisan 2018, 21:47:06
İşlemci normalde sonsuz döngüde çalışıyor. Sen butona basınca okuşan lojik seviye değişimi io irqyu tetikliyor. İşlemci yaptığı işi bırakıp irq handler içindeki kodları çalıştırıyor. İrq içindeki işlem bitince normal işlerine devam ediyor.
Sen kesme (irq handler) içindeki kodları main bloğuna alınca bu kodlar kesme meydana gelince değil sürekli çalışıyor. Ve yanıp sönüyor.
Başlık: Ynt: Interrupt ne işe yarıyor ?
Gönderen: M.Salim GÜLLÜCE - 18 Nisan 2018, 10:15:02
Her
Alıntı yapılan: fide - 17 Nisan 2018, 21:47:06İşlemci normalde sonsuz döngüde çalışıyor. Sen butona basınca okuşan lojik seviye değişimi io irqyu tetikliyor. İşlemci yaptığı işi bırakıp irq handler içindeki kodları çalıştırıyor. İrq içindeki işlem bitince normal işlerine devam ediyor.
Sen kesme (irq handler) içindeki kodları main bloğuna alınca bu kodlar kesme meydana gelince değil sürekli çalışıyor. Ve yanıp sönüyor.
Her interrut isteği satır aralarında bir defaya mahsus Parantez açıp kapatır. Parantez içine yapacağın işlem bitinde kaldığı yerden devam eder. Satır arasında nereye geldiği ise tamamen zamanlamayla ilgilidir.

Evde işin TV seyreder iken eşinin "şu büfeden bi ekmek alıver" demesi gibidir. ekmeği alıp geldiğinde seyretmeye devam edebilirsin.
Bi daha istek olmazsa TV seyretmeye devam edebiirsin. :)