Test code for LM75AIM

Dependencies:   LM75A mbed-src

Committer:
edodm85
Date:
Wed Jun 27 15:45:09 2012 +0000
Revision:
0:75c4b60db793
Child:
1:7d868212c8c1
Rev 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:75c4b60db793 1 /*
edodm85 0:75c4b60db793 2 * Autor: Edoardo De Marchi
edodm85 0:75c4b60db793 3 * Date: 04/01/12
edodm85 0:75c4b60db793 4 * Version: 0.1
edodm85 0:75c4b60db793 5 * File: LM75.cpp
edodm85 0:75c4b60db793 6 */
edodm85 0:75c4b60db793 7
edodm85 0:75c4b60db793 8 #include "LM75A.h"
edodm85 0:75c4b60db793 9
edodm85 0:75c4b60db793 10 #define TEMP_REG_ADDR 0x00 // Temperature address
edodm85 0:75c4b60db793 11 #define CONFIG_REG_ADDR 0x01 // configuration register
edodm85 0:75c4b60db793 12 Serial pc2(USBTX, USBRX);
edodm85 0:75c4b60db793 13
edodm85 0:75c4b60db793 14 // costructor
edodm85 0:75c4b60db793 15 LM75A::LM75A(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr){
edodm85 0:75c4b60db793 16
edodm85 0:75c4b60db793 17 }
edodm85 0:75c4b60db793 18
edodm85 0:75c4b60db793 19
edodm85 0:75c4b60db793 20 // destructor
edodm85 0:75c4b60db793 21 LM75A::~LM75A(){
edodm85 0:75c4b60db793 22
edodm85 0:75c4b60db793 23 }
edodm85 0:75c4b60db793 24
edodm85 0:75c4b60db793 25
edodm85 0:75c4b60db793 26 float LM75A::read(){
edodm85 0:75c4b60db793 27
edodm85 0:75c4b60db793 28 const char tempRegAddr = TEMP_REG_ADDR;
edodm85 0:75c4b60db793 29
edodm85 0:75c4b60db793 30 m_i2c.write(m_addr, &tempRegAddr, 1); // Pointer to the temperature register
edodm85 0:75c4b60db793 31
edodm85 0:75c4b60db793 32 char cmd[2] = {0,0};
edodm85 0:75c4b60db793 33 m_i2c.read(m_addr, cmd, 2); // read temperature register
edodm85 0:75c4b60db793 34
edodm85 0:75c4b60db793 35 unsigned short val = ((cmd[0] << 8) + cmd[1]) >> 7; //val = (cmd[ 1 ] << 1) | ( cmd[ 0 ] >> 7 ) ;
edodm85 0:75c4b60db793 36
edodm85 0:75c4b60db793 37 pc2.printf("reg: ");
edodm85 0:75c4b60db793 38 pc2.printf("%d - %d \n", cmd[1], cmd[0]); // debug
edodm85 0:75c4b60db793 39
edodm85 0:75c4b60db793 40 float temp = (float) ((float)val * 0.5);
edodm85 0:75c4b60db793 41
edodm85 0:75c4b60db793 42 return temp;
edodm85 0:75c4b60db793 43 }
edodm85 0:75c4b60db793 44
edodm85 0:75c4b60db793 45
edodm85 0:75c4b60db793 46 char LM75A::read_reg(char addr){
edodm85 0:75c4b60db793 47
edodm85 0:75c4b60db793 48
edodm85 0:75c4b60db793 49 char data[1] = {0};
edodm85 0:75c4b60db793 50 char ret = addr;
edodm85 0:75c4b60db793 51 m_i2c.write(m_addr, &ret, 1);
edodm85 0:75c4b60db793 52 wait_us(10);
edodm85 0:75c4b60db793 53 m_i2c.read(m_addr, data, 1); // Read register content
edodm85 0:75c4b60db793 54 wait_us(20);
edodm85 0:75c4b60db793 55 pc2.printf("reg: %#x \n\r", data[0]); // debug
edodm85 0:75c4b60db793 56
edodm85 0:75c4b60db793 57 return ret;
edodm85 0:75c4b60db793 58
edodm85 0:75c4b60db793 59 }
edodm85 0:75c4b60db793 60
edodm85 0:75c4b60db793 61
edodm85 0:75c4b60db793 62
edodm85 0:75c4b60db793 63 /** Write to specified MMA7660FC register
edodm85 0:75c4b60db793 64 *
edodm85 0:75c4b60db793 65 * @param char addr: the internal registeraddress of the MMA7660FC
edodm85 0:75c4b60db793 66 * @param char data: write data to selected Register
edodm85 0:75c4b60db793 67 */
edodm85 0:75c4b60db793 68 void LM75A::write_reg(char addr, char data){
edodm85 0:75c4b60db793 69
edodm85 0:75c4b60db793 70 char data2[2] = {0, 0};
edodm85 0:75c4b60db793 71
edodm85 0:75c4b60db793 72 data2[0] = addr;
edodm85 0:75c4b60db793 73 data2[1] = data;
edodm85 0:75c4b60db793 74
edodm85 0:75c4b60db793 75 m_i2c.write(m_addr, data2, 2);
edodm85 0:75c4b60db793 76 wait_us(50);
edodm85 0:75c4b60db793 77 }
edodm85 0:75c4b60db793 78