DS1302 saniye bozukluğu

Başlatan baran123, 21 Aralık 2013, 19:46:19

baran123

merhaba arkadaşlar
ds1302 ile bir devre yaptım bir problem yok çalışıyor ama saniyede bazen 2 şer artma oluyor :o bunu nedeni nedir ?

Kolay Gelsin 

elektronik

saat doğru ama saniye ikişer atıyorsa okuma süresi 1 sn geçiyordur

MrDarK

Yazılımsal bir sorundur ; yazdığın kodu burada paylaşırsan yorum gelecektir.
Picproje Eğitim Gönüllüleri ~ MrDarK

selimkoc

okuma sıklığını arttır mesela yarımışar saniye aralıklarla veya daha sık oku.

baran123

if(input(button4)==1)
      {
         float sicaklik_degeri;
         led10 = 0;
         lcd_init();
         rtc_init();
       
         while(TRUE)
         {  
            if(input(button6)==1)
            {
               rtc_set_datetime(21,12,13,6,17,35);
            }
            
            sicaklik_degeri=ds1820_read();
            rtc_get_time(saat,dakika,saniye);
            rtc_get_date(gun,ay,yil,haftanin_gunu);
            printf(lcd_putc,"\f%02d:%02d:%02d  ",saat,dakika,saniye);

            switch(haftanin_gunu)
            {
                case 1: printf(lcd_putc,"P.TESI"); break;
                case 2: printf(lcd_putc,"SALI"); break;
                case 3: printf(lcd_putc,"CARSA."); break;
                case 4: printf(lcd_putc,"PERSE."); break;
                case 5: printf(lcd_putc,"CUMA"); break;
                case 6: printf(lcd_putc,"C.TESI"); break;
                case 7: printf(lcd_putc,"PAZAR"); break;
            }            
            printf(lcd_putc,"\n%02d:%02d:%02d  %0.0F%cC",gun,ay,yil,sicaklik_degeri,223);
            delay_ms(300);
         }    
      }

MrDarK

lcd_init ve rtc_init fonksiyonların zaman kaybettiriyor sana , programın en başında bir kere yap onu tekrar tekrar yapmana lüzum yok. O yüzden gecikme yaşıyorsun.
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

dediğnizi yaptım ama şimdi çok garipleşti saniye bir artıyor sonra 2 artıyor 1,2,1,2 artıyor kodlar son olarak söyle
if(input(button4)==1)
      {
         led10 = 0;
         float sicaklik_degeri;
         
         while(TRUE)
         {  
            if(input(button6)==1)
            {
               rtc_set_datetime(21,12,13,6,17,35);
            }
            
            sicaklik_degeri=ds1820_read();
            rtc_get_time(saat,dakika,saniye);
            rtc_get_date(gun,ay,yil,haftanin_gunu);
            printf(lcd_putc,"\f%02d:%02d:%02d  ",saat,dakika,saniye);

            switch(haftanin_gunu)
            {
                case 1: printf(lcd_putc,"P.TESI"); break;
                case 2: printf(lcd_putc,"SALI"); break;
                case 3: printf(lcd_putc,"CARSA."); break;
                case 4: printf(lcd_putc,"PERSE."); break;
                case 5: printf(lcd_putc,"CUMA"); break;
                case 6: printf(lcd_putc,"C.TESI"); break;
                case 7: printf(lcd_putc,"PAZAR"); break;
            }            
            printf(lcd_putc,"\n%02d:%02d:%02d  %0.0F%cC",gun,ay,yil,sicaklik_degeri,223);
            delay_ms(300);
         }    
      }

MrDarK

En sondaki delayı 100 veya daha aşağı yap bakalım :) yada hiç gecikme koyma onunla oyna biraz
Picproje Eğitim Gönüllüleri ~ MrDarK

baran123

yaptım 2 saniye olayı düzeldi ama şimdide saniye hızlandı :D
delay_ms(300); koymadım

Kabil ATICI

Devreni delikli kart bile olsa sabit bir zemin üzerinde oturt. Breadbord özellikle sabitlenmesi gereken sistemler için sorun oluşturabilir. Çıkmış bir kablo, yanlış takılmış bir kablo sistemin için olumsuz sonuçlar doğurabilir.
ambar7

baran123

Dediğiniz gibi ayarlamaları kontrolleri yaptım ama hala bir sonuç alamadım şuan devremdeki saat 5 dk ileri ve bu süre artıyor nedeni başka ne olabilir

elektronik


baran123

sağlam ne garip bir şey bu ya of hala çözemedim  :'(  :'(  :'(

gogge

ds1820 one wire protokolündeki gecikmelerden kaynaklanıyor olabilir. Denemek için sıcaklık okuma ile ilgili kodları projen den çıkar. Sıcaklık okuma işini kesme ile yapmaya çalış. Kolay gelsin.

baran123

Sorunu hallettim arkadaşlar
delay_ms(150);
gecikme verince düzeldi herkese çok teşekkür ederim.

Kolay Gelsin İyi Çalışmalar