Şimdi Ara

Pic de kesme içinde kesme olabiliyor mu?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
1.075
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar soru gayet açık sanırım picde kesme içinde kesme kullanabiliyormuyuz?
    Benim bildiğim kadarıyla picde kullanılmıyor ama bana kullanıldığını söylediler kafam karıştı.


    bana söylenenleri aynen aktarıyorum:

    "kesme içinde kesme kullanabilisin ancak şart,işlemci için ayrılmış olan
    (kesme içinde kesme kullanılabileck maksimum stack segment uzunluğuna bağlıdır.)eğer stack segment uzunluğundan fazla kesme içinde kesme kullanırsan,program şaşırıp,belki işleyen process sonlanabilir. "



    Benim bildiğim picde stack segment iç içe alt program için geçerli bir sınırlama,bu kesme programınıda ilgilendiriyormu?Belki çok yanlış şeyler düşünüyorum,iyice saçmalamadan;
    Bu konuda değerli yardımlarınızı bekliyorum...



  • Dediğini anlayamadım.Biraz dağınık ve imla hataları ile yazmışsın.Kesme içinde kesme derken neyi kastediyorsun.Bir kesme hizmet programı işlerken yeni bir kesme isteği oluşursa sistem buna cevap verirmi vermezmi diyemi soruyorsun?Eğer böyle ise öncelikli olan kesmeler diğerlerini keser.Bunun için ilgili saklayıcıdan kesmenin öncelik seviyesini yükseltmen lazım.

    -----

    Dediğime baktım PIC18 serisinde böyle bir saklayıcı var.PIC16 serisinde öncelik seviyesi ayarlayamıyorsunuz.



    < Bu mesaj bu kişi tarafından değiştirildi AdreNaline® -- 6 Şubat 2008; 14:03:36 >
  • PIC'te kesme rutinine girildiğinde INTCON,7 , yani GIE disable edilir. Bu otomatik olarak gerçekleşir. Eğer siz kesme alt programı içindeyken herhangi bir anda GIE'yi enable ederseniz ve INTCON içinde hangi kesmeyi kabul edeceğinizi belirlerseniz (12 ve 16 serileri için konuşuyorum) yeni bir kesme alabilirsiniz, tabi eğer etkinleştirilen kesme kaynağından bir uyarı gelirse. Bu tür uygulamalar büyük dikkat ve derli toplu çalışma ister, çünkü kesme içinde kesme aldığınız zaman işleri düzene koymazsanız RETFIE ile kesmeden çıktığınızda program ummadığınız şeyler yapabilir.
  • kesme içinde kesme aslında istenmeyen bir durumdur ama yinede biraz araştırdım, gördüğüm kadarıyla 18 serisinde interrupt anında PC değerini saklayan 31 level bir stack dan bahsediyor. ama bu leveller ne işe yarıyor konuya vakıf olmadım. şöyle de bir sorun var; diyelimki bir kesme oluştu ve PIC PC değerini stack a yazdı. kesme rutininde GIE enable edildi gerekli işlemler yapıldı derken tekrar kesme geldi. peki PC değerinin stack a bir önceki PC değeri üzerine yazılmasına nasıl engel olunacak veya 18 serisndeki 31 level stack ın hangi leveline yazıldığı nerden bilinecek gibi sorular var benim aklımda...
  • Cevap STKPTR kısaltmasıyla anılan stack pointer Benim fikrim, her kesme içinde kesme oluşumunun başında (yani ilk kesme hariç) STKPTR'yi bir eksiltmek gerekir, yeni bir kesme oluşmadan kesme kodunun sonuna kadar gelinebildiği takdirde ise iki eksiltmek ve normal interrupt geri dönüşünü yapmak lazım. Ama özellikle vurgularım ki öyle her kodu rastgele bir yerinden kesip de yeniden başlatamazsın. Buna uygun olarak yazmak lazım.



    < Bu mesaj bu kişi tarafından değiştirildi Liu Kang -- 7 Şubat 2008; 9:47:40 >
  • PIC ler bıraktığım yerde değilmiş. kesme içinde kesme kabul edilmesi ile ilgili neler bulabilirim diye bakarken, neye niyet neye kısmet oldu.
    PIC18 ailesinde kesme içinde kesme (interrupt nesting) öncelikli kesmeler arasında 1 kereye mahsus olarak yapılabiliyor. 18 ailesinde kesmeler düşük ve yüksek öncelikli olarak 2 ye ayrılıyor. düşük kesme kaynağından gelen bir istek işlenirken, yüksek öncelikli bir kesme isteği oluşursa kesme rutuni yarıda bırakılıp yüksek öncelikli rutunin işlenmesi sağlanabiliyor. önceliği yüksek olan rutin bittiğinde ise PIC kaldığı kesme rutunine geri dönüyor.
    PIC24 ve dsPIC ailesi ise daha ilginç, kesme önceliklerini atayabildiğiniz gibi 7 kereye kadar da kesme içinde kesme kabul edebiliyor...
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.