*Problem mit DS1820*

Gast #116785
Lesenswert?

Ich will mit dem 90S8535 den DS1820 Temp-Sensor auslesen bzw.
ansprechen. Kann mir jemeand helfen? Ich habe mal den C-Code
hier reingestellt. Da tut sich nichts bei mir.
(Compiler CodeVision AVR)

unsigned char ow_reset(void)
{
 unsigned char presence;
 DDRD.7 = 1;
 PORTD.7 = 0;
 delay_us(29);
 PORTD.7 = 1;
 delay_us(3);
 DDRD.7 = 0;
 presence = PIND.7;
 delay_us(25);
 return presence;
}

unsigned char read_bit(void)
{
 unsigned char i;
 DDRD.7 = 1;
 PORTD.7 = 0;
 PORTD.7 = 1;
 for(i=0;i<3;i++);
 DDRD.7 = 0;
 return PIND.7;
}

unsigned char read_byte(void)
{
 unsigned char i;
 unsigned value = 0;
 for(i=0;i<8;i++)
  {
   if(read_bit()) value |=0x01 << i;
   delay_us(6);
  }
 return value;
}
Gast #116786
Lesenswert?

Wieviel ist "nichts"?

Was sagt das "presence" Flag von Deinem Reset? Schon das nichts? Wie
sieht der Bus im Oszi aus (auch "nichts"?). Bist Du sicher, daß die
delay_us() die passende Länge erzeugt (was soll das eigentlich für ein
jecker Umrechnungsfaktor sein?).
Gast #116792
Lesenswert?

Hallo,
ich bastle auch gerade mit dem DS18s20. Allerdings verwende ich
AVR-GCC.
So schlecht sieht dieser Code von dir nicht aus. Beim read_bit würde
ich  Verzögerungen einbauen, es könnte sonst zu schnell gehen.
Gruß Elektrikser

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren