ds18b20_single.h / ds18b20_single.c    


Mit ds18b20_single kann ein DS18B20 Temperatur-sensor ausgelesen werden. Obwohl die Datenkommunikation des Sensors über einen "OneWire-Bus" erfolgt und der Sensor DS18B20 busfähig ist, erlaubt es die Software hier nur, einen einzigen Sensor anzuschliesen

Nebenstehendes Bild zeigt die Anschlussbelegung eines DS18B20 Sensors, zum einen als Bauteil und zum anderen als fertig konfektionierer Sensor mit Anschlusskabel.

    Der Header ds18b20_single.h    


Innerhalb dieser Headerdatei kann folgendes eingestellt werden:
  
  // -----------------------------------------------------------------------
  //   da das Auslesen des Sensors sehr zeitkritisch ist, sollte / duerfen
  //   die Funktionen nicht von einem Interrupt unterbrochen werden. Wird
  //   dieser Schalter auf 1 gesetzt, werden global alle Interrupts vor
  //   ausfuehren der Lesefunktion gesperrt und nach Beendigung der Lese-
  //   wieder freigegeben.
  // -----------------------------------------------------------------------
  #define DS18B20_STOPINTERRUPTONREAD 0
  
Der GPIO-Pin mit dem eine OneWire-Kommunikation vorgenommen wird (hier Default PA1 für den Datenaschluss data)
  
  #define onewire_clr()     { PA1_output_init(); PA1_clr(); }
  #define onewire_set()     PA1_float_init();
  #define onewire_readb()   is_PA1()
  

    Die Funktionen von DS18B20_single.h    


Folgende Funktionen sind in ds18b20_single.c definiert:


    ds18b20_reset    

uint8_t ds18b20_reset(void);

Initialisiert (und resetet somit) den Sensor.



    ds18b20_gettemp    

int16_t ds18b20_gettemp(void);

startet Messvorgang und gibt die gelesene Temperatur * 100 als Funktionsergebnis zurück
    Bsp.: 271 entspricht 27,1 °C
Rückgabe: gelesene Temperatur