tmr0 kesmemsi hakkında

Başlatan tolga.onder, 04 Aralık 2007, 20:07:18

tolga.onder

Merhaba arkadaşlar,

Pic basic de tmro kesmesini çalışıyorum. Aşağıdaki kod olması gerktiği gibi çalışmoyor. 2 sn de bir led i yakıp söndürmesi gerekiyor. En azından ben bunu isteyerek bu kodu yazdım. Ama olmuyor. yardımcı olan arkadaşlara şimdiden teşekkürler.

kesme_sayma  var byte

trisb=0
portb=0

OPTION_REG=%10000101
INTCON=%10100000  

on interrupt goto kesme
     

ana_dongu:
   
     high portb.2
     
goto ana_dongu


  disable
kesme:
     
  kesme_sayma=kesme_sayma+1
   
  if kesme_sayma=122 then
  kesme_sayma=0
  toggle portb.4
 
  endif
   intcon.2 =0
  resume
 
  enable
   
end

mustafa_cmbz

bu benım ilk uygulamamdı bundan öteyede gidemedim zaten :D  senın koda biraz yakın gibi fakat siteyi arastırırsan eline güzel bilgiler geçecektir... 16f628 için yazmıştım uyarlayabilirsin..



                           
   
   
   
   
ON INTERRUPT GOTO KESME 
    
    OPTION_REG=%10000111   ' 1/256 
    INTCON=%10100000        'TİMER SEÇİMİ VE AKTİF ETMEK
    CMCON=7 
    
    SYMBOL LED=PORTA.0
    SYMBOL BUTON=PORTA.1
    SYMBOL ROLE=PORTA.2
    
    SAYAC VAR BYTE
    
      BASLA:
    IF  BUTON=1 THEN  ROLECEK 
    GOTO BASLA
    
    ROLECEK:
    HIGH ROL
    RETURN
    
    Disable 
    KESME:
    
    Sayac=Sayac+1 
    If SAYAC=15 then 
    SAYAC=0 
    TOGGLE LED   '(yada LED=1-LED) 
    ENDIF 
    
    INTCON.2=0 'BURADA TMR0 Kesme Bayrağını sıfırlaDIM 
    RESUME 
    ENABLE 
    END
[/color]

stlg

Ben bu dili fazla bilmiyorum ,ama lediniz portb2 demi yoksa portb4 temi baglı ,ana dongu icerisinde neden portb2 yi aktif ediyorsunuz ,kesme olustugunda ve sure doldugunda toggle komutu bu işi zaten yapacak
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

tolga.onder

ana döngü içerisinde herhangi bir kod olsun diye yazdım. amacım kesme belli bir sayıya ulaştığında togle ile portb.4 ü terslemek. Diğer arkadaşın verdiği kod gayet güzel çalışıyor. Benim kodum niye çalışmıyor anlamıyorum.

mustafa_cmbz

Alıntı yapılan: "tolga.onder"ana döngü içerisinde herhangi bir kod olsun diye yazdım. amacım kesme belli bir sayıya ulaştığında togle ile portb.4 ü terslemek. Diğer arkadaşın verdiği kod gayet güzel çalışıyor. Benim kodum niye çalışmıyor anlamıyorum.


bölmeyi yanlış yapmış olabilirsiniz..

sizinki:

OPTION_REG=%10000101
[/color]

benimki:

OPTION_REG=%10000111   ' 1/256
[/color]


ancak karşılaştırma ve ete hocanın yayınladığı derslerdeki tmr0 kesmesinin kullanılması dersini inceleyin faydalı olacaktır sadece okuma ile kalmayın uygulama yapın...kolay gelsin..

tolga.onder

sizin vermiş olduğunuz kodu kendime uyarladım çalışıyor ? yalnız şunu farkettim program başında trisb=0 ve portb=0 yazarsam sizin kod da çalışmıyor.

mustafa_cmbz

tam olaraka neden olduğunu bilmiyorum fakat trısb=0 diye bildirmeden de çalışıyorsa bence yazmayın...

alabora

kesme_sayma var byte 

trisb=0 
portb=0 

OPTION_REG=%10000101 
INTCON=%10100000 

on interrupt goto kesme


Burada "on interrupt goto kesme " ifadesini başa koymak gerekir mi ; gerçi basic editöründe bunun sırası önemli olmayabilir ama registerlara değer atadıktan sonra interrupt dallanması bildiriliyor. Bir deneyin isterseniz...