1Wire DS18B20 auslesen

OP #2595543
Lesenswert?

Hi,
ich habe zwei 1Wire DS18B20 an meinem Atmega644P.
Ich benutze die Libary von Peter Danneger für die 1-Wire, wenn ich die 
OW auslese werden beide erfolgreich erkannt.
1
Scanning Bus for DS18X20
2
0x28 0x33 0x4c 0x64 0x03 0x00 0x00 0x18  VCC extern
3
0x28 0xa3 0x6a 0xaa 0x03 0x00 0x00 0xe1  VCC extern
4
Terminal data gelesen
Temperatur bekomme ich jedoch nur von einem 1-Wire Sensor. (Getauscht 
habe ich schon, einzeln funktionieren beide)


Ich  benutze den Code für das AVR-Net IO mit nem Atmega644P von Ulrich 
Radig.
http://www.ulrichradig.de/home/uploads/File/ETH_M32_EX/ETH_M32_EX_SOFT.zip

Kann mir da jemand Tipps geben? Steh mal wieder auf dem Schlauch.

Ausgelesen werden die Sensoren in der Main so :
1
    #if USE_OW
2
    
3
    ow_auslesen = (var_array[10] & 0x01);  // Bit 1 von var_array[10] auslesen
4
    
5
    
6
    if ((ss%10 == 8) && (ow_auslesen != 0)) {
7
    
8
    
9
    
10
      #if OW_EXT_POWER
11
      start_OW();
12
      #endif
13
       
14

15
      lese_Temperatur();  // Temperatursensoren lesen
16
      bTempOK=true;
17

18
  
19
      #if OW_MINMAX
20
      for (i=0;i<OW_MAXSENSORS;i++) {
21
        if ((( hh == 00 )&&( mm == 00 )) || (minmax == 1)) {
22
          // Zurücksetzen der Min/Max_Werte 1x/Tag
23
          // auf die gerade aktuellen Temperaturen
24
          ow_array[i+OW_MAXSENSORS] = ow_array[i];
25
          ow_array[i+OW_MAXSENSORS*2] = ow_array[i];
26
        } else {
27
          // Abgleich der Temp. mit den gespeicherten Min/Max-Werten
28
          if (ow_array[i]  < ow_array[i+OW_MAXSENSORS])
29
            ow_array[i+OW_MAXSENSORS] = ow_array[i];
30
          if (ow_array[i]  > ow_array[i+OW_MAXSENSORS*2])
31
            ow_array[i+OW_MAXSENSORS*2] = ow_array[i];
32
        }
33
      }
34
      minmax = 0;
35
      #endif //OW_MINMAX
36
    }
37
    #endif  //USE_OW

In der config ist es so eingestellt:
1
  //-----------------------------------------------------------------------
2
  // 1-Wire Bus für Temperatur-Sensoren
3
  //-----------------------------------------------------------------------
4
  
5
  #define USE_OW        1  // 1-Wire bus einbinden
6
  
7
  #if USE_OW
8
    #define OW_MAXSENSORS  8  // max. Anzahl der 1-wire sensoren (DS18x20)
9
    #define OW_EXT_POWER  1  // falls der 1-Wire Bus eine externe Versorgungsspannung hat
10

11
    #define OW_START    111  // Sensorstartwert 18,0 Grad in ow_array
12
    #define OW_MINMAX_START  0  // Min- / Maxwerte Startwert 0,0 Grad
13
    #define  OW_MINMAX    1  // Min- / Maxwerte speichern
14

15
    #define OW_PORTA    1  // 1-Wire Bus an PORTA7 *
16
    #define OW_PORTD    0  // 1-Wire Bus an PORTD3 und serielles LCD *
17
                  
18
    // *) entweder OW_PORTA 1 oder OW_PORTD 1
19
    
20
    #undef  USE_EEPVAR
21
    #define USE_EEPVAR    1  // muß 1 sein da ROM-IDs im EEPROM gespeichert werden
22
  #endif
Angehängte Dateien:

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