ds1302 yı board da nasıl calıstrabılırım ..

Başlatan ufuk327, 11 Mayıs 2014, 01:02:34

ufuk327

ds1302 ıle gercek zaman projemde simülasyonda calısmasına ragmen lcd ye yazarken saat calısmıyor bu neden olabılr yardımlarınızı beklıyorum .. tesekkurler ..

OG

Alıntı Yap
    Bir başlık açmadan önce aynı konuda yapılmış yazışmaları arayıp, inceleyiniz.
    Acilllll, Yardımmm gibi içeriği belli olmayan, türkçe kurallarına uymayan başlık kullanmayınız.
    Konularınızın başlığı açıklayıcı ve konu ile ilgili olmalı kurallara uymayan konular silinir.
    Problemi net anlatınız, biz sizin yanınızda değiliz, görmüyoruz, yazınızı bunu düşünerek yazınız .
    Probleme ait kod veya şema varsa ekleyiniz, bu cevapların artmasına ve sorunun çözülmesine yardımcı olur.
    Bu forum ödev yapma sitesi değildir, mümkünse ödevlerinizi kendiniz yapınız, biz ancak size yardım edebiliriz. Kendinizi yeterince tanıtmadığınız ve yeterince detay vermediğiniz sürece ödev istekleriniz yayınlanmayacaktır.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Recep METE

Alıntı yapılan: ufuk327 - 11 Mayıs 2014, 01:02:34
ds1302 ıle gercek zaman projemde simülasyonda calısmasına ragmen lcd ye yazarken saat calısmıyor bu neden olabılr yardımlarınızı beklıyorum .. tesekkurler ..

Arkadaşım kesinlikle bağlantıların hatalıdır.Bu çalışmanla ilgili resimleri yüklersen nerelerde bağlantı hatası yaptığın hakkında yardımcı olabilirim.Bizde bu yollardan geçtik.Az mı sıkıntılar çekmedik.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

ufuk327



bu baglantım 2 le 3 arası kristal osılatör 1.bacak 5v.... 4. gnd 8. pil  5 6 7 de pic baglantısı

sigmoid

ds1302 ye bağladığın kristali kontrol ettin mi? Bu saat kristalleri arada bozuk çıkıyor. Benzer bir projede kristali değiştirerek problemimi çözmüştüm.

Kabil ATICI

Entegrelerin Vcc ve GND uçları arasına 100nF koy.
Bu tür kurulumlarda en istenmeye durum kablonun birinin temas etmemesi veya yandaki sıra ile kısadevre olmasıdır. Bunu dikkatle incelemen gerek.

Tamam resmini koymuşsun bu iyi, devlet sırrı değilse programını ve şemasınıda eklersen daha fazla yorum gelir.

Bu arada DS1302 bozuk da olabilir.

Programı istiyor olmamızın sebebi;
DS1302'nin saniye registerinde 7. registerinde CH biti vardır. Saatin çalışması için bunun "0" olması gerekir.

Ayrıca DS1302 registerlerine bir şey yazılabilmesi için WP  yazma korumasının "0" olması gerekir.

İsis'de çalışıyor olması gerçek hayatta çalışacağı anlamını taşımaz, çünkü isis birçok olayı göz önüne almayabiliyor.  (yukarıda verdiğim örnek türünden)
ambar7

mehmet

Uzun deneme bordlarındaki besleme hatları board ortasında
birleşik olmayabilir. Bir uçtan bir uca birleşik olduğunu
kontrol ediniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ufuk327

#include <16F877A.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES WRT_50%                  //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)

#define use_portb_lcd TRUE
#define LCD_TYPE 2
#include <lcd420.c>
#include <DS1302.c>  // DS1302.c dosyası programa ekleniyor

byte saniye,dakika,saat,gun,ay,yil,haftanin_gunu; // byte türünde değişkenler tanımlanıyor

void main()
{
   unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
   float voltaj;            // ondalıklı tipte voltaj isminde değişken tanıtılıyor

   
   lcd_init();

   rtc_init();  // DS1302 başlangıç ayarları yapılıyor

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   rtc_set_datetime(17,01,14,15,22,52); // Tarih ve Saat ayarları yapılıyor
   
   lcd_gotoxy(1,2);
   lcd_putc("     UFUK SAHIN     ");
   lcd_gotoxy(1,3);
   lcd_putc("pH METRE UYGULAMASI");
   delay_ms(2000);
   lcd_putc("\f");
   
   while(TRUE)
   {

      rtc_get_time(saat,dakika,saniye);       // DS1302'den saat,dakika,saniye bilgileri alınıyor
      rtc_get_date(gun,ay,yil,haftanin_gunu); // DS1302'den gün,ay,yil ve günün isim bilgisi alınıyor
      lcd_gotoxy(1,1);
      printf(lcd_putc,"T:%02d/%02d/20%02d ",gun,ay,yil); //LCD'ye gün,ay,yıl bilgileri yazdırılıyor

      switch(haftanin_gunu)  // DS1302'den sayısal olarak alınan haftanın günü bilgisine
      {                      // metin olarak karşılık atanıyor
         case 1: printf(lcd_putc,"PAZ"); break; // Eğer "1" ise LCD'ye PAZ yaz
         case 2: printf(lcd_putc,"PZT"); break; // Eğer "2" ise LCD'ye PZT yaz
         case 3: printf(lcd_putc,"SAL"); break; // Eğer "3" ise LCD'ye SAL yaz
         case 4: printf(lcd_putc,"CRS"); break; // Eğer "4" ise LCD'ye CRS yaz
         case 5: printf(lcd_putc,"PER"); break; // Eğer "5" ise LCD'ye PER yaz
         case 6: printf(lcd_putc,"CUM"); break; // Eğer "6" ise LCD'ye CUM yaz
         case 7: printf(lcd_putc,"CTS"); break; // Eğer "7" ise LCD'ye CTS yaz
      }
      lcd_gotoxy(1,2);
      printf(lcd_putc,"Saat:%02d:%02d:%02d",saat,dakika,saniye); // LCD'ye saat,dakika ve saniye değerlerini yaz
      //delay_ms(1000); // 1 sn gecikme veriliyor
     
     
      set_adc_channel(0);   // RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
      delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
      bilgi=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor

      voltaj=bilgi*0.013685;   // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor
     
      lcd_gotoxy(1,3);
      printf(lcd_putc,"DIJITAL=%lu         ",bilgi);
      lcd_gotoxy(1,4);
      printf(lcd_putc,"PH=%f               ",voltaj);
     
     
   }
}
bu programın tamamı programda bır sıkıntı oldugunu dusunmuyorum ama yınede kontrol edersenız sevınırım .. birde entegreyı degıstırdım ama yıne aynı calısmadı.. ve uzun sure enerjılı kaldıgında entegrede ısınma meydana gelıyor..

vitruvius

Portların input ve output yönlendirme kodlarını ekleyip dener misin? Özellikle input önemli olabilir.

ufuk327

Alıntı yapılan: vitruvius - 11 Mayıs 2014, 12:50:30
Portların input ve output yönlendirme kodlarını ekleyip dener misin? Özellikle input önemli olabilir.
input yönlendırme kodu derken tam cıkaramadım da bıraz daha acarmısınız ?

Kabil ATICI

DS1302 kütüphanesinde bacak bağlantılarının sizin yaptığınız bağlantı ile uygun olduğunu kontrol ediniz...
ambar7

vitruvius

Alıntı yapılan: ufuk327 - 11 Mayıs 2014, 12:56:57
input yönlendırme kodu derken tam cıkaramadım da bıraz daha acarmısınız ?

Misal C portunun tamamını, A portunun da kullandığınınz adc pinini input yapmak için:

.
.
.
#use fast_io(a) // Port yönlendirme A portu için geçerli
#use fast_io(c) // Port yönlendirme C portu için geçerli
.
.
.
void main ()
{
.
.
.
set_tris_c(0xFF); // Tüm pinler giriş olarak yönlendirildi
set_tris_a(0x01); // RA0 giriş olarak yönlendirildi
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0); // RA0/AN0 girişi analog
.
.
.
}

ufuk327

Alıntı yapılan: vitruvius - 11 Mayıs 2014, 13:12:06
Misal C portunun tamamını, A portunun da kullandığınınz adc pinini input yapmak için:

.
.
.
#use fast_io(a) // Port yönlendirme A portu için geçerli
#use fast_io(c) // Port yönlendirme C portu için geçerli
.
.
.
void main ()
{
.
.
.
set_tris_c(0xFF); // Tüm pinler giriş olarak yönlendirildi
set_tris_a(0x01); // RA0 giriş olarak yönlendirildi
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0); // RA0/AN0 girişi analog
.
.
.
}

bunu da en kısa zamanda deneyecegım ama su var bır kere calıstırdım daha sonra bırdaha olmadı yazılımda sıkıntı olsa yıne calısırmıydı..

ufuk327

Alıntı yapılan: ambar7 - 11 Mayıs 2014, 13:01:06
DS1302 kütüphanesinde bacak bağlantılarının sizin yaptığınız bağlantı ile uygun olduğunu kontrol ediniz...
aynısını yaptım 4 5 6 data 1.pin  5 volt 2  3 arası krıstal 4 gnd 8 de pıl yanlıs vamı ?

Kabil ATICI

programdaki DS1302.c programındaki bacak bağlantıları ile (bağlı olduğu portlar ile) işlemcinin şu anda fiziksel olarak bağlı bacak bağlantılarını karşılaştırmanızı öneririm.

Yani başka türlü söylersek,
DS1302    İşlemcideki bacak          DS1302.c 'e tanımlanan bacak
5 -CE                   ?                               
6 -I/O
7 -SCLK

işlemcideki bacak ile DS1302'de tanımlanan bacak aynı olması gerekir.
ambar7