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:35:35 2010 +0000
Revision:
1:eda09b9ea6e2
Parent:
0:0687b136fcab
still not testet and full of bugs

Who changed what in which revision?

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