Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: topuz - 15 Ağustos 2017, 12:52:39

Başlık: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: topuz - 15 Ağustos 2017, 12:52:39
Herkese merhaba
Şuan üzerinde çalıştığım bir projem var. Projede iki tane enkoder okumam gerekiyo. Enkoderin birini RB0 kesmesi ile okudum burada sorun yok. ama diğer enkoderi RB4-7 değişiklk kesmesi ile okumaya çalıştım ama sorun çıktı. Pic kilitleniyor. Bunu neden yapabilir. Kullandığım pic 16f876a 28 pin  20 mHz osc ,sadece RB4 ü giriş olarak tanımladım. 5-6-7 yi boşta bıraktım. ve kesmenin içi de şu şekilde :

void interrupt(){
if(INTCON.RBIF){

.........

}
if(INTCON.INTF){

..........

}
INTCON.INTF=0;
INTCON.RBIF=0;
}



Teşekkürler.
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: selimkoc - 15 Ağustos 2017, 13:54:38
void interrupt(){
if(INTCON.RBIF){

.........
INTCON.RBIF=0;
}
if(INTCON.INTF){

..........
INTCON.INTF=0;
}


}


şeklinde dene. konu ile ilgili blogumda çalışmalar mevcut.
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: topuz - 15 Ağustos 2017, 15:16:47
Dediğiniz gibi yaptım düzelmedi.  Güç verilir verilmez pic kilitleniyor. Değişiklik kesmesine dair yazdığım bütün kodları // ile yorum satırı yapınca tek encoder çok iyi çalışıyor. Nerede sorun var anlamadım.
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: RaMu - 15 Ağustos 2017, 19:33:58
Kodlar senin önünde,
sorunu bizim çözmemizi bekliyorsun,
yani yeterli bilgi yok.

Genel olarak:
Her kesme bayrağını ancak o kesme fonksiyonu temizlemeli
yani:


void interrupt(){
if(INTCON.RBIF){

.........

INTCON.RBIF=0;
}
if(INTCON.INTF){

..........

INTCON.INTF=0;
}

}

SADECE RBIF = 0 yapmanın bir manası yoktur,

RB4~7 kesme bayrağının silinebilmesinin tek yolu
ÖNCE PORTB yi okumaktır,
ardından RBIF = 0 yapılmak zorundadır,

degisken_x = PORTB;
RBIF = 0;

kullanmayacak olsan dahi okumak zorundasın.


(https://lh3.googleusercontent.com/l1ENkuqNYXDemHATqH1G22s1aTPTuaW1nj7majgorXxGXfbijS9W3pZKbJgfH-wQsZQo3d3LepkUOMHfipaEXs7pqKGq6fNeGbcvVedTWAukq4sJXpMmtAd0gCp0EWk_Pm7pQE0uxX6wwl4KW6Oc1rnt4ib6UY2BxHp8bA2_vPZ2TXF93psPfrtAm0NsFaGEgfetl208ExCDrzuzrH3n8H0xMsznAftWylcgDdLrTRcTGMeYHI2RckGdyJFNhqw77ZPvGRSrNqXj5J8rBHCzYZXbrf8fsGYuZbDqeuTe0vYtgX8jNuNfYLQTxq2UN7K3nzEbzF_RRqz27wDhaikTcK7F-KQ4biFc58oyZUcsQaTVghCEfGdci-F5wBO19aBpkh8dZQ23AFHg9oIbL1aL4VEZ0fqiDb9qF3Ahox8F3SYgmAqFCa_tICCOF9YvbcOGp2c8c2GiFeOnAQAxUxa5j8Lktm4Lolu540EK1swqVcycC_Rmq9Uw70RMxiDRjfm9_mhiJ_XS2PJ_HM3x3PlXlZxjf6Ns6KelkDYob1a-NgxW9xNX8GoTyyZt71p2FlbgNY9S3D_DeyDLygpEcu_5HF6ugNNciWMmw_C8YkvS_YCBRXKmJq4K=w844-h494-no)

Bu kesmenin nasıl kullanıldığını anlatan örnekleri incelemen ve
kullanmak istediğin iki kesmeyide önce
ayrı ayrı çalışır halde görebileceğin örnekler yapman
işleri hızlandırır.
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: Okan AKÇA - 15 Ağustos 2017, 19:57:19
B1 kesmesini kullanınız diger encoder için
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: XX_CİHAN_XX - 16 Ağustos 2017, 08:41:27
Boşta bıraktığın pinleri (B5-B7) "output low" olarak bırak.
Başlık: Ynt: RB0 ve RB4-7 değişiklik kesmesinin aynı programda kullanılması
Gönderen: topuz - 17 Ağustos 2017, 19:57:01
Anca bugün yazabildim kusura bakmayın. Dediklerinizi yaptım . Şuan çok iyi çalışıyor.
Kesme bayrağını  portb yi bir değiskene atadıktan sonra  sıfırladım.  Portb.4 ü giriş  5.6.7 yi çıkış  yapıp portb yi sıfırladım.