12F675 Alarmlı saat sorunu

Başlatan satilla, 28 Mayıs 2010, 02:22:46

satilla

12f675 ile alarmlı saat yapmaya calısıyorm fakat 3 gündür ne yaptıysam işin içnden cıkamadım
PIC in program hafızasına yukleidigm saat ve dakika bilgisine geldiginde bir portun cıkıs almasını istiyorm fakat olmuyor, saati lcd de denidim sorunsuz calısıyor (16f628) fakat 12f e uyarladıgımda programı lcd satırlarını kaldırdıgımda isiste calıstıgını görüyorm fakat degiskendeki bilgi ile aynı olsa bile saat değişkeni çıkış alamıyorm devrede ds1302 rtc kullandım



Include "modedefs.bas"
Device 12F675



SET_OSCCAL 

GPIO=0
TRISIO=%11011        
CMCON=7
OPTION_REG=%10000000


'*****RTC DS1302  TANIMLAMALARI*****
rst VAR GPIO.5
SCLK VAR GPIO.1
IO VAR GPIO.4

'*****RTC DS1302 DEĞİŞKENLERİ*****
GUN     VAR Byte
AY      VAR Byte 
YIL     VAR Byte
TARIH   VAR Byte
SAAT    VAR Byte 
DAKIKA  VAR Byte
SANIYE  VAR Byte
KONTROL VAR Byte









al2 var Byte
al1 var Byte
saat1 var Byte

dakika1 var Byte


Clear

Low rst       
Low SCLK

GUN=$10
AY=$04
YIL=$10
TARIH=$23
SAAT=$16
DAKIKA=$29
SANIYE=$55




DelayMS 100

saat1=16
dakika1=30


basla:





ANA_DONGU:
GoSub GETTIME
GoSub SETTIME

If saat1=SAAT Then  High GPIO.2 ' kullanmak istedigim--if SAAT=saat1 and DAKIKA=dakika1 then gpio.2=1



SETTIME:
rst=1         'OKUMA İŞLEMİNİ BAŞLAT
SHOut IO,SCLK,lsbfirst,[$8e,0]
rst=0         'RESETİ SIFIRLA
rst=1
SHOut IO,SCLK,lsbfirst,[$BE,SANIYE,DAKIKA,SAAT,TARIH,AY,GUN,YIL,0]
rst=0         'RESETİ SIFIRLA
Return

GETTIME:
rst=1
SHOut IO,SCLK,lsbfirst,[$BF]
SHIn IO,SCLK,lsbpre,[SANIYE,DAKIKA,SAAT,TARIH,AY,GUN,YIL,KONTROL]
rst=0



Return






End

ferit06

#1
 ısıs te kristal veya harici clock bağlamadan çalışır. ancak fiziki devrede doğal olarak çalışmaz. sizin devrenin dahili osilator ile çalışması gerektiğini bildirmeniz gerekir. Ya programlarken sigortalardan ya da

Config intrc_osc_noclkout, wdt_OFF, mclre_off, boden_off
şeklinde( yine de programlarken sigortaları kontrol etmenizde fayda var)


sizin program içerisine koyduğunuz set_osccal dahili osilator ile çalışma yapılacağını bildirmeniz halinde işlemcinin program hafızasının sonunda yer alan kalibrasyon değerini dikkate almasını sağlar.

ayrıca set_osccal yerine
#define OSCCAL_1K 1   '  3FFF adresindeki değeri korur

kullanabilirsiniz. diğer taraftan program derleyiciye de   devrenin frekans bilgisini de vermeniz gerekir.
şu şekilde;

Declare Xtal 4

son olarak TRISIO yu da 8 hane olarak  yazarark deneyin baş tarafa 3 adet 0 ekleyin

ibo1973

If saat1=SAAT Then  High GPIO.2 ' kullanmak istedigim--if SAAT=saat1 and DAKIKA=dakika1 then gpio.2=1

programın tamammı yok ama bu şekilde yapıyorsanız çalışmaması normal


if (saat = 1 ) and (dakika = 1 )  then  yaptırıcağınıziş  ' tek satır ise bu şekilde



if (saat = 1 ) and (dakika = 1 )  then 
                                     yaptıracağınıziş 1
                                     yaptıracağınıziş 2
                                     yaptıracağınıziş 3 
                                     vs
                                     vs
endif 

satilla

ibo1973, hocam dediginiz gibi tanımlamayı proton derleyicisi kabul etymiyor sizin yazdıgınız basic için olsa gerek ancak parantezleri kaldırısam derleme yapıyor..

bu arada devrede zatn harici osc var ds1302 için setosc ile pcin fabrikkasyon oscsini kormuak istedim bütün saat işlemini ds1302 yapıyor zatn

bu arada kod bu şekilde calısıyor

If saat1<>SAAT And dakika1<>dakika Then  High GPIO.2


ancak benim istdedigim eşlitlik olması durumda çalışması

ibo1973

evet haklısın pbp için kodlar dikkat etmemişim

proton derleyici hiç kulanmadım ama aralarında ciddi farklılık yok sanırım

kodunuzun tamamını koyabilirseniz yardımcı olanlar mutlaka çıkıcaktır

verdiğiniz kodda dakika1 ve saat1 değişkenleri nereden değer aldığı görünmüyor



ferit06

devrede clock işlemini 1302 yapıyor diyorsunuz.  Ancak harici  sistem clock girişi olan GPIO.5 i reset olarak sembollemişsiniz. Sisteminizde sistem clock fosc yok...

satilla

Alıntı yapılan: ferit06 - 28 Mayıs 2010, 13:55:54
devrede clock işlemini 1302 yapıyor diyorsunuz.  Ancak harici  sistem clock girişi olan GPIO.5 i reset olarak sembollemişsiniz. Sisteminizde sistem clock fosc yok...


hocam ds1302 den clock sinyali almıyorum seri haberleşme sağlayıp saat bilgisini yapıyorm, zaten dediğim gibi LCD ekranda sorunsuz saatin işledigini gördüm fakat saat değişkeni ile benim oluşturuduğum değişken eşit olduğu zaman neden çıkış alamıyorum

kodların son hali;
Device 12F675
Config INTRC_OSC_NOCLKOUT , WDT_OFF , PWRTE_ON , BODEN_OFF , CP_OFF 

GPIO=0
TRISIO=%00011011        
CMCON=7
ANSEL=0

OPTION_REG=%10000000


'*****RTC DS1302  TANIMLAMALARI*****
rst VAR GPIO.1
SCLK VAR GPIO.5
IO VAR GPIO.4

'*****RTC DS1302 DEĞİŞKENLERİ*****
GUN     VAR Byte
AY      VAR Byte 
YIL     VAR Byte
TARIH   VAR Byte
SAAT    VAR Byte 
DAKIKA  VAR Byte
SANIYE  VAR Byte
KONTROL VAR Byte



saat1 var Byte
dakika1 var Byte


Clear

Low rst       
Low SCLK

GUN=$10
AY=$04
YIL=$10
TARIH=$23
SAAT=$16
DAKIKA=$29
SANIYE=$55




DelayMS 100

saat1=16
dakika1=30


basla:





ANA_DONGU:
GoSub GETTIME
GoSub SETTIME

If saat1=SAAT And dakika1<>dakika Then  High GPIO.2


GoTo ANA_DONGU

SETTIME:
rst=1         'OKUMA İŞLEMİNİ BAŞLAT
SHOut IO,SCLK,lsbfirst,[$8e,0]
rst=0         'RESETİ SIFIRLA
rst=1
SHOut IO,SCLK,lsbfirst,[$BE,SANIYE,DAKIKA,SAAT,TARIH,AY,GUN,YIL,0]
rst=0         'RESETİ SIFIRLA
Return

GETTIME:
rst=1
SHOut IO,SCLK,lsbfirst,[$BF]
SHIn IO,SCLK,lsbpre,[SANIYE,DAKIKA,SAAT,TARIH,AY,GUN,YIL,KONTROL]
rst=0


Return


End

Ruzgarbey

soruya cevabı dün geceden bu yana bir türlü buraya yazamadığım için mesaj olarak gönderim.mod arkadaşlarımızın bu konuya el atmaları gerekiyor.konulara cevap yazamıyoruz.cevap gönder diyorum öyle bekliyo sonra sayfa görüntülemiyor diyor...
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK

satilla

rüzgarbey,
hocam bu konuda herhangi bir fikriniz varmı?