TMR1 kesmesi.

Başlatan Logan, 19 Eylül 2007, 13:39:29

Logan

Merhaba arkadaşlar. Sabahtan beri TMR1 kesmesi ile uğraşıyorum fakat nafile.Bahsi geçen konuyu bir kere daha açmıştım ve @bigbey ile özelden mesajlaşarak halletmeye çalıştık, aslında başardıkta. Hi-Tide ile simüle ederken zorunsuz çalışıyor ama protoboard üzerinde çalışmıyor. İşin enteresan tarafı TMR0 kesmesi normal ve gayet sağlıklı çalışırken bu problemi sadece Timer1'de yapmasıdır. Timer1'in saydığına eminim. Çünkü deneme amaçlı program içerisine if (TMR1IF) { portb++;} satırını ekledim ve belli aralıklarla sayma artış gerçekleşti. Yazdığım program aşağıdadır, önerilerinizi bekliyorum hepinize kolay gelsin.

    TRISB=0; PORTB=0;
     TMR1IE=1;  TMR1CS=0;
     GIE=1;

     for (;;)
            continue;

void interrupt my_int (void) {
    TMR1IF=0;  PORTB++;}


Arkadaşlar prescaler değerlerini buraya yazmaya gerek duymadım zaten 1:1'dir...
İmza.

elmaalma

C bilmiyorum ,
bit 0 TMR1ON: Timer1 On bit
1 = Enables Timer1
0 = Stops Timer1
bu biti c kendisi mi ekliyor?

sigmoid

PEIE  yi (Peripheral Interrupt Enable bit) de açman gerekiyor.
GIE den önce PEIE=1 yazarsan sorun hallalur.

ayrıca arkadaşın dediği gibi TMR1ON u da aktif etmelisin.

kolay gelsin.

Logan

Fabrikayı taşıdığımız için henüz netimiz bağlanmadı, programı başka bir bilgisayardan ezbere yazdım o satırı atlamışım. @elmaalma'nın dediği gibi TMR1'i aktif ettim. Fakat "PEIE" bunu denemedim umarım işe yarar.
İmza.

Logan

Evet @abdullaho PEIE bitini aktif edince problem çözüldü.İyi çalışmalar...  :)
İmza.

sigmoid

rica ederim. kolay gelsin.