Ds1302 saat duruyor

safakgunay

Üye
Katılım
27 Şub 2007
Mesajlar
18
Puanları
1
Yaş
39
Arkadaslar merhaba arduino nano ve ds1302 saat modulu kullanarak role karti kontrol etmeye çalışıyorum.
Millis fonkiyonu kullanir gib rtc saniyesini kontrol ederek saniyede bir calisan sayicilar vs. var. Ayni zamamda rtcnin calistigini kontrol etmek için millis ile Serial.print ile pcden kontrol ediyorum.
Rtc zamansiz duruyor arduinoya birkac defa reset attiktan sonra calismaya basliyor ama saat dondugu sure kadar geriden kaliyor. 3 tane ds1302 denedim ayni sorun tekrarlaniyor.
Benzer sorun yasayan var mi cozum icin ne onerirsiniz. Kristal duzgun calismiyor olabilir mi rtc saat ilerlemiyor ve seri iletisim kurmuyor.
 
pil voltajına dikkat edin.
 
hocam cr2032 ile besleyip sadece gnd baglantısıyula denedim pil+3,3v ile denedim pil+5v ile denedim sonuc aynı.
kristal kalitesiz oldugundan olabilirmi acaba kristal calısmazsa seri iletisimde durur mu.
kristal çalışmazsa zaman durur pil voltajı yoksa durur. besleme stabil değilse yine sorun olur. ds1302 kullanmadım. ds1307 kullandım.
 
Acaba çok sık mı saati okuyorsunuz da RTC krize giriyor? Çok özel değilse en azından kodun okuma kısmını paylaşırsanız başka öneriler de çıkabilir.;)
 
Acaba çok sık mı saati okuyorsunuz da RTC krize giriyor? Çok özel değilse en azından kodun okuma kısmını paylaşırsanız başka öneriler de çıkabilir.;)
void loop() { RTC.updateTime(); if (saniye == (RTC.seconds)) { saniye++; if (saniye == 60) { saniye = 0; } //SANİYELİK RUTİN fann(); atomizerrutin();
evet siz soyleyince fark ettim
kodlar boyle devam ediyor loop dongusunun basında birkere okunuyor sadece ama hiç delay() kullanmaıgımdan cok sık okumaya calışmışım.
millis fonksiyonuyla 1 saniyelik 10 dongu sonuda okutup tekrar deneyecegim.
cevabınız için teşekkurler..
 
Kod:
void loop()  {
  yeniZaman = millis();
  if (yeniZaman - eskiZaman >= 1000) {
    saniye++;
    eskiZaman = yeniZaman;
    if (saniye == 60) {
      RTC.updateTime();
      saniye = 0;
    }
    if ((saniye % 6) == 0) {
      RTC.updateTime();
    }
    fann();
    atomizerrutin();
    isik();
  }
}
arkadaşlar kodu böyle düzenledim RTCyi setup kısmında okuyup saniyeyi aldıktan sonra saniye değişkenini 6'ya kalansız bölününce tekrar okutuyorum 6saniye aralıkla okumuş oluyorum.
şimdide arduino nano donuyor bazen 20dakika bazen 1 saat sonra,
kodun geri kalanında gongu kullanılmadı sadece if else ile belirlenen değerlerden geri sayılıyor,
son çare olarak arduinoyu dijital pinlerden birini kullanarak belirli aralıklarla resetlemeyi düşünüyorum.
sizce sorun ne olabilir.
pc usbden ve 5v şarj aletinden besledim durum değişmedi.
 
RTC olarak hangi kitaplığı ekledin fonksiyonlarına bi bakmam lazım. Ayrıca neden sürekli okuma gereği duyuyorsun ilk başta update ettikten sonra kitaplık saniye dakika gibi değerleri millis fonksiyonuna göre kendiliğinden update etmeli. Yani bir kere update edip elektrik kesilene kadar o değerleri sayarak sana saati göstermeli. Update etmeden saniye değerlerini göstermeyi dene eğer artarak devam ediyorsa update kullanmana gerek yok. Eğer artmıyorsa kendin ufak bi kodla ilk başta aldığın saniye değerlerini artırabilirsin.
 

Forum istatistikleri

Konular
128,198
Mesajlar
915,763
Kullanıcılar
449,978
Son üye
food_eng_1952

Yeni konular

Geri
Üst