Kesme içinde Delay kullanımı

Başlatan satilla, 28 Ağustos 2017, 15:50:35

satilla

STM32 MCU ile bir projede 20 adet harici kesme kullanıp UART, CAN vs birimlerinde kesmelerini kullanmam gerekiyor. Sistem şu anda harici kesmeler
yerine, standart GPIO okuma işlemiyle çalışıyor. Tabi bu nedenle bazı durumlarda input'u yakalamak sorun oluyor. Sürekli GPIO tarama fonksiyonunu da çağırmak kod karmaşasına neden oluyor.

Bilindiği gibi kesme içerisinde bekleme yapmak makul birşey değil. C dilinde goto kullanımıda pek önerilen birşey değil. (Çoğu kişiye göre)

Harici kesme pinlerinden kesme geldiğinde 1 saniye de bekleme yapmam gerektiğinide göz önünde bulundurursak. (Sisteme bağlanan ek cihazlarda ki voltaj dalgalanmalarından dolayı)

Bu şartlar altında önerileriniz nedir?


baran123

Basit bir "State Machine" işini görür.

XX_CİHAN_XX

RTOS yapılarını biraz incelemeni öneririm. Anahtar kelime @baran123 'ün de dediği gibi state machine, event-task yapıları.
Basit ve hızlı bir başka çözüm önereyim. kesme gelince bir timer kesmesi kur x ms sonra kesme üretecek şekilde. Timer kesmesi gelince girişi tekrar sorgula böylece x kadar süre boyunca eblek eblek beklemek yerine diğer işlerini halledersin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.