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 | }
|