Test code for LM75AIM

Dependencies:   LM75A mbed-src

LM75A/LM75A.cpp

Committer:
edodm85
Date:
2012-06-27
Revision:
0:75c4b60db793
Child:
1:7d868212c8c1

File content as of revision 0:75c4b60db793:

/*
 *  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);
}