Forum: Mikrocontroller und Digitale Elektronik DS18B20 1-Wire Read Zeit tRDV


von Matthias (Gast)


Lesenswert?

Ich bin gerade dabei die ensprechenden Routinen (C) zu testen. Im 
wesentliche klappt es. Nicht ganz verstanden habe ich den "1-Wire Read 
Zero Time Slot", die Zeit tRDV, welche im Datenblatt mit max. 15us 
angegeben ist. Heist das, dass ich nach 15us erst den korrekten Zustand 
einlesen (Daten gültig) darf oder es binnen max. 15us bereits gemacht 
haben muss?
http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf

Mein Testprogramm kann ich in weiten Grenzen variieren, es wird richtig 
L oder H eingelesen. Ich muss es aber für die Serienfertigung gut 
reproduzierbar machen.
1
// ********************************************************************
2
// 1 Wire Bus
3
// Read Bit Funktion
4
// Rückgabe: 0/1 Bit
5
// ********************************************************************
6
bit w1_read_bit(void) {
7
bit datenbit;
8
  W1_BUS = 0; // 1-Wire Daten-Pin P3_4
9
  delay_us(6);  // ca. 25us (hier größer als tRDV ???)
10
  W1_BUS = 1;
11
  delay_us2();  // ca. 6us
12
  datenbit = W1_BUS; // 
13
  delay_us(30); // ca. 75us
14
  return datenbit;
15
}

von Wer ist der Troll (Gast)


Lesenswert?

"oder es binnen max. 15us bereits gemacht haben muss"

Geht aus Fig. 18 eindeutig hervor.

von Peter D. (peda)


Lesenswert?

Du mußt innerhalb von 15µs lesen ab dem 0 setzen, d.h. Dein obiges 
Timing stimmt überhaupt nirgends.

Richtig:
0-Impuls für 1 ... 2µs
Lesen nach weiteren 2 ... 12µs
1-Impuls für >=60µs

Was sind denn das für komische Kommentare hinter den Delays?
Kannst Du die Delays nicht vom Präprozessor richtig berechnen lassen?


Peter

von Matthias (Gast)


Lesenswert?

Mein Programm ist noch in der Probierphase, deshalb nicht ganz sauber. 
Ich habe es so wie Du es schreibst jetzt gemacht, funktioniert. (Es hat 
aber auch mit meinem Programm schon problemlos geklappt, wahrscheinlich 
aber nicht bei jedem DS18B20, ich hatte nur einen IC bisher zur 
Verfügung.)
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.