DS1302 Olan bir devreye DS18B20 Bağlandıgında Saat duruyor ?

Başlatan tyfrydn, 10 Kasım 2015, 13:35:18

tyfrydn

Merhaba,

Kendi Hazıradıgım bir RTC devresinde lcdiye fazladan sıcaklık değerinide eklemek istiyorum ancak ds18b20ye ait kodları rtc devresine entegre ettiğimde  lcdde normalde calışan saat bilgisi  çalışmıyor yani saniye saymıyor veya  cok gec sayıyo gibi  ayrıca saati ayarlama butonlarına basmama rağmen tepkiyi  gec veriyor sanki ds18b20  deki temp=ds1820_read(); komutu  devreyi mesgul ediyorda  ondan mı saniye saymıyor vede tuşlara bastığımı yakalayamıyor olabilir yada başka bir neden? bu arada rtc ve sıcaklık sensör devreleri ayrı ayrı entegrelere kurduğumda çalışıyor problem ikisinin komutlarını birleştirdiğimde . ilginiz için teşekkür ederim.

#include <16F877a.h>
#include <math.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#include <lcd.c>
#include "DS1302.C"
#include <ds18b20.c>
int8 saniye=1,dakika=1,saat=1,gun=1,ay=1,yil=1,haftanin_gunu=1,durum=0,mesai=1,x=0,y=0;
char saatn=0,saatf=0,dakikan=0,dakikaf=0,mesain=0,mesaif=0;
int32 tam;
void lcd()
{
...
}
void haftagunu()
{
...
}
void mesa()
{ 
...
}
void ayar()
{
...
}
void alarm()
{
...
}

void sicaklik()
{
      temp=ds1820_read();
      tam=ceil(temp);
      putc(tam);
      delay_ms(1000);
}
void main()
{
   float temp;
   rtc_set_datetime(20,10,15,3,19,07);
   lcd_init();
   rtc_init();
   delay_ms(10);
   
   
while(1)
{
      lcd();
      ayar();
      haftagunu();
      alarm();
      mesa();
      sicaklik();
      
      if(durum==0)
      {
           rtc_get_time(saat,dakika,saniye);
           rtc_get_date(gun,ay,yil,haftanin_gunu);
           delay_ms(100);

if(tam < 25)
      {    

           if(saatn==saat && dakikan==dakika && mesain==mesai)
              {
              output_high(PIN_C0);
              y=1;
              }
     
           if(saatf==saat && dakikaf==dakika && mesaif==mesai)
              {
              output_low(PIN_C0);
              y=0;
              }
       }
}
}

boreas

DS18b20'nin hazır olması için geçen süre fazla geliyor olabilir.
1. Standart kod yerine kendi komutlarını kullanmanı öneririm
2. Her saniyede değişecek bir ortamın yoksa sıcaklığı 5 sn. bir al derim

RaMu

Forumda beklemesiz ds18b20 kütüphanesi diye aratın, örnek var.
DS18B20 den (çözünürlüğe bağlı olarak)
okuma işlemi 750ms veya 1 saniye civarında sürüyor,
hazır kütüphanede bu esnada mcu saf saf
ds18b20 nin bu süreyi tamamlamasını bekliyor.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html