12F675 GP2 dış kesme çözemedim

Başlatan fryrmnd, 06 Ocak 2013, 22:43:31

fryrmnd

Arkadaşlar bakıyorum bakıyorum işin içinden çıkamadım. Birşey kaçırıyorum ama. Clear etmediğim bir flag mı var acaba. İsiste sadece GPIO2 ya pull up ve buton bağlı.  Bir göz atabilirmisiniz.

#include <xc.h>
#include <delays.h>

//#pragma config BOREN=ON,CPD=OFF,FOSC=INTRCIO,MCLRE=ON,WDTE=OFF,CP=OFF,PWRTE=ON

void main(void)
{
    TRISIO=0b00000100;
    GPIO=0x00;   

    OPTION_REGbits.INTEDG=0;
    
    INTCONbits.INTF=0;
    INTCONbits.INTE=1;  
    INTCONbits.GIE=1;         
     
   while(1)
   {
       
   }    
}

static void interrupt kesme(void)
{
    if(INTCONbits.INTF)
    {
        GPIObits.GP1=!GPIObits.GP1;

        INTCONbits.INTF=0;
    }
}

Tagli

#1
! yerine ~ yazarak bir dene.
Butonda bouncing oluyor olabilir. Kesme kodu içine biraz gecikme koymayı deneyebilirsin.

Ufak bir not: XC8'de standart bitler doğrudan tanımlı. Yani INTCONbits.INTF=0; yerine INTF=0; yazılabilir.

Ayrıca, XC8'in dokümantasyonunda kesme fonksiyonu için static kullanımından bahsetmemiş.
Ve de genelde kesme kodu içindeki dallanma şu şekilde yapılıyor: if (INTE  && INTF ). Her zaman gerekli olmasa da, olası sorunlara karşı bir önlem. XC8 rehberindeki örneklerde bu şekilde kullanılıyor.
Gökçe Tağlıoğlu

fryrmnd

#2
void interrupt kesme(void)
{
    if(INTCONbits.INTF && INTCONbits.INTE)
    {
        GPIObits.GP1=~GPIObits.GP1;
        _delay(5000UL);
        INTCONbits.INTF=0;
    }
}


Hocam bu şekil denedim ama malesef. RB0 kesmesinden bir farkı var mı acaba?



Hitech kodlarından kestiklerimiz hocam. Dediğiniz gibi sıkıntı yaşamamak için rehberi iyice irdelemem gerek.

Tagli

Şimdi farkettim, ANSEL register'ında ilgili ayarlamalar yapılarak GP2 bacağının dijital giriş yapılması gerekebilir. Bu register'ın varsayılan değeri 4 bacağı da analog giriş olarak tanımlıyor.

Doğrudan etkisi olduğunu sanmasam da, komperator modülünü de kapatmak gerekiyor olabilir.
Gökçe Tağlıoğlu

fryrmnd

Hocam çok sağolun. Nereden kafama girdiyse çıkış olarak tanımlayınca sanki tüm çevre donanımları disable edecek gibi bir düşünce oturmuş kafama. 2 saattir sağını çeviriyom solunu çeviriyom. İyi ders oldu bana. Tekrardan teşekkürler.