Dökümanlar - Makaleler ve Projeler => Önemli Bilgiler => Konuyu başlatan: ete - 01 Mayıs 2012, 10:35:23
Başlık: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 01 Mayıs 2012, 10:35:23
Hepinizin bildiği gibi saat yapma merakı pek çok kimsede bulunmakta. Saat yapmanın yolu ise bir RTC kullanmaktan geçiyor. RTC denilen şey öyle enteresan bir malzemeki özellikle saat bilgilerinin RTC hafızasında tutulma şekli nedeni ile pek çok kimsenin aklı karışıyor ve genelde kestimeden gidip kullanılmaya çalışılıyor. Bunun ne anlama geldiğini yazının ileriki bölümlerinde açıklayacağım.
RTC dediğimiz malzemeler üzerlerinde bulunan kristal osilatör ile kendi saat pulslarını üretip zamanı tutan entegrelerdir. Genelde çalıştıkları kristaller 32769Hz dir. Bunu bölerek 1Hz lik saat pulslarını elde etmektedirler. En çok kullanılan modeller olarak DS1302 ve DS1307 malzemelerini sayabiliriz. Bu malzemeler genelde bir işlemciye bağlanarak kullanılırlar. Bağlantı şekline bakılırsa DS1302 3 pinden seri haberleşme protokolünü , DS1307 ise I2C protokolünü kullanmaktadır.
Her ikisinin ortak yönü ise zaman bilgilerini tutma yöntemidir. BCD yani Binary Coded Desimal formatında tutulur bu bilgiler. Bu yüzden elinizdeki zaman bilgisini doğrudan entegreye ayar bilgisi olarak yazamaz ve aynı şekilde entegreden okuduğunuzuda direk zaman bilgisi olarak kullanamazsınız. Yukarıda bir laf eetim kestirmeden kullanma terimi burada ortaya çıkıyor. Her ne kadar doğrudan kullanamazsınız desemde bir yolu var. Zira entegreden okunan bilgileri HEX formatında ekrana verirseniz doğru saat bilgilerini görürsünüz. Ama bu yanıltıcıdır. Zira aslında desimal bir bilgiyi hex olarak ekrana veriyor ama onu desimal kabul ediyorsunuz. Her neyse biraz karışık gibi gözüksede format şeklini anlayınca dediklerimi daha kolay anlayacaksınız. Her iki entegreninde register tablosuna bir bakarsanız hemen hemen aynı formatı görürsünüz. Örneğin Saniye hafızasına bir bakalım isterseniz. Bit7 ......................................Bit0 CH |....10Sec..... | .......SEC........| Bu şekil şunu ifade etmektedir. Bit CH clock Halt bitidir. Fabrikasyon olarak 1 (HIGH) oalrak ayarlanmıştır. Yada siz o biti ne zaman 1 yaparsanız saat çalışmasını durdurur. Sonraki gelen 3 bit (bit6-Bit5-Bit4) saniye değerinin onlar basamağını tutar. Sonraki gelen 4 bit ise saniye değerinin birler basamağını tutar. Şimdi DS1302 den okuduğumuz saniye değeri şöyle olsun SN=%0010 0110 Bu sayının direk desimal karşılığı 38 sayısıdır. Ama saniye karşılığı şöyle hesaplanmalıdır. %0010 sayısı desimal karşılığı 2 sayısıdır. Onlar basmağı olduğuna göre bu 20 olacaktır. Diğer parça ise %0110=6 sayısına eşittir. O halde okunan saniye değeri aslında 26 değerini göstermektedir. Şimdi bunu çevirmeden nasıl kestirmeden gösterebildiğimize bir bakalım isterseniz. Sayı gerçekte 38 sayısına eşit idi. 38 sayısının hex karşılığı ise 26 dır. O halde ben okunan sayıyı ekrana yazrken $SN şeklinde yazdırırsam ekranda 26 sayısını göreceğim demektir. İşte kestirme budur. Ama unutmayın bu işi ancak LCD ekranda yapabilirsiniz. 7 segment displayde göstermek için ne yapıyoruz? Önce onlar basamağını alıp onun 7 segment karşılığını buluyoruz. Bunu yaparkende Onlar=SN DIG 1 şeklinde bir komut kullanıyoruz. Bu durumda Onlar değeri örneğimize göre 3 olur 2 olmaz. Şayet komutu şöyle kullanabilse idik olabilirdi Onlar=$SN DIG 1 . BU durumda Onlar=2 olacak idi. Ama ne yazıkki böyle bir komut şekli yok.
Dakika değeride benzer şekilde hafızada tutulmaktadır. Bit7 | ---10Min---|-----Min------| Yani ilk 4 bit dakika değerinin birler basamağını veriyor, sonra takip eden 3 bit onlar basamağını veriyor ve sonda yer alan 7. bit ise daima sıfır olarak okunuyor. Aynı şekilde okuduğumuz dakika değeri diyelimki Dak=%01010011 şeklinde olsun. Şimdi bu sayının direk desimal karşılığı, 83 sayısıdır. Ama gerçek dakika karşılığı ise %0101=5 sayısına eşit ama onlar basmağı olduğu için 50 olacaktır. %0011 sayısı ise 3 desimal değerine eşittir. O halde sayının dakika karşılığı 53 sayısı olacaktır. Benzer şekilde 83 sayısının desimal karşılığı ise 53 sayısıdır.
Sonuç olarak RTC ile doğru şekilde çalışabilmek için daima entegreye yazacağımız saat ayar değerini BCD formatına çevirip yazmalı, entegreden okunan zaman bilgilerinide BCD formatından desimal formata çevirerek kullanmalıyız. Bunu yapmazsanız epeyce sorun yaşarsınız. Şimdi çevirme işlemlerini nasıl yapacağız biraz onlara bakalım. Örneğimizi Saniye birimi üzerinden vereceğim ama diğerleri de aynı yöntemle çevrilebilecektir. Şimdi bir saat ayarı yaptığımız düşünelim ve ayarladığımız saniye değeri de 45 olsun. Bu saniye değerini DS1302 (veya DS1307) ye yazacağımızı farz edelim. BCD formatına bakılırsa 4 sayısı saniyenin onlar basamağını teşkil edecek, 5 değeride birler basamağını teşkil edecektir. Bunu BCD formatında yazarsak %0100 0101 şeklinde bir sayı elde etmemiz gerekecektir. İşte adım adım bunu nasıl yaptığımızı aşağıda görebilirsiniz. İşlem 1. Temp=SN DIG 1 , buradan Temp=%00000100 olacaktır. Onlar basamağını ayırarak almış olduk. İşlem 2. Temp=Temp<<4, buradan Temp=%01000000 şeklini alacaktır. Onlar basamağını olması gereken yere 4 bit kaydırdık. İşlem 3. RTC_SN=SN DIG 0 buradan RTC_SN=%00000101 , bir ler basamağını aldık. İşlem 4. RTC_SN=RTC_SN+Temp buradan RTC_SN=%01000101 şeklini alacaktır. Bu istediğimiz formattır. Dolayısıyla bu sayıyı direk entegreye yazabiliriz artık.
Şimdi Okuma işleminden sonra BCD formatından Desimal formata nasıl çevirme yapacağız onu görelim. Aynı örneği kullanırsak daha iyi anlarsınız her halde. Gerçek saniye değerimiz 45 iken bunu RTC ye %01000101 yani desimal olarak 69 değeri ile yazmış idik. O halde bu sefer RTC den okunan 69 değerini gerçek saniye değeri olan 45'e nasıl çevireceğimizi adımlar halinde görelim.
İşlem 1. Temp=RTC_SN & %01110000 Temp=%01000000 oldu. İşlem 2. Temp=Temp>>4 Temp=%00000100 oldu. İŞlem 3. SN=RTC_SN & %00001111 SN=%00000101 oldu İşlem 4. SN=(Temp*10)+SN SN=45 oldu
Görüldüğü gibi son derece kolay bir işlem. O halde yapmamız gerekenleri yeniden tekrarlayalım. RTC de saat ayarı yapıldıktan sonra bu ayarları RTC ye yazmadan önce onları BCD formatına çevirmemiz gerekiyor. RTC den zaman okuması yaptıktan sonra okunanları kullanmadan önce onları BCD formatından Desimal formata çevirmemiz gerekiyor.
Saat registerine bakacak olursak kayıt şeklinin aşağıdaki gibi olduğunu görürüz. Bit7 | Bit6 | Bit5 | Bit4 | Bit3 - Bit0 | 12/24 | 0 |10/A-P| Hr | Hr | Bit7 saatin 12 saat mi yoksa 24 saat formatına göremi tutulduğunu belirlemektedir. Bu bit 1 ise format 12 saat esasına göredir. Bu durumda 5 nolu bit saatin AM mi (sabah) yoksa PM mi (öğleden Sonra) olduğuna karar verir. BU bit 1 ise PM sıfır ise AM dir. Şayet Bit7 sıfır ise saat 24 saat formatına göre tutuluyor demektir ve 5 nolu bit bu sefer saat değerinin onlar basamağını verir. Onlar basmağı yalnıza 1 veya 2 olabilir. O nedenle bit5 High ise saat 20 ve üzeri sıfır ise 20 nin altında demek olur. Şimdi her iki formatta örnek yaparak konuyu inceleyelim. Saat formatımız 12 saat şeklinde olsun. Saat öğleden sonra 3:45 iken okumamız gereken saat değerine bir bakalım isterseniz. Okunacak değeri %1010 0011 şeklinde olacaktır. Ne anlama geliyor bakalım. Bit7=1 olduğuna göre formatımız 12 saat üzerinden çalışıyor demektir. Bit5=1 olduğundan zaman öğleden sonrasını (PM) gösteriyor demektir. Bit3-0= %0011 = 3 gösterdiğine göre saat=3 olduğunu gösteriyor demektir. Tabiiki okunan saniye değeride bize 45 değerini verecektir.
Şimdi aynı saati 24 saat formatında görelim. Okunacak saat değeri %0001 0101 şeklinde olmalıdır. Ne anlama gelior bakalım. Bit7=0 olduğundan saat formatı 24 saat esasına göredir. Bit5=0 olduğuna göre onlar basamağı onlar hanesi=2 değildir. Bit4=1 olduğundan saat onlar basamağı 1 dir. Bit3-0= arası ise bize 5 değerini verdiği için saat değeri 15 olarak bulunmuş olacaktır. Dikkat ederseniz 24 saat formatında Bit7-Bit4 arası bitlerin yalnızca ilk 2 tanesi yani %00xx x ile işaretlenmiş olanlar önem arzediyor. Saat 10 dan küçük ise Bu bitler %0000 şeklinde okunacak, saat 9 dan büyük ve 20 den küçük ise Bu bitler %0001 şeklinde yani bir olarak okunacak ve 19 dan büyük ise %0010 şeklinde yani 20 olarak okunacaktır. Diğer lerini izah etmeye gerek görmüyorum artık. Onlarda da benzer şekilde kullanılmaktadır.
Son olarak bir kaç tavsiyede bulunmak isterim. Birincisi her iki entegrede de harici pil bağlanarak saatin elektrik kesintilerden etkilenmemesi sağlanmıştır. DS 1302 de şebeke voltajı giriş bacağı 1 nolu pindir. Pil voltajı ise 8 nolu pinden girilir. Pil olarak 3V luk Lityum pillerin kullanılmasını tavsiye ederim. RTC hangi bacakta daya yüksek voltaj var ise beslemeyi oradan almaya çalışır. Şebeke beslemesi se 5V dolayında olur ise sistem sorunsuz çalışır. DS1307 de Şebeke voltaj girişi 8 nolu pindendir. Pil girişi ise 3 nolu pinden yapılır.
Mümkün olduğunca DS1307 kullanmaya çalışın. Önemli özellikleri var. Her şeyden önce bir SQW/OUT bacağı varki pek çok işe yarayabilir. Bazılarını açıklayayım. 1. Saatlerin genelde ileri gittiğinden yada geri kaldığından şikayet edilmektedir. Bu sorun genelde kristal bacaklarına bağlanacak 5-30 pf kondansatörle giderilebilmektedir. Ancak yaptığınız işlemin doğruluğunu ancak bu çıkış bacağını kullanarak anlayabilirsiniz. Bu bacak size osilatörden bölünerek elde edilen bazı frekans değerleri verebilir. Mesela , - 1 Hz - 4096 Hz - 8192 Hz - 32768 hz Şöyle bir bakarsanız bu çıkışları ne gibi işlerde kullanabileceğiniz kolaylıkla görebilirsiniz. Mesela çıkışı 32768 Hz olarak ayarlarsamki bu direk kristal frekansıdır, osilatörümün doğru çalışıp çalışmadığını bu sinyalin frekansını ölçerek anlayabilirim. Şayet değer 32768 den küçük ise krital bacakalrına 5-33 pf arası bir kondansatör bağlayarak doğru değeri yakalamaya çalışırım.
1Hz çıkışı ise saat projelerinde orta ledlerin yakılıp söndürülmesinde kullanabilirim. Bu çıkış ile direk ledleri sürerseniz her sn de bir ledleriniz yanıp sönecektir. Bu çıkışın nasıl ayarlanacağı konusuna da biraz değinelim isterseniz. DS1307 de toplam 8 adet register vardır. Bunlar sırası ile SN - Dak - Saat - Haftnın Günü - Ayın günü - Ay - Yıl - CTRL En sonda yer alan Kontrol (CTRL) registeri nin bitlerine bakacak olursak şu bilgileri tuttuğunu görürüz. Bit7=Out biti bu bit 1 ise SQW/OUT pini 1 dir. Bu bit=0 ise SQW/Out pini sıfırdır. Bir yerde frekans çıkış pininin lojşk seviyesini ayarlamaktadır. Bit6-Bit5=0 olup bir fonksiyonları yoktur. Bit4=SQWE bitidir. Bu bit=0 ise Osilatör çıkışı iptal , bu bit 1 ise osilatör çıkış aktiftir. Bit3-2= 0 olup bir fonksiyonları yoktur. Bit1-Bit2= RS1-RS0 bitleridir ve Çıkış bacağından alınacak frekansı bu bitler belirler. %00 ise 1 Hz %01 ise 4096 Hz %10 ise 8192 Hz %11 ise 32768 Hz dir.
Diyelimki çıkış bacağından 32768 hzlik bir çıkış almak istiyorsunuz. O halde CTRL=%10010011 şeklinde bir değeri kontrol registerine yazmak gerekir. Diyelimki 1 Hz lik çıkışalacaksınız CTRL=%10010000 şeklinde bir değer vermeniz yeterlidir.
Hepsi bu kadar. Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: mitec - 01 Mayıs 2012, 10:57:16
hocam başka bir konuda yine sormuş fakat cevap alamamıştım acaba ds 1307 de yıl biilgisini girmezsek 1307 otamatik olarak 0 yılından mı başlar şayet öyleyse 29 çeken şubat aylarında sanırım sorun oluşur ben yıl bilgigini displayde göstermek istemiyorum onun içinde ayar bölümüne yıl ayarı koymuyorum bu bana ne gibi bir sorun oluşturur yada ne yapmaluıyuım programın başında yıl bilgisini gireyim desem atıyorum 3 sene sonra elektrik kesildiğinde yıl yine 2012 olacak sizce ne yapmalıyım
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 01 Mayıs 2012, 12:12:41
Bu soruyu sorman bile hata bence. Yıl bilgisini girmez isen RTC yıla bağlı değerleri nasıl hesaplasın? Olabilirmi böyle bir şey. Olamaz elbette. Şubat ayında hangi yıl 28 çeker hangi yıl 29 çeker bulabilmesi için doğru yıl bilgisi girilmelidir. Yıl bilgisi 00 olarak girilirse 2000 yılını esas alır. 01 olarak girilirse 2001 o halde senin oraya 12 yazman gerekiyor. Böylece yıl ve ona bağlı ayların hesapları doğru şekilde yapılmış olacaktır.
"programın başında yıl bilgisini gireyim desem atıyorum 3 sene sonra elektrik kesildiğinde yıl yine 2012 olacak sizce ne yapmalıyım" 3 yıl sonra elektrik kesildiğinde yıl 2015 olacaktır neden 2012 olsun. Şayet pil kullanıyorsan elektrik kesilse bile doğru ayarlanmış saat ayarını unutmaz. Pil bağlamamış isen ne zaman elektrik kesilse saat hep 2000 yılından başlayacaktır.
Sonuç olarak SN-Dak-Saat - Ay- bilgisi gösteriyor isen sana Yıl bilgisi kesinlazım. Ama yalnızca saat bilgisi gösteriyor isen yıl-ay bilgilerini girmen gerekmez.
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: mitec - 01 Mayıs 2012, 13:51:48
anladım hocam teşekkürler
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: slayizm - 11 Mart 2013, 17:59:07
İyi günler
DS1302 kullanarak devre yapmaktayım ve bildiğiniz gibi bu entegre 3 kablo seri haberleşme kullanmaktadır. Benim sorum TRIS ayarları ile ilgili olacak. CLOCK ve CE pinlerini PICte çıkış olarak ayarlıyoruz ancak DATA hattını nasıl ayarlamam gerektiğini çözemedim hem okuma hem yazma yaptığı için. Yardımınız için şimdiden teşekkürler.
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: Mucit23 - 11 Mart 2013, 19:51:33
o pin yazma ve okuma sırasında giriş veya çıkış olarak ayarlanır. Çıkış veya giriş yapman farketmez ama sen yinede çıkış yap.
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 11 Mart 2013, 20:00:30
Mucit şunu demek istedi okuma ve yazma komutları ( basicde) o pini otomatik olrak ayarlarlar. Sen ilk tanımlamada çıkış yap gerisini komutlar halleder.
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: black - 29 Eylül 2014, 22:12:42
Faydalı bilgiler, teşekkürler.
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: MS_59 - 01 Aralık 2014, 15:51:22
hocam merhaba şimdi ds1307 ye saat ve tarih bilgilerini kayıt ettik tarih 01/12/14 ise bu entegre bu tarihin haftanın 2. günü olduğunu biliyor mu? yoksa bunu da ayarlamak mı lazım
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 01 Aralık 2014, 16:24:15
Tarihi girince sanırım biliyor ama DS1307 haftanın birinci günü olarak Pazar'ı kabul ediyor. Haftanın günü sıfır ise pazar demek oluyor. 1 ise Pazartesi ... şeklinde gidiyor. ben bunu beğenmediğimiçin haftanın günü olarak pazartesini sıfır kabul ediyorum ve na göre ayar veriyorum hep.
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: MS_59 - 01 Aralık 2014, 16:58:28
Alıntı yapılan: ete - 01 Aralık 2014, 16:24:15 Tarihi girince sanırım biliyor ama DS1307 haftanın birinci günü olarak Pazar'ı kabul ediyor. Haftanın günü sıfır ise pazar demek oluyor. 1 ise Pazartesi ... şeklinde gidiyor. ben bunu beğenmediğimiçin haftanın günü olarak pazartesini sıfır kabul ediyorum ve na göre ayar veriyorum hep.
tamam hocam deneyeceğim yalnız hocam haftanın günleri 1 ile 7 arasında değilmi 1 ise pazar, 2 ise pazartesi
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 01 Aralık 2014, 17:08:53
sıfır dediğime bakma 1 den başlıyorsa 1 pazar dır o zaman. Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: kurusaray - 27 Aralık 2014, 11:10:25
Hocam emeğinize sağlık güzel açıklamışsınız Ds1307. Peki bu öğleden önce ve öğleden sonra bitini 24 formatı seçtiğimizde
okuduğumuz saat değeri örneğin akşam 5 iken 17 olarakmı gelir. Yoksa biti sorgulayarak biz kendimizmi saat 5 ise ve
bit öğleden sonra ise 5'i 17 olarak yaz diye bir sorgumu yapmalıyız. Derleyici olarak CCS C kullanıyorum.
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 27 Aralık 2014, 11:14:48
24 saat üzeerinden çalışıyor ise 17 olarak gelir.
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: kurusaray - 27 Aralık 2014, 11:22:49
Teşekkür ederim sağolun
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: kurusaray - 28 Aralık 2014, 18:37:31
Arkadaşlar Ds1307 entegresi ile bir saat uygulaması yapıyorum. Fakat bir sorun var.
CCs C ile yazıyorum önce ekranda doğru değer gözüküyor 1sn az. sonra 25:85:07 değeri gözüküyor. Birer saniye
aralıklarla sürekli bir doğru değerler bir 25:85:07 değerleri gözüküyor sebep ne olabilir acaba.
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: BİDİL - 15 Şubat 2016, 23:00:49
Arkadaşlar merhaba;
DS1307 kullanıyorum ancak bugüne kadar 24 saat modunda kullandım bunu 12 saat moduna göre kullanmak için değişikliği ilgili satırda= SAAT=((HOUR>>4) & $03)*10+(HOUR & $0F) 'mı yapmam gerekli tam olarak anlayamadım. $03 değerinin karşılığı yanlış çevirmediysem %0011 0000 oluyor. 7.ve 8.bitleri=1 yani $0A yapınca 12 saat modunamı geçiyor?
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 15 Şubat 2016, 23:50:02
Neden böyle şeyleri data sheete bakarak bulmuyorsunuz anlamıyorum.
"Bit 6 of the hours register is defined as the 12- or 24-hour mode select bit. When high, the 12-hour mode is selected." Data sheet diyorki Saat registerinin 6 cı biti saatin 12 yada 24 saat modu seçme bitidir. Bu bit HIGH ise 12 saat modu seçilmiş olur"
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: enginkanat - 19 Haziran 2016, 13:12:59
merhaba, ds1307 de i2cwrite sda,scl,$d0,$00,[sn,dk,sa,hft,gn,ay,yil,temp] ile yazıp i2cread ile okuma yapıyorum. diğer adresleri nasıl kullanacağımı anlayamadım. mesela devreyi ilk çalıştırdığımda ch bitini nasıl okuyabilirim. bu bit fabrika ayarı 1 olarak geliyor demişsiniz. değeri okuyarak eğer 1 ise saat tarih ayar bölümüne dallandırmak istiyorum adresi nasıl okuyup yazacağımı anlamadım. birde 1 hz sinyal çıkışı alarak rb0 kesmesi ile saat bilgisini okumak istiyorum bu adresi nasıl programlayabilirim? yada devreye koyacağım bir button ile 12/24 ayarlarını değiştirmek istiyorum
if buton1=0 then i2cread sda,scl,$d0, ??????????? okunan değer 12 saat tipi ise i2cwrite sda,scl,$d0,??????????? 24 saat tipi yap
gibi ben bu adresleri nasıl kullanacağımı anlayamadım
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: ete - 19 Haziran 2016, 14:29:19
I2CREAD, Sda,Scl,$d0,$00,[sn] komut satırı ile SN registerini okuyup; IF SN.7=1 then SAT_AYAR komut satırı ile 7. biti test edip 1 ise SAAT_AYAR etiketine yollayabilirsin programı.
7 nolu adreste yer alan Control Registeri, kare dalga çıkışını kontrıl etmektedir. Bu registere; I2CRead Sda, Scl, $d0, $07,[TEMP] komut satırı ile ulaşıp ardından bir kereliğine; TEMP=%00010000 şeklinde kare dalga çıkışını aktive edip bunu I2CWRITE , Sda, Scl, $D0, $07,[TEMP] şeklinde geri yerine kayıt etmek gerekiyor.
Saat registerinin 6. biti saatin 24 yada 12 saat formatında çalışacağını belirliyor. Bu bit HIGH ise saat 12 saat modunda LOW ise 24 saat modunda çalışır. Bu durmda bir buton ile bunu değiştirmek istersen, Butona basılınca bu biti Toggle yapmak gerekir. Yani,
IF BUTON=0 THEN 'butona basılmış ise I2CREAD , SDA, SCL, $D0, $02,[SAAT] TOGGLE SAAT.6 I2CWRITE ,SDA, SCL,$D0,$02,[SAAT] ENDIF
Şeklinde okunup değiştirilip geri yerine yazılmalıdır.
Ete
Başlık: Ynt: RTC (Real Time Clock) Yani Gerçek Zaman Saati Kullanımı
Gönderen: enginkanat - 19 Haziran 2016, 14:43:05