A program to read the DS2745 by means of the I2C bus.

Dependencies:   RTC mbed

Committer:
Ugly_Kid
Date:
Thu Oct 31 13:36:32 2013 +0000
Revision:
0:f453c4d28d21
Leitura do DS2745 GTACQUAPLUS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ugly_Kid 0:f453c4d28d21 1 #include "mbed.h"
Ugly_Kid 0:f453c4d28d21 2 #include "RTC.h"
Ugly_Kid 0:f453c4d28d21 3
Ugly_Kid 0:f453c4d28d21 4 Ticker reading_i2c;
Ugly_Kid 0:f453c4d28d21 5
Ugly_Kid 0:f453c4d28d21 6 DigitalOut myled1(LED1);
Ugly_Kid 0:f453c4d28d21 7
Ugly_Kid 0:f453c4d28d21 8 DigitalOut myled2(LED2);
Ugly_Kid 0:f453c4d28d21 9
Ugly_Kid 0:f453c4d28d21 10 DigitalOut myled3(LED3);
Ugly_Kid 0:f453c4d28d21 11
Ugly_Kid 0:f453c4d28d21 12 DigitalOut myled4(LED4);
Ugly_Kid 0:f453c4d28d21 13
Ugly_Kid 0:f453c4d28d21 14
Ugly_Kid 0:f453c4d28d21 15 I2C i2c(p9, p10);
Ugly_Kid 0:f453c4d28d21 16
Ugly_Kid 0:f453c4d28d21 17 const int addr = 0x90;
Ugly_Kid 0:f453c4d28d21 18 Serial pc(USBTX, USBRX);
Ugly_Kid 0:f453c4d28d21 19 int x;
Ugly_Kid 0:f453c4d28d21 20
Ugly_Kid 0:f453c4d28d21 21 void read_i2c ()
Ugly_Kid 0:f453c4d28d21 22 {
Ugly_Kid 0:f453c4d28d21 23 x = 0;
Ugly_Kid 0:f453c4d28d21 24 }
Ugly_Kid 0:f453c4d28d21 25
Ugly_Kid 0:f453c4d28d21 26
Ugly_Kid 0:f453c4d28d21 27 void ledFunction( void )
Ugly_Kid 0:f453c4d28d21 28 {
Ugly_Kid 0:f453c4d28d21 29 if (myled3 == 0)
Ugly_Kid 0:f453c4d28d21 30 myled3 = 1;
Ugly_Kid 0:f453c4d28d21 31 else myled3 = 0;
Ugly_Kid 0:f453c4d28d21 32 //RTC::detach(RTC::Second);
Ugly_Kid 0:f453c4d28d21 33 time_t seconds = time(NULL);
Ugly_Kid 0:f453c4d28d21 34 printf("\n%s\n", ctime(&seconds));
Ugly_Kid 0:f453c4d28d21 35 }
Ugly_Kid 0:f453c4d28d21 36
Ugly_Kid 0:f453c4d28d21 37 int main() {
Ugly_Kid 0:f453c4d28d21 38 reading_i2c.attach(&read_i2c, 0.1);
Ugly_Kid 0:f453c4d28d21 39
Ugly_Kid 0:f453c4d28d21 40 set_time(1256729737);
Ugly_Kid 0:f453c4d28d21 41 tm t = RTC::getDefaultTM();
Ugly_Kid 0:f453c4d28d21 42 RTC::attach(&ledFunction, RTC::Second);
Ugly_Kid 0:f453c4d28d21 43
Ugly_Kid 0:f453c4d28d21 44 int iI2Cfreq = 100000; // bus frequency in Hz
Ugly_Kid 0:f453c4d28d21 45 i2c.frequency (iI2Cfreq); //set I2C frequency
Ugly_Kid 0:f453c4d28d21 46 //i2c1.frequency (iI2Cfreq); //set I2C frequency
Ugly_Kid 0:f453c4d28d21 47 pc.baud(115200);
Ugly_Kid 0:f453c4d28d21 48
Ugly_Kid 0:f453c4d28d21 49 // int i,j;
Ugly_Kid 0:f453c4d28d21 50 int j;
Ugly_Kid 0:f453c4d28d21 51 float z, k;
Ugly_Kid 0:f453c4d28d21 52 char cRegister[1];
Ugly_Kid 0:f453c4d28d21 53 char cData[2];
Ugly_Kid 0:f453c4d28d21 54 // char cData1[2];
Ugly_Kid 0:f453c4d28d21 55 cRegister[0] = 0x0E;
Ugly_Kid 0:f453c4d28d21 56 cData[0] = 0x00;
Ugly_Kid 0:f453c4d28d21 57 cData[1] = 0x00;
Ugly_Kid 0:f453c4d28d21 58 k = 0.0015625;
Ugly_Kid 0:f453c4d28d21 59 // cData1[0] = 0x00;
Ugly_Kid 0:f453c4d28d21 60 // cData1[1] = 0x00;
Ugly_Kid 0:f453c4d28d21 61 while (1) {
Ugly_Kid 0:f453c4d28d21 62 if (x == 0)
Ugly_Kid 0:f453c4d28d21 63 {
Ugly_Kid 0:f453c4d28d21 64 i2c.write(addr, cRegister, 1);
Ugly_Kid 0:f453c4d28d21 65 i2c.read(addr, cData, 2);
Ugly_Kid 0:f453c4d28d21 66 // i2c1.write(addr, cRegister, 1);
Ugly_Kid 0:f453c4d28d21 67 // i2c1.read(addr, cData1, 2);
Ugly_Kid 0:f453c4d28d21 68 // i = 256*(int)cData1[0]+(int)cData1[1];
Ugly_Kid 0:f453c4d28d21 69 j = 256*(int)cData[0] + (int)cData[1];
Ugly_Kid 0:f453c4d28d21 70 z = j;
Ugly_Kid 0:f453c4d28d21 71 z = (z * k)/0.02;
Ugly_Kid 0:f453c4d28d21 72 // z = 100 - ((j - i)/z * 100);
Ugly_Kid 0:f453c4d28d21 73 // printf("Regulador %X %X \t ACQUAPLUS %X %X \t Eficiencia %f%%\n", cData[0], cData[1], cData1[0], cData1[1], z);
Ugly_Kid 0:f453c4d28d21 74 printf("Corrente (mA) %.2f \n", z);
Ugly_Kid 0:f453c4d28d21 75 x = 1;
Ugly_Kid 0:f453c4d28d21 76 }
Ugly_Kid 0:f453c4d28d21 77 }
Ugly_Kid 0:f453c4d28d21 78 }