Dht22 pic ile haberleşme sorunu

Başlatan alexsi, 25 Mayıs 2015, 18:30:43

alexsi

Selam arkadaşlar,
Bir sorunum var yardım edermisiniz?
Pic16f877 işlemci kullanıyorum.  ccs c kullanıyorum. 4 Mhz harici kristal ile çalışıyor. DHT22 data pini PortB RB0 pinine 10k pull up ile bağlı. Ancak haberleştirme sorunu yaşıyorum.
Kodum aşağıdaki gibidir.
//DHT22 kutuphanesi

#ifndef dht22
   #define dht22 PIN_B0
#endif

char dht_dat[10];
void dht_init()
{
    delay_ms (1);
    OUTPUT_HIGH (dht22);
}
byte leer_dht_dat()
{
    byte i = 0;
    byte result = 0;
    for (i = 0; i < 8; i++)
    {
        while (input (dht22) == 0);
        delay_us (30);
        if (input (dht22) == 1)
        {
            result |= (1 << (7 - i) );
        }
        while (input (dht22) == 1);
    }
    return result;
}
byte read_dht()

{
    byte GlobalErr = 0;
    byte dht_in;
    byte i;
    dht_init();
    OUTPUT_LOW (dht22);
    delay_ms (18);
    OUTPUT_HIGH (dht22);
    delay_us (30);
    dht_in = input (dht22);
    if (dht_in)
    {
        GlobalErr = 1;
        return;
    }

    delay_us (80);
    dht_in = input (dht22);

    if (!dht_in)
    {
        GlobalErr = 2;
        return;
    }

    delay_us (80);

    for (i = 0; i < 5; i++)
    {
        dht_dat[i] = leer_dht_dat();
    }

    OUTPUT_HIGH (dht22);
     return 0;
}
//////////////////////////
////////main.c
////////////////////////
void main()
{
   setup_psp(PSP_DISABLED);        
//!   setup_timer_2(T2_DISABLED,0,1);           
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);   

   
   // ADC Ayarları

   setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
   setup_adc(ADC_OFF); // ADC birimi devre dışı

   lcd_init();
   delay_ms(100);

   dht_init();
   delay_ms(100);
   set_tris_b(0x01);
   }
   while(TRUE)
   {
      read_dht();
         delay_ms(100);
      lcd_gotoxy(1,1);
      printf(lcd_putc,"HUMI RH :%d.%d %%  ",dht_dat[0],dht_dat[1]);
      lcd_gotoxy(1,2);
      printf(lcd_putc,"TEMP :%d.%d %cC  ",dht_dat[2],dht_dat[3],223);
      delay_ms(2000);
   }
}
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?

mc_307

Dht11 de delayus degerinde sıkıntı okuyordu. Onu 90 gibi yaptığımız da sensör işleme baslamistı. Protonda böyle idi. Bu okuma suresi sanırım, onun suresiyle oynamayı deneyin...

alexsi

mc_307 arkadas,
Alıntı YapDht11 de delayus degerinde sıkıntı okuyordu. Onu 90 gibi yaptığımız da sensör işleme baslamistı. Protonda böyle idi. Bu okuma suresi sanırım, onun suresiyle oynamayı deneyin...
demişsin ama anlamadım. Nerede ki deger 90 yapılmalı ? Kastetiğin yeri anlamadım?  Dht11 ile Dht22 aynı haberleşmeyi mi kullanıyor ?
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?