tmr1 dışardan ilk palsi almıyor

Başlatan antiteror, 22 Ocak 2010, 11:35:33

antiteror

DEFINE LCD_DREG     PORTB 
DEFINE LCD_DBIT         4 
DEFINE LCD_EREG     PORTB 
DEFINE LCD_EBIT         1 
DEFINE LCD_RWREG    PORTB 
DEFINE LCD_RWBIT        2 
DEFINE LCD_RSREG    PORTB 
DEFINE LCD_RSBIT        3 
DEFINE LCD_BITS         4 
DEFINE LCD_LINES        2        
DEFINE  OSC 8          ' 
DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
DEFINE LCD_DATAUS 50 'Data delay time in us 
CMCON=7                      'CCP iptal hepsi giriş çıkış 
ADCON1 = 7 
option_reg=%00000000
intcon=%00000000 
TRISA=%00000000
T1CON=%00001011 
TrisB=0 
Trisc=%00000001 
Trisd=0 
Trise=0 
PortA=0 
PortB=0
SAYI VAR WORD

SAYIL VAR SAYI.byte0

SAYIH VAR SAYI.Byte1
TMR1H=0
TMR1L=0
clear 
LOW PORTB.2 'RW bacağı ekrana yazmaya imkan vermek için LOW yapıldı. 
lcdout $FE,1 
PAUSE 200

   
ff: 
TMR1H=SAYIH
TMR1L=SAYIL        
    LCDOUT $FE,$80,bin TMR1H,bin TMR1L
    LCDOUT $FE,$c0,dec5 SAYI
    pause 10
    goto ff


devre.rar

devreyi çalıştırdığımda ilk palsi algılayıp TMR1 saymıyor bunu yapmamdaki amaç TMR1 ile birlikte Tmr0 ı da aktif edip Pals sayıp 2 yada 3 dakikada geçen suyun hacmini ölçmek. akış ölçer 1 litrede 430 pals üretiyor pnp çıkışlı.
daha başka nasıl olur yardımlarınızı bekliyorum
teşekkürler

ete

Biraz anlamsız bir şey ama data sheet'e bakarsan şöyle söylüyor,

- T1CKI pini HIGH da bekliyor ise ve bu pin önce low'a çekilip sonra HIGH'a geçerse  Yükselen kenarda TMR1=TMR1+1 olur. Yani "1" sayar

- T1CKI pini LOW da bekliyor ise ilk saydırmayı alabilmek için bu pine bir düşen kenar verilmesi gerekir denmiş. Yani Low da bekleyen pin önce bir HIGH yapılacak ve sonra LOW (düşen kenar verildi) yapılacak . Sonraki ilk Yükselen kenarda ilk sayma alınacaktır.

Açıklama tamamen senin elde ettiğin sonucun aynısı. Bu durumda
elindeki çözümler şunlar olabilir.

1. T1CKI girişini HIGH da bekletip butona basınca low verirsin. Böylece ilk puls verildiğinde TMR1 sayar. Ancak butona basılıp bırakılırken sayma gerçekleşir.

2. PORTC.2 pininden  1K direnç ile T1CKI pinine bir bağlantı yaparsın ve Programın başla satırından önce;
PORTC.2=1:Pause 10:PortC.2=0
şeklinde bir komut koyarsın. İlk program başladığında bu komut otomatikman Puls girişine bir puls Uygulayacaktır.
Böylece senin verdiğin ilk puls yine 1 den başlayacaktır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com