very simple program for reading temperature (on chip and external diode) from MAX1617 / TCM1617 using standard I2C

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
tiberiu21
Date:
Mon Apr 06 13:43:42 2015 +0000
Commit message:
initial version

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 06 13:43:42 2015 +0000
@@ -0,0 +1,57 @@
+/***********************************************************************
+* Read temperature by using DS1617
+* read external diode temp. between DXP/DXN pin
+* read on-chip temperature
+* if changed then serial out
+* end
+* tested on nucleo-F401
+************************************************************************/
+
+#include "mbed.h"
+
+
+#define MAX1617_RIT (0x00)  // internal temperature register
+#define MAX1617_RET (0x01)  // external, (diode dxp-dxn)temperature register
+#define MAX1617_ADDR (0x30) // MAX1617 address (ADD0=0  ADD1=0)
+#define MAX1617_OSHT (0x0F) // MAX1617 one shot temperature read command, both channels
+
+
+I2C i2c(I2C_SDA, I2C_SCL);
+
+DigitalOut myled(LED1);
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+int main()
+{
+   
+    char data_read_1[1];    //temp extread holder
+    char data_read_2[1];    //temp read holder
+    int rispold_1=0;
+    int rispold_2=0;
+
+   
+    while (1) {
+       char command_one_shot[1] = {MAX1617_OSHT};
+       char command_ext_temp[1] = {MAX1617_RET};
+       char command_int_temp[1] = {MAX1617_RIT};
+        //I2C transactions
+        i2c.write(MAX1617_ADDR, command_one_shot , 1, 0); // no stop  //one shot temp read
+        i2c.write(MAX1617_ADDR, command_ext_temp, 1, 1); // no stop   //ext temp read
+        i2c.read(MAX1617_ADDR, data_read_1, 1, 0);
+        i2c.write(MAX1617_ADDR, command_int_temp, 1, 1); // no stop   //int temp read
+        i2c.read(MAX1617_ADDR, data_read_2, 1, 0);
+        
+        //
+        int risp1 = (int)data_read_1[0];
+        int risp2 = (int)data_read_2[0];
+        if ((risp1 != rispold_1)|(risp2 != rispold_2))
+          pc.printf("temp int = %d\n",  risp2);
+           pc.printf("temp ext = %d\n",  risp1);
+        rispold_1 = risp1;
+        rispold_2 = risp2;
+        myled = !myled;
+        wait(0.3);
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Apr 06 13:43:42 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/7e07b6fb45cf
\ No newline at end of file