Test code for LM75AIM
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); }