DS1302 Rtc ilk yapılandırma

Başlatan smartcard, 22 Aralık 2011, 12:03:30

smartcard

Merhaba arkadaşlar DS1302 kullanabilmek için rtc_set_datetime(22,06,11,2,12,00) şeklinde ayar yapmak gerekiyor. Ben her seferinde saat ayarlamak zorunda kalıyorum.DS1302 kontrol edip DS'te tarih ve saat bilgisi var ise rtc_set_datetime(22,06,11,2,12,00); bu komutu uygulamasın. Sabahtan beri uğraşıyorum çözemedim.

Kabil ATICI

#1
İlk ayarlama konusunda ds1307'de uğraştım. Bu işe basit bir şekilde bir jumper ile çözdüm.  Devre ilk besleme geldiğinde saat değerlerini okumaya başlamadan  jumper bacağına bakıyor eğer bacakta jumper varsa ilk değerleri  saat çipine yazıyor.  Sonra saatin enerjisini kesiyor ve jumper çıkarıp devreyi çalıştırıyoruz ve o şekilrde kullanıyoruz. Eğer jumper takılı değlse doğrudan saat değerlerini  okumaya başlıyor. Kullandığın ayar butonlara güveniyorsan bir veya iki butona basılma durumuna göre de yapılabilir
ambar7

smartcard

Cevabın için teşekkürler fakat benim devrem adaptör ile çalışacak yapmak istediğim kablosuz oda termostatı oda değiştirildiği zaman her seferinde ayar yapmak zorunda kalacağım. Bana daha başka bir yol lazım bu devreyi annem ve babam kullanacak.

Erol YILMAZ

program başlangıcı:

oku_ds1302();

if(tarih<2010)  ayarla_ds1302();

Sdttn

RTC'den ilk tarih bilgisini okutun sonra eproma kaydedin. Sonra her açılışta epromdaki değer ile karşılaştırın.

Kabil ATICI

DS1302 entegresinin Vcc1 bacağına şarjlı pil veya süper kondansatör takılarak kullanılabiliyor.  Bu durumda uzunca bir süre için hafızasını koruduğa gibi zaman ve tarih fonksiyonları çalışmaya devam ediyor. Bu durumda güç kesildiğinde sürekli ayar yapılması gerekmez.
ambar7

smartcard

Proteus üzerinde deniyorum Ds1302'nin özelliklerinden İnitalize from Pc Clock işaretini kaldırdığım zaman lcd'de 00:00 başka bir şey görünmüyor.
Byte ReadRTC()
{
rtc_get_date(day,mth,year,dow);
delay_ms(5);
rtc_get_time(hr,min,sec);
[color=red]if (year<2010) rtc_set_datetime(22,06,11,2,12,00);[/color]
Return (day,mth,year,dow,hr,min,sec);
}



Kabil ATICI

Protesta simülasyonda bazı öğeler göz ardı edilmiş. Sanırım saat ve tarih gösterimi sistem saatini kullanmakda bunlardan biri. (Herşeyin tam simülasyonu yapılsaydı baya ciddi bir iş yükü olabilirdi.)

Gerçekten devreyi yaptığın zaman, yapman gereken (gerçi biliyorsundur) saniye baytının 7. bitini (CH) sıfırlamak. Bu bit olursa ds1302 saat ve tarih sistem çalışmayacaktır.

Ve WP baytından sonra gelen bayt Vcc1 bacağına bağlanan  aletin sarj akımı ile ilgili ayarları içerir.

kolay gelsin.
ambar7

smartcard

CH bitini kontrol ettim.CCS C kendi driveri bunu yapıyor.  Trickle Şarj ile ilgili kısmı bilmiyordum öğrendiğim iyi oldu. Bu projede bu özelliği kullanmayacağım.Benim  tereddüt ettiğim konu bunu yapmayı bitirdikten sonra her seferinde saat ayarlamak zorunda kalmak daha eklemediğim özellik RTC pilini picin adcsi ile okumak

Kabil ATICI

Umarım ds1302'nin vcc1 ucuna normal pil bağlamayı düşünmüyorsundur. Bu entegre şarjlı pil veya süper kondansatörlerde kullanılmak üzere düşünülmüş. Gerçi seri bir diyot ile kullanılabiliyor.

illede pil kullanacaksan 3 voltluk bilgisayar pili kullanan ds1307 kullanabilirsin. Kendim denmedim ama pili 8-10 yıl gidiyor diyorlar.

kolay gelsin
ambar7

smartcard

Backup için bios pili kullanmaı düşünüyorum. Yaptığım projeyi burada görebilirsin.Kod ve İsis simulasyon kodlarını Mediafire upload ettim,istersen
inceleyebilirsin.
https://www.picproje.org/index.php/topic,36715.0.html

eraygil

ds1302  bios pili ile 10 yıl gibi uzun bir süre çalışır.


sorunun için programın sonsuz döngüye girmeden


ayar=read_eeprom(0);
while(ayar==0)
{
rtc_set_datetime(22,06,11,2,12,00) ;
ayar=ayar+1;
write_eeprom(0,ayar);
}

nomal program akışında da ayar değişkeninin içeriğini sıfırlayacak bir şart yapabilir ve eeproma kayıt yapabilirsin  ama en mantıklısı 3 tane buton tak ve bu butonlarla saat dakika tarih ayarlarını yapabilirsin.  eğer devrende pil varsa zaten bu ayarı bir kez yaptınmı bir daha pek kullanmana gerek kalmayacaktır.  ama devrende mutlakaa pil kullan .




smartcard