Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

kesmeyi durdurmak

Başlatan pax, 09 Nisan 2012, 11:25:15

pax


örneğin 5 msn de bir timer0 kesmesi yapıyorum. benim istediğim bu kesme işlemi yürütülürken kesme içersinde istediğim herhengi bir şart yerine geldiği zaman, kesmeden çıkıp başka bir işlem yapıp , işlem bittikten sonra tekrar kesmenin oluşabilmesini sağlamak bunu nasıl yapabilirim .

Erol YILMAZ

İlgili Kesme Bayrağı yazılıp okunabilir.
Yani istediğin zaman bir kesme oluşturabilirsin.

GIE bitini 0 yaparsan hiçbir kesme oluşmaz.

pax

ben kesme alt programı yürütülürken bir şarta bağlı olarak kesmeyi iptal edip, başka bir işlem yapıp, bu işlem bittikten sonra kesmenin tekrar aktif olmasını sağlamak istiyorum örneğin 5msn de bir sensor okuyorum ve kesmem içersinde bir sayacım var. sayacım 5 değerine ulaşınca kesmeyi iptal edip başka bir işlem yapmak istiyorum. bu işlem bitince tekarar kesme aktif hale gelecek ve tekrar aynı işlemler yürütülecek. 


camby

1 - Kesmeden çıkmadan yapabilirsiniz , yani istediğiniz koşul gerçekleştiğinde direk CALL ile işinizi yapar ve geri dönersiniz kaldığınız yere. Hep kesmede kalırsınız bu şekilde.

Kesmeden tamamen çıkıp giderseniz kesmeyi aktif yaptığınızda  yani dönüşte kesme rutinine baştan başlamak zorunda kalırsınız.

2 - Kesme dönüşü , kesmeye geldiğiniz yerden başka bir yere gitmek istiyorsanız STACK alanını modifiye etmeniz lazım.

3 - Kesmeyi yarıda bırakıp , başka bir işlem yapıp tekrar kesmede kaldığınız yere dönmek istiyorsanız yine STACK modifiye etmeniz lazım. Yada stack ile uğraşmadan rutine baştan başlayıp , iyi bir kurgu ile FLAG durum takibi yapmanız gerekir.


Bence kesmeden çıkmayın , istediğiniz işi yine koşul gerçekleşince kesme içinde yapın.

pax

kesmeler konusunda zayıf olduğumu düşünüyorum. şunu anlamak istiyorum. ben dediğim gibi 5 msn de bir bir kesme gerçekleştiriyorum.
1-kesme alt programının tamamlanma süresi 5 msn den fazla dahi olsa(örneğin 200 msn ) kesme alt programı bitmeden tekrar kesme oluşmayacak değil mi?
2-kesme alt programı içersine yazdığım programı kesme kullanmadan  bir while sonsuz döngüsü ile yaptığım zaman istediğimi yapabiliyorum. ama kesme içine aldığım zaman istediğim olmuyor.   

dombilik

Timer kesmeniz her 5ms de bir olusuyor.kesme alt programinizda 100ms sürüyor ise bu süre zarfinda 20 kez daha kesme olusacak ve işler karişacaktir.kesme alt programi icinde mutlaka kesmeyi kapatmaniz yada alt programinizi kisa tutmaniz gerekir.
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

XX_CİHAN_XX

Alıntı yapılan: pax - 09 Nisan 2012, 13:52:16
kesmeler konusunda zayıf olduğumu düşünüyorum. şunu anlamak istiyorum. ben dediğim gibi 5 msn de bir bir kesme gerçekleştiriyorum.
1-kesme alt programının tamamlanma süresi 5 msn den fazla dahi olsa(örneğin 200 msn ) kesme alt programı bitmeden tekrar kesme oluşmayacak değil mi?
2-kesme alt programı içersine yazdığım programı kesme kullanmadan  bir while sonsuz döngüsü ile yaptığım zaman istediğimi yapabiliyorum. ama kesme içine aldığım zaman istediğim olmuyor.   
16F serisi piclerden bahsediyorsak ve kesme altprogramı içinde GIE bitini yazılımsal olarak set etmiyorsanız kesmenin içinde ikinci kez kesme altprogramına dallanma gibi bir durum söz konusu olmaz!
Çünkü kesme oluştuğunda, yani kesme altprogramına girildiğinde GIE biti otomatik olarak sıfırlanmış olur. Kesmeden çıkılırken ise bu bit yine otomatik olarak set edilir. Timer kesmelerinde şuna dikkat edilmelidir; kesmeden çıkmadan hemen önce ilgili timer interrupt flagi sıfırlanmalıdır ki her seferinde 5ms lik kesme oluşabilsin. Aksi halde kesmede kaybettiğiniz zamanlardan dolayı kesmeden çıkar çıkmaz tekrar kesmeye girersiniz çünkü 5ms dolmuş olur. Her seferinde 5 ms i tekrar kurmak için kesme alt programından çıkmadan hemen önce timer sayıcısı sıfırlanmak zorundadır.

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.