Test code for LM75AIM

Dependencies:   LM75A mbed-src

Revision:
0:75c4b60db793
Child:
1:7d868212c8c1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LM75A/LM75A.cpp	Wed Jun 27 15:45:09 2012 +0000
@@ -0,0 +1,78 @@
+/*
+ *  Autor: Edoardo De Marchi                            
+ *  Date: 04/01/12                                        
+ *  Version: 0.1
+ *  File: LM75.cpp
+ */
+
+#include "LM75A.h"
+
+#define TEMP_REG_ADDR 0x00          // Temperature address
+#define CONFIG_REG_ADDR 0x01        // configuration register
+Serial pc2(USBTX, USBRX);
+
+// costructor
+LM75A::LM75A(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr){
+
+}
+
+
+// destructor
+LM75A::~LM75A(){
+
+}
+
+
+float LM75A::read(){
+
+  const char tempRegAddr = TEMP_REG_ADDR;
+
+  m_i2c.write(m_addr, &tempRegAddr, 1);      // Pointer to the temperature register
+ 
+  char cmd[2] = {0,0};
+  m_i2c.read(m_addr, cmd, 2);        // read temperature register
+  
+  unsigned short val = ((cmd[0] << 8) + cmd[1]) >> 7;     //val = (cmd[ 1 ] << 1) | ( cmd[ 0 ] >> 7 ) ;
+  
+  pc2.printf("reg: ");
+  pc2.printf("%d - %d \n", cmd[1], cmd[0]);         // debug
+  
+  float temp = (float) ((float)val * 0.5);  
+  
+  return temp;
+}
+
+
+char LM75A::read_reg(char addr){
+
+
+    char data[1] = {0};
+    char ret = addr;
+    m_i2c.write(m_addr, &ret, 1);    
+    wait_us(10);         
+    m_i2c.read(m_addr, data, 1);              // Read register content
+    wait_us(20);
+    pc2.printf("reg: %#x \n\r", data[0]);         // debug
+    
+    return ret;
+
+}
+
+
+
+/** Write to specified MMA7660FC register
+*
+* @param char addr: the internal registeraddress of the MMA7660FC
+* @param char data: write data to selected Register
+*/
+void LM75A::write_reg(char addr, char data){
+
+    char data2[2] = {0, 0};
+    
+    data2[0] = addr;
+    data2[1] = data;
+    
+    m_i2c.write(m_addr, data2, 2);             
+    wait_us(50);
+}
+