Takometre Sorunsalı

Başlatan oguztkn, 26 Temmuz 2016, 23:48:43

oguztkn

Merhaba arkadaşlar ,
Bir elektrikli araba projem için takometre yapmak istiyorum.16f628a kullanmaya karar verdim şemam ektedir.Şöyle bir sıkıntım var PORTB.0 kesmesini kuruyorum aynı zamanda da timer0 ı 1sn lik ayarlıyorum 1sn boyunca portb.0 dan gelenleri toplayıp 60 ile çarpıyorum sonra bunu teker katsayısı ile çarpacağım ama şimdilik devir bilgisini bulmaya çalışıyorum.12 volt dc 1500 rpm motorun ucuna mıknatıs bağladım denemeleri onunlar yapıyorum ama program eksik sayıyor bir anlık çalışmıyor gibi hızlı değişmiyor devir bilgisi bunun nedeni nedir acaba neyi yanlış yapıyorum yoksa komple mi yanlış yoldayım bir yardım edebilirmisiniz
Şimdiden Teşekkür Ederim...

DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RSREG PORTA 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 4 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.
    
sayac var word
sayi var word
rpm var word

Comm_Pin1   VAR	PortA.3 
Busy        VAR BIT
HAM         VAR	WORD
ISI         VAR WORD
TEMP        VAR word
Float       VAR WORD

ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%11000101   'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10110000  'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7
TRISA=0
TRISB=%00000001
 clear
 pause 200
Basla:  
     'gosub sensor_oku
    ' gosub gonder
     Lcdout $FE,$80,"AREL"
     Lcdout $FE,$C0," UNIV."
     Lcdout $FE,$8A," KM/H"
     Lcdout $FE,$C7,"Pil:"         
     Lcdout $FE,$CB,DEC ISI,",",Dec FLoat,"C"    
    goto basla

;*******************************************************************************
Sensor_Oku:              ;/***************************************************** 
           OWOUT   Comm_Pin1, 1, [$CC, $44] ;*********************************** 
Bekle1:                  ;****************************************************** 
           OWIN    Comm_Pin1, 4, [Busy]     ;*********************************** 
           IF      Busy = 0 THEN Bekle1     ;***********************************
           OWOUT   Comm_Pin1, 1, [$CC, $BE] ;***********************************
           OWIN    Comm_Pin1, 2, [HAM.Lowbyte, HAM.Highbyte]  ;***************** 
           GOSUB   Hesapla1                 ;***********************************
           RETURN        ;****************************************************** 
Hesapla1:                ;****************************************************** 
    ISI=HAM*10/16        ;****************************************************** 
    FLOAT = ISI//10      ;****************************************************** 
    ISI=ISI/10           ;****************************************************** 
    RETURN               ;******************************************************  
;*******************************************************************************
DISABLE                  ;****************************************************** 
KESME:                   ;******************************************************
    if INTCON.1=1 then   ;******************************************************
    rpm=rpm+1            ;******************************************************
    INTCON.1=0           ;******************************************************
    endif                ;******************************************************
    if INTCON.2=1then    ;******************************************************
        sayac=sayac+1    ;******************************************************
        if sayac=61 then ;******************************************************
                         ;******************************************************
            sayac=0      ;******************************************************
            sayi=rpm*60  ;******************************************************
            Lcdout $FE,$87,dec sayi     
            rpm=0        ;******************************************************
            endif        ;******************************************************
        endif            ;******************************************************
        TMR0=0
        INTCON.2=0       ;******************************************************
                   ;******************************************************
        resume           ;******************************************************
;*******************************************************************************
    end



İşlemci bilgilerin tanımlı değil derseniz programda, 64 bit pc de sıkıntı olduğundan programlayıcıdan seçiyorum sigorta ayarlarını dahili osilatör kullanıyorum.


buntger

Hi,

because they do not use the "Count" command.

CMCON=7
RPM var Word

Ini:
 
COUNT portb.0,1000,RPM
RPM=RPM*60

LCDOUT $fe,1,"Engine running: ", DEC RPM, " rpm"

GOTO Ini:
END