RTC ds1302 Sorunu

Başlatan Mehemet, 05 Ağustos 2008, 16:56:31

Mehemet

877a ile lcd ye zaman ve tarih yazdıran  bi program yazdım zaman içinde ds 1302 kullandım. Lakin bi türlü dügün bi çıkış alamadım. nasıl haberleştireceğimi bilmediğim için nette cok bullunan programlardan birini kullandım bazen net bi sonuc aldım ama şimdi hiç çalışmıyor.  kristaldan mi kaynaklanıyor diye şüpheleniyorum ama   devrenin çalışmaması için hiç bir sorun yok ( yazılım dışında)
acaba aranızda bu konuda tecrübeli biri varmı
Elektrik Müh.

eldirr

CCS derleyicisinde hazır bir DS1302 kütüphanesi var, ondan yararlanabilirsin. Kütüphaneyi incelersen zaten kullanman gereken fonksiyonları görebilirsin. Ayrıca Proteus programında DS1302 modeli de var, donanımdan şüphelenmeden önce yazılımını orada deneyebilirsin.

Düzeltme: Konunun PICBASIC bölümünde açıldığına dikkat etmemişim  :roll:  Yine de proteusta dene bence donanımdan şüphelenmeden önce.

Mehemet

e.t.e beyin ds1302 için yazdığı yazılımını kullandım sonuc alamadım ama baska bi yazılım buldum cok güzel çalıştı lakin o yazılımda da  herşeyi tek tek okuyor(  sn, dak, saat vb..)
Elektrik Müh.

EGEHAYDAR

[code]
High RESET1        'OKUMA İŞLEMİNİ BAŞLAT    
SHIFTOUT DTA,SCLK,LSBFIRST,[$8E,0]
Low RESET1         'OKUMA İŞLEMİNİ BİTİR



If PORTB.5=0 Then KAYDET
GoTo KAYDETME

KAYDET:
Low RESET1        
Low SCLK

ISI=25
YIL=8
AY=8
GUN=6
HAFTA=3
SAAT=12
DAKIKA=19
SANIYE=0
KONTROL=0

        KONTROL=SANIYE:GoSub CEVIR1:  SANIYE=SAYI
        KONTROL=DAKIKA:GoSub CEVIR1:  DAKIKA=SAYI                                  
        KONTROL=SAAT:  GoSub CEVIR1:  SAAT=SAYI
        KONTROL=GUN:   GoSub CEVIR1:  GUN=SAYI
        KONTROL=AY:    GoSub CEVIR1:  AY=SAYI
        KONTROL=HAFTA: GoSub CEVIR1:  HAFTA=SAYI
        KONTROL=YIL:   GoSub CEVIR1:  YIL=SAYI        


High RESET1        'OKUMA İŞLEMİNİ BAŞLAT    
SHIFTOUT DTA,SCLK,LSBFIRST,[$8E,0]
Low RESET1         'RESETİ SIFIRLA
High RESET1
SHIFTOUT DTA,SCLK,LSBFIRST,[$BE,SANIYE,DAKIKA,SAAT,GUN,AY,HAFTA,YIL,0]  
Low RESET1  
     
KAYDETME:

BASLA:
GOSUB SAATOKU
GOTO BASLA

SAATOKU:            
       
        RESET1=1
       
        shiftout DTA,SCLK,LSBFIRST,[$BF];  [$BF]
        SHIFTIN DTA,SCLK,LSBPRE,[SANIYE,DAKIKA,SAAT,GUN,AY,HAFTA,YIL,KONTROL]  'OKU
        RESET1=0
       
        KONTROL=SANIYE:GoSub CEVIR:  SANIYE=SAYI
        KONTROL=DAKIKA:GoSub CEVIR:  DAKIKA=SAYI                                  
        KONTROL=SAAT:  GoSub CEVIR:  SAAT=SAYI
        KONTROL=GUN:   GoSub CEVIR:  GUN=SAYI
        KONTROL=AY:    GoSub CEVIR:  AY=SAYI
        KONTROL=HAFTA: GoSub CEVIR:  HAFTA=SAYI
        KONTROL=YIL:   GoSub CEVIR:  YIL=SAYI
       
         
       
        Return        
             
CEVIR:
SAYI = ((KONTROL >> 4) * 10) + (KONTROL & $0F)
Return

CEVIR1:
   SAYI=0
hx:
If KONTROL>=10 Then
       KONTROL=(KONTROL-10)
       SAYI=(SAYI+16) ;$10
       GoTo hx
   Else
       SAYI=(SAYI+KONTROL)
       GoTo ex
   EndIf
ex:
Return[code]
TOPLUMA FAYDALI OLMAK İSTİYORSAN DOĞRU BİLDİĞİNİ PAYLAŞ.