12f675 ile ds1302 sorunu

Başlatan POWER, 17 Şubat 2017, 21:52:41

POWER

Herkeze iyi geceler,
basit bir devre.12f675 ve ds1302 kullanılarak basit bir zamanlama devresi.fakat ne yaptıysam saniyenin hızlı çalışmasını düzeltemedim.muhtemelen 12f675 ayarları ile ilgili bir sorun.çünkü bu işlemciyi çok fazla kullanmadım.ilgili dosyayı ekliyorum.
define OSC 4
Include "MODEDEFS.BAS"

@ DEVICE pic12F675                      'işlemci 12F675                                
@ DEVICE pic12F675, WDT_OFF             'Watch Dog timer açık
@ DEVICE pic12F675, PWRT_ON             'Power on timer açık
@ DEVICE pic12F675, PROTECT_OFF         'Kod Protek açık
@ DEVICE pic12F675, MCLR_OFF            'MCLR pini kullanılmıyor
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 

DEFINE OSCCAL_1K 1 'OSCCAL değerini yeniden pice yazdırıyor

CMCON=7
ANSEL=%00010000       
OPTION_REG.7=1
WPU=%00000000
TRISIO=%011010
GPIO=0      

SN      VAR BYTE 
DAK     VAR BYTE 
SAAT    VAR BYTE 
MEM     VAR BYTE
GUN     VAR BYTE
AY      VAR BYTE 
YIL     VAR BYTE
HGUN    VAR BYTE 
BOS     VAR BYTE 
TEMP    VAR BYTE
SAYI    VAR BYTE
ONLAR   VAR BYTE
BIRLER  VAR BYTE
HAFTA   VAR BYTE

SYMBOL  RTC_CLK=GPIO.2
SYMBOL  RTC_DTA=GPIO.4   
SYMBOL  RTC_RST=GPIO.1

symbol ROLE=GPIO.5
PAUSE 300 

BASLA:
        GOSUB ZAMAN_OKU
IF SAAT=21 AND DAK=23 AND SN<20  THEN 
   ROLE=1
ELSE
   ROLE=0
ENDIF
        GOTO BASLA

ZAMAN_OKU:
    high RTC_RST:OUTPUT RTC_DTA
shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB CEVIR:HAFTA=SAYI
     low RTC_RST 
     return
ZAMAN_YAZ:
         MEM=sn:gosub TERSCEVIR:sn=SAYI
         MEM=DAK:gosub TERSCEVIR:DAK=SAYI
         MEM=SAAT:gosub TERSCEVIR:SAAT=SAYI
         MEM=GUN:gosub TERSCEVIR:GUN=SAYI
         MEM=AY:gosub TERSCEVIR:AY=SAYI
         MEM=YIL:gosub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GOSUB TERSCEVIR:HAFTA=SAYI
    high  RTC_RST
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     low RTC_RST:PAUSEUS 10 
    high RTC_RST          
SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]'YAZ
     low RTC_RST
 PAUSEUS 10
  return
CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
  return
TERSCEVIR:
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
  return
END

http://s3.dosya.tc/server10/qmkd64/TIMER.rar.html

TB6BKG

mg1980

Hocam,
DS1302 kristal frekansı 32.768 midir?

F.T

sn işlemci ile alakalı değilde rtc ile alakalı olmalı.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Andromeda

Saniyenin hızlı çalışması ne demek?
saat ileri gidiyorsa kristale paralel kond.
takılması gerekiyor.hatta ayarlı kond. ile frekans 32768 e ayarlanmalı..
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

POWER

kristal frekansı 32.768 zaten devreyi isis de deniyorum gerçek devresinde değil.similasyonu başlattığım zaman  saniyenin saymasına gözle bakıldığı zaman zaten anlaşılıyor hızlı ilerlediği.pc nin saniyesiyle karşılaştırdım pc nin saniyesi 39 sn geldiğinde ds1302 bir dakikayı tamamlıyor.yani benim sorunum o klasik saatin ileri yada geri kalması değil.bu sorun isis kaynaklı olabilirmi? fakat aynı proğramı 628a da denediğimde hiç bir problem yok.
TB6BKG

ilyas KAYA

Define osc 4 komutunu ekleyin ve İsis den de işlemci osilator ayarını 4 mhz yapın. Gerçek devrede yüksek ihtimal normal çalışır. İsis te zamanlamalari tutturmak icin simulasyon hız ayarlarını yapmanız gerekir ki yinede tam düzgün çalışmıyor.

dursuncemal

hocam kristal frekansi tamam ise benc devreyi gercekte deneyin.buyuk bir ihtimal ile sorun kalmayacaktir.bu konuda simulasyon programina fazla guvenmeyin.
:=