hardware interrupt sorunu

Başlatan hiddenman32, 28 Ocak 2005, 12:37:06

hiddenman32

Arkadaşlar yaşadığım bir sorunu sizinle paylaşmak istedim. Umarım yardımcı olursunuz.

Ön bilgiler: Bir tasarladığımız kartımız var.Kartta lm35,ds1820,ds1803,24lc512 ve benzeri devre elemanları mevcut. Ayrıca sistemde infra haberleşme modülüde var.(modül çıkışı 5 volt invert edilerek portb.0'a bağlı)

Çalışması: sistemde sensörler teker teker veya birlikte çalıştığında her hangibir sorun oluşmuyor. infra receiver portb.0 bağlı. oda tek başına çalıştığında sorunsuz olarak bilgi aktarıyor.

Mantığımız şu:Bir döngü içinde her iki sensörden gelen bilgiler değerlendirilyor ve lcd üzerine yazılıyor. infra portb.0'a bağlı ve interrupt 1 seviyesine ayarlı.40Khz sinyal gelmeye başlayınca int çalışıyor ve gelen veriyi okuyor ve bununla ilgili işlemi yapıyor.

Sorun:int içinde serout,print komutları çalışınca veya ds1820 ile haberleşme anında int devreye girince sistem kilitleniyor.(ya int içinde takılı kalıyor yada reset atıyor.) yine aynı zamanda int içinde gosubla dallanınca aynı sorun yaşanıyor.

Yapılanlar:değişkenleri sakladım.çıkarken iade ettim.resume,retfie kullandım.software int kullandım.ama başarılı olamadım.

Sorun:int içinde print,hserout gibi komutları neden kullanamıyoruz? Kullanmak için ne yapmalı. int içinden neden dallanma yapamıyoruz?
özellikle i2c protokolü çalışırken int çalıştımı sorun yaşanıyor yanı geriye dönerken bazen farklı bir etkkete bile dallanabiliyor bu sorunu aşmak mümkünmü çünkü sistemdeki çoğu eleman i2c çalışıyor. Eğe böyle olursa ya haberleşmeyi kapatmam gerekecek yada her seferinde yeniden haberleşmeye başlamam gerekecek.

Yardım,öneri ve paylaşımlarınızı bekliyorum. Hepinize kolay gelsin.

z

Isi bilenler  sana cevap yazincaya kadar asagiaki benzetim isine yarayabilir.

Interrupt programi yazmak suna benzer.

40 tilkiyi kucucuk alanda dolastiracaksin ama kuyruklari biribirine dokunmayacak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hiddenman32

Normalde 40 tilkininde kuyruğu var ve normalde dokunmamasıda gerekiyor. Benim tahminim proton bazı komutları kullanırken kendiside int oluşturuyor orneğin tmr gibi dolayısı ile ben int çalıştırınca gie yi sıfırlıyorum. aynı zamanda int isteyen print'i de açıyorum. Sadece tahminim bu. Eğer doğru ise yapacak bir şey yok gibi gözüküyor. Ya kendim asm ile int içine print rutini yazmalıyım yada asla print kullanmamalıyım.

SpeedyX

evet dostum. aynen düşündüğün gibi. zaten bu yüzden asm leri gizliyor. değişik karakterlerle anlaşılmıycak forma sokuyor...

mesela serout, sound gibi komutları kullanırken interrupt kullanıyor. zaten çoğu komutun asm si de gereğinden büyük.

mesela eread ve ewrite vardı. bunlarda da eeprom yazma bitti int kullanıyor.
bana kalırsa asm veya c kullanmalısın
pic basic veya proton daha basit ve az amaçlı uygulamalar için.
dediğimi denemek için ise program içinde gie yi kontrol et

dombilik

Sayın Bunalmış HOCAM ;

Şu 40 tilki yi biraz açabilirmiyiz :D ..(gerçi mesaj tarihi bayağı eski amma biraz eşelemekten zarar gelmez sanırım :oops: )

proton ile yazdığım bir yazılımda Usart receive kesmesini kullandım.çalışmasında da bir sorun yok fakat aynı programda Rb0-int kesmesini de kullanmam gerekiyor.Bir program içinde birden fazla kesme
oluşturmak için nelere dikkat etmek lazım..?
Katana hocamdı bir yazısında tüm kesmeleri aynı programda kullandığından bahsetmişti sanırım...

Teşekkürler..
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40