Birden fazla Donanımsal Kesmesi olan PIC ?

Başlatan dyonizos, 01 Nisan 2012, 09:22:27

dyonizos

Birden fazla donanımsal kesme girişi kullanabildiğimiz bir pic varmı? Birden fazla sensörden okuma yapmak için nasıl bir pic kullanabilirim. Eğer böyle bir pic varsa klasik olarak proton+ ile kodlama yapılabilirmi? nette hiç bir örnek göremedim.
Şimdiden teşekkürler.

Maxim

neredeyse her picte çoğul interrupt var zaten
mesele bunları kullanabilmek, işin zor ve asıl gereken tarafı o


ibrsel

Birden fazla sensörden gelen bilgiyi interrupt ile okutacak isen PORTB kesmesini kullanabilirsin. B4-B7 pinleri durum değiştirdiğinde interrupt gerçekleşir..En uygun fiyata 16F628 ile yapabilirsin.18 serisi işlemcilerin daha fazla interrupt pin desteği olabiliyor.DataSheet lerini incelemen kazım..


Maxim

hmm, soru "giriş" int olarak sorulmuş

hemen göz ucu ile baktım, 16F886 nın tüm B portu IOC int, yani 8 tane
ayrıca 2 tanede CCP girişi var


dyonizos

Alıntı yapılan: ibrsel - 01 Nisan 2012, 09:29:55
Birden fazla sensörden gelen bilgiyi interrupt ile okutacak isen PORTB kesmesini kullanabilirsin. B4-B7 pinleri durum değiştirdiğinde interrupt gerçekleşir..En uygun fiyata 16F628 ile yapabilirsin.18 serisi işlemcilerin daha fazla interrupt pin desteği olabiliyor.DataSheet lerini incelemen kazım..


PORTB kesmesini bildiğim kadarıyla yazılımsal kesmede kullanılıyor. Ancak yazılım içinde herhangibir gecikme olmaması için donanımsal kesme kullanmak istiyorum. 16f877 kullandığım projeyi değiştirmek istiyorum. gördüğüm kadarıyla 18F452 INT0, INT1, INT2 olarak 3 adet kesmeye sahip. Ancak daha fazlasıda olması mümkümüş gibi geliyor. Tabi bu pic ile yapılan proton kesme kod örneğide bulamadım :)

ibrsel

#6
Bana kalırsa biraz daha ayrıntılı incele..B4-B7 değişikliğini donanım kesmesi olarak kullanıyorsun..(PROTON BASİC te)


balhan146

Yukarıdaki arkadaşında söylediği gibi (ibrsel) eyerki devrede 16f628 kullanırsanız,Rb0 ve RB4-7 kemeleri donanım olarak mevcut senin tek yapman gereken şey yazılımda bu interrupt ları çağırmak ve bu kesmeleri kullanmak.Şunuda unutmaki eyer bi denetleyicide interrupt kullanırsan interrupt'ın diyer komutlardan önceliği vardır.Proğram işini bırakıp hemen o kesmeye gider bunuda unutma.Size kolay gelsin.

Mucit23

Örnek bulamıyabilirsin. Sen ne istiyorsan kesmeleri ona göre düzenliyeceksin. Belkide yapmak istediğini açıklarsan daha iyi fikir yürütebiliriz.
Protonda iki Çeşit kesme var. Birincisi Hardware kesmesi, Diğeri İse Software kesmesi. Bu ikisi Arasında fark var. Help Dosyasında yazıyordu.
Diğeri bir konu ise Pic üzerindeki Donanımların oluşturacağı kesmeler(CPP, ADC, Usart, MSSP, USB vs) Bu tür donanım kesmeleri aktif edildiğinde Donanım kaynaklı kesmeler oluşur. Mesela Usart tan veri geldiği anda kesme oluşur sende kesmede gidip veriyi alırsın. Veya ADC Dönüştürme işlemi bittiğinde kesme oluşur. Bu örnekler arttırılabilir.

dyonizos

Manyetik encoderdan gelen sinyalleri saydırmam gerekiyor. Yani yaklaşık 10 adet manyetik encoder dan 1 ve 0 değerleri geliyor. Şu anda klasik olarak RB0 kesmesini kullanarak saydırıyorum ve oldukça hızlı hiçbir pulse kaçırmadan ve program aksamadan çalışıyor.
RB0 ile yaptığım sayımı daha fazla encoder bağlayarak onlardan gelen pulseleride saydırarak yapmak istiyorum.

yas

Eğer 10 adet kadar kesme girişine ihtiyacın varsa bence donanım kesmesi olmayan girişlelere encoderden gelen sinyallaeri bağla, daha sonra bu girişleri diyotlar birleştir ve bu ortak noktayı int0 sıfıra bağla. Böylece hangi girişten sinyal gelirse gelsin kesme oluşur sende kesme rutini içerisinde girişlerini okuyarak sayaçlarını artırırsın. Bildiğim kadarıyla hiç bir pic te 10 adet harici kesme girişi yok.

muhittin_kaplan

proton+ da high ve low olmak üzere iki kesmeyi yönetebilirsin
help de "On_Low_Interrupt" aratırsan örnek program mevcut.