Gelen sinyalleri 12f675'e okutmak

Başlatan bircan, 19 Şubat 2012, 15:08:25

bircan

Merhabalar,saatten gelen alarm sinyallerini 12f675'e okutmak istiyorum.Tabi her gelen sinyali değil.Mesala saatin alarmini kurduğumda saat alarmi 9 defa calmaktadir.Ben bu gelen sinyallerin 4.olani pic'e okutmak istiyorum.Yazdiğim programda devre sinyalleri aliyor ama
4. sinyallde cikis olmasi gerekirken olmuyor. Acaba sorun neden kaynaklanmaktadir?Yazdigim program şudur.

GEREK YOK HER SOZU LAF ILE BEYANA , BIN SOZ EDER BIR BAKIS BAKISTAN ANLAYANA... MEVLANA

bircan

@	device  pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off	

define OSC 4            ' Çalýþma frekansý
define osccal_1k 1
TRISIO = %00000001      ' giriþ çýkýþ atamasý 
CMCON = %00000111       ' Giriþlerdeki Comparatorlar kapalý
ANSEL=0
GPIO=0
SN     VAR BYTE
SINYAL VAR WORD
BASLA:
GPIO=0
GPIO.0=0
GPIO.1=0
GPIO.2=0
PAUSE 200

IF GPIO.0=1 THEN
SINYAL=SINYAL+1
SINYAL=1 
endif
 IF SINYAL=3 THEN
GPIO.2=1:GPIO.1=1:PAUSE 2000:GPIO.2=0:GPIO.1=0
 SINYAL=0
ENDIF
IF SINYAL=1 THEN
SINYAL=SINYAL+1
GPIO.1=1:PAUSE 100:GPIO.1=0
SINYAL=2
IF SINYAL=2 THEN
SINYAL=SINYAL+1
GPIO.1=1:PAUSE 100:GPIO.1=0
SINYAL=3
ENDIF
ENDIF
'ENDIF
GOTO BASLA
GEREK YOK HER SOZU LAF ILE BEYANA , BIN SOZ EDER BIR BAKIS BAKISTAN ANLAYANA... MEVLANA

ete

Kullandığın program mamntığını anlamak zor.
IF GPIO.0=1 THEN
SINYAL=SINYAL+1
SINYAL=1 
ENDIF


hem sinyal değerini bir artırıyor sonrada aynı sinyal için Sinyal=1 komutunu veriyorsun. Madem 1 vereceksin boşuna artırmayı neden yapıyorsun?
Şayet alarm sinyal girişi GPIO.0 ise oraya gelen pulsları sayarsın. Ama sayarken dikkat et. Program o sinyalden hızlı yürür ve sayayım derken bir çırpıda sayabilir. Bu nedenle aynı sinyalin LOW olmasınıda beklemen gerekiyor
Bu nedenle şöyle bir mantık kullansan belkide daha doğru olurdu.

BASLA:
IF GPIO.0=1 then
  SINYAL=SINYAL+1
  WHILE GPIO.0=1:WEND  'bu satırda alarm sinyalinin LOW a düşmesini beklersin.
  IF SINYAL=4 then  
     GPIO.2=1:GPIO.1=1:PAUSE 2000:GPIO.2=0:GPIO.1=0
     SINYAL=0
  ENDIF
ENDIF

GOTO BASLA
     

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