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:
uint8_t ds18b20_reset(void);
Initialisiert (und resetet somit) den Sensor.
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
|