Kesmede kullanılabilecek gecikme rutinleri nelerdir ?

Başlatan AsHeS, 21 Eylül 2012, 18:04:54

AsHeS

Hi-Tech için kesmede kullanılabilecek DelayMs( ) ve timerlardan başka fonksiyonel gecikme rutinleri kütüphanesi var mıdır ya da siz bu problemi nasıl çözüyorsunuz ?

Veli B.

Makbul olanı;

Kesme rutinine gir,
Kesmeleri kapat(nested desteği yok ise)
Kesme türünü gösterecek bayrağını kur,
Kesmeleri yeniden yapılandır,
Kesme rutinini terk et,
Bayrak türüne göre işlemini yap(İlgili registerda ki veya buffer da ki datayı işleme sok).

Genel olarak mantık bu şekilde. Kesme rutininde ne kadar az beklerseniz, o kadar sağlıklı olur.
Benim kullanımım da; her bir kesme(kullanacağım) için bir bayrak(1 bit veya 2 bit) içerecek şekilde değişken tanımlıyorum, kesme rutininde bu bayrağı kuruyorum ve daha sonrasında, ana omurga da bayrak durumuna göre işlem yapıyorum.

CLR

Interrupt içinde milisaniye düzeyinde delay olmaz veya olmaması gerekir, bir işlemden sonra delay yapman gerekiyorsa mesela interrupttan sonra, interrupt geldiğine dair bir flag ve istediğin süre için kullanacağın timer interrupt için ayrı bir flag tanımlarsan tüm interruptları yakalarsın ve işlemci hep boş kalır. Main içinde flagleri kontrol ederek interrupt mı gelmiş delay mı tamamlanmış anlarsın.
Knowledge and Experience are Power

AsHeS

Yanıtlar için sağolun.
Hemen hemen @uicroarm ın dediğine benzer bir şekilde yazacağım kodu .

ayhan_eee

microchip sayfasında sourcode bölümünde delay fonksiyonu indir.Orada kesme için özel delay vermiş.Ne işine yarayacak onu bilmem programına bağlı ama.Ama sen diyelim buton kesmesi gelince 100ms gecikme koydurmak isteyebilirsin.Dene istersen

AsHeS

#5
Alıntı yapılan: ayhan_eee - 22 Eylül 2012, 16:46:23
microchip sayfasında sourcode bölümünde delay fonksiyonu indir.Orada kesme için özel delay vermiş.Ne işine yarayacak onu bilmem programına bağlı ama.Ama sen diyelim buton kesmesi gelince 100ms gecikme koydurmak isteyebilirsin.Dene istersen
Bahsettiğiniz yerde birçok sourcecode sayfası var microchip http://embeddedcodesource.com sitesine yönlendiriyor bu sitede mi yoksa microchip kendi sitesinde mi  ?

ayhan_eee


z

Alıntı yapılan: AsHeS35 - 21 Eylül 2012, 18:04:54
Hi-Tech için kesmede kullanılabilecek DelayMs( ) ve timerlardan başka fonksiyonel gecikme rutinleri kütüphanesi var mıdır ya da siz bu problemi nasıl çözüyorsunuz ?

Kesme içinde ne kadar gecikme lazım oldu ve neden gecikme rutinine ihtiyaç duydunuz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

AsHeS

Alıntı yapılan: z - 23 Eylül 2012, 13:30:17
Kesme içinde ne kadar gecikme lazım oldu ve neden gecikme rutinine ihtiyaç duydunuz?
Dışarıdan alınan sinyale göre bir global değişkeni artırmam gerekli ama dışarıdan gelen sinyal 3 adet pulse olarak geliyor yani 1.yükselen kenarı yakaladıktan sonra 2. ve 3. sünü pas geçmem gerekiyor.Program sadece bu yükselen kenarları beklemiyor o yüzden bir sonsuz döngü içerisinde farklı bir menüye geçiş yapması gerekiyor(bu kısım da kesme yok).Başka bir konuda kodumun tamamımını vermiştim Hi-Tech hata veriyor diye lakin kendi kendine halloldu olay linkini vereyim aşağıda.
https://www.picproje.org/index.php/topic,42554.0.html