A small library to read the tempature from ds1621(with little changes all those ds162x) devices over I2C.

Committer:
nullsub
Date:
Tue Nov 02 22:31:32 2010 +0000
Revision:
0:0687b136fcab
Child:
1:eda09b9ea6e2
FirstCode. No tests. Full of bugs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nullsub 0:0687b136fcab 1 #ifndef TEMPATURE_C
nullsub 0:0687b136fcab 2 #define TEMPATURE_C
nullsub 0:0687b136fcab 3
nullsub 0:0687b136fcab 4
nullsub 0:0687b136fcab 5 #include "ds1621.h"
nullsub 0:0687b136fcab 6
nullsub 0:0687b136fcab 7 static I2C* i2c;
nullsub 0:0687b136fcab 8
nullsub 0:0687b136fcab 9 I2C * init_tempature(I2C *interface) {
nullsub 0:0687b136fcab 10 i2c = interface;
nullsub 0:0687b136fcab 11 if (i2c == NULL) {
nullsub 0:0687b136fcab 12 i2c = new I2C(p28,p27);
nullsub 0:0687b136fcab 13 }
nullsub 0:0687b136fcab 14 i2c->frequency(100000);//100khz
nullsub 0:0687b136fcab 15
nullsub 0:0687b136fcab 16 return i2c;
nullsub 0:0687b136fcab 17 }
nullsub 0:0687b136fcab 18 /*FIXME: return a float or something instead of a lousy string*/
nullsub 0:0687b136fcab 19 void get_tempature(unsigned int adress, char * s) { // adress of the i2c ds1621 sensor, char buffer to contain the
nullsub 0:0687b136fcab 20 unsigned char TempH, TempL;
nullsub 0:0687b136fcab 21 int8_t data;
nullsub 0:0687b136fcab 22 adress &= 0x0E;
nullsub 0:0687b136fcab 23 data = 0xEE;
nullsub 0:0687b136fcab 24 i2c->write(DS1621_Write|adress,(char *)&data,sizeof(data));
nullsub 0:0687b136fcab 25 data = 0xAA;
nullsub 0:0687b136fcab 26 i2c->write(DS1621_Write|adress,(char *)&data,sizeof(data));
nullsub 0:0687b136fcab 27
nullsub 0:0687b136fcab 28 i2c->read(DS1621_Read|adress,(char *)&TempH,sizeof(TempH),1);
nullsub 0:0687b136fcab 29 i2c->read(DS1621_Read|adress,(char *)&TempL,sizeof(TempL),0);
nullsub 0:0687b136fcab 30
nullsub 0:0687b136fcab 31 pc.printf("temph = 0x%x, TempL = 0x%x",TempH,TempL);
nullsub 0:0687b136fcab 32 /*itoa(TempH,s,10); // convert to string
nullsub 0:0687b136fcab 33 while (*s) {
nullsub 0:0687b136fcab 34 s++; // goto end of string
nullsub 0:0687b136fcab 35 }
nullsub 0:0687b136fcab 36 *s++ = '.';
nullsub 0:0687b136fcab 37 if (TempL == 0x80) {
nullsub 0:0687b136fcab 38 *s++ = '5';
nullsub 0:0687b136fcab 39
nullsub 0:0687b136fcab 40 } else {
nullsub 0:0687b136fcab 41 *s++ = '0';
nullsub 0:0687b136fcab 42 }
nullsub 0:0687b136fcab 43 *s = 0x00; //mark endo of string*/
nullsub 0:0687b136fcab 44 }
nullsub 0:0687b136fcab 45
nullsub 0:0687b136fcab 46
nullsub 0:0687b136fcab 47
nullsub 0:0687b136fcab 48 #endif