library for ADT7410 temperature sensor first version

Committer:
igbt6
Date:
Sun Dec 21 11:42:40 2014 +0000
Revision:
5:d003a86ca20e
Parent:
4:89644cedc8c8
library for ADT7410 temperature sensor first version done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igbt6 1:131a836c6b79 1 /*
igbt6 1:131a836c6b79 2 @file adt7410.h
igbt6 5:d003a86ca20e 3
igbt6 5:d003a86ca20e 4 @brief Temperature Sensor ADT7410 Breakout I2C Library
igbt6 1:131a836c6b79 5
igbt6 1:131a836c6b79 6 @Author lukasz uszko(luszko@op.pl)
igbt6 1:131a836c6b79 7
igbt6 1:131a836c6b79 8 Tested on FRDM-KL46Z
igbt6 5:d003a86ca20e 9
igbt6 1:131a836c6b79 10 Copyright (c) 2014 luszko
igbt6 1:131a836c6b79 11 Released under the MIT License (see http://mbed.org/license/mit)
igbt6 1:131a836c6b79 12
igbt6 5:d003a86ca20e 13 Documentation regarding the ADT7410 can be found here:
igbt6 1:131a836c6b79 14 http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
igbt6 1:131a836c6b79 15 */
igbt6 1:131a836c6b79 16
igbt6 1:131a836c6b79 17
igbt6 1:131a836c6b79 18
igbt6 1:131a836c6b79 19 #ifndef ADT7410_H
igbt6 1:131a836c6b79 20 #define ADT7410_H
igbt6 1:131a836c6b79 21
igbt6 1:131a836c6b79 22 #include "mbed.h"
igbt6 1:131a836c6b79 23
igbt6 1:131a836c6b79 24
igbt6 3:41839eb9229f 25 #define ADT7410_I2C_ADDRESS 0x97 //A0 and A1 PIN are conected to VDD
igbt6 4:89644cedc8c8 26 #define ADT7410_2_I2C_ADDRESS 0x90 //A0 and A1 PIN are conected to GND
igbt6 1:131a836c6b79 27
igbt6 5:d003a86ca20e 28
igbt6 5:d003a86ca20e 29 #define UNSET_ADT7410_TEMPERATURE -999
igbt6 5:d003a86ca20e 30
igbt6 5:d003a86ca20e 31
igbt6 1:131a836c6b79 32
igbt6 1:131a836c6b79 33
igbt6 5:d003a86ca20e 34 class ADT7410
igbt6 5:d003a86ca20e 35 {
igbt6 5:d003a86ca20e 36
igbt6 5:d003a86ca20e 37 public:
igbt6 5:d003a86ca20e 38 //typedefs:
igbt6 5:d003a86ca20e 39
igbt6 5:d003a86ca20e 40 typedef enum {
igbt6 5:d003a86ca20e 41 _13_BIT=0,
igbt6 5:d003a86ca20e 42 _16_BIT=1
igbt6 5:d003a86ca20e 43 } CONF_RESOLUTION;
igbt6 5:d003a86ca20e 44
igbt6 5:d003a86ca20e 45 typedef enum {
igbt6 5:d003a86ca20e 46 CONT_CONV=0,
igbt6 5:d003a86ca20e 47 ONE_SHOT,
igbt6 5:d003a86ca20e 48 SPS_MODE,
igbt6 5:d003a86ca20e 49 SHUTDOWN
igbt6 5:d003a86ca20e 50 } CONF_OPERATION_MODE;
igbt6 5:d003a86ca20e 51
igbt6 5:d003a86ca20e 52 typedef enum {
igbt6 5:d003a86ca20e 53 INTERRUPT_MODE=0,
igbt6 5:d003a86ca20e 54 COMPARATOR_MODE=1
igbt6 5:d003a86ca20e 55 } CONF_INT_CT_MODE;
igbt6 5:d003a86ca20e 56
igbt6 5:d003a86ca20e 57 typedef enum {
igbt6 5:d003a86ca20e 58 INT_ACTIVE_LOW=0,
igbt6 5:d003a86ca20e 59 INT_ACTIVE_HIGH=1
igbt6 5:d003a86ca20e 60 } CONF_INT_PIN_POLARITY;
igbt6 5:d003a86ca20e 61
igbt6 5:d003a86ca20e 62 typedef enum {
igbt6 5:d003a86ca20e 63 CT_ACTIVE_LOW=0,
igbt6 5:d003a86ca20e 64 CT_ACTIVE_HIGH=1
igbt6 5:d003a86ca20e 65 } CONF_CT_PIN_POLARITY;
igbt6 5:d003a86ca20e 66
igbt6 5:d003a86ca20e 67 typedef enum {
igbt6 5:d003a86ca20e 68 _1_FAULT=0,
igbt6 5:d003a86ca20e 69 _2_FAULTS,
igbt6 5:d003a86ca20e 70 _3_FAULTS,
igbt6 5:d003a86ca20e 71 _4_FAULTS
igbt6 5:d003a86ca20e 72 } CONF_FAULT_QUEUE;
igbt6 1:131a836c6b79 73
igbt6 1:131a836c6b79 74 /** Create an ADT7410 instance
igbt6 5:d003a86ca20e 75 * @param sda pin
igbt6 5:d003a86ca20e 76 * @param scl pin
igbt6 5:d003a86ca20e 77 * @param address: I2C slave address
igbt6 1:131a836c6b79 78 */
igbt6 5:d003a86ca20e 79 ADT7410(PinName sda, PinName scl,int i2cFrequency=100000,int address = ADT7410_I2C_ADDRESS);
igbt6 1:131a836c6b79 80
igbt6 1:131a836c6b79 81 /** Create a ADT7410 instance
igbt6 1:131a836c6b79 82 * @param i2c object
igbt6 5:d003a86ca20e 83 * @param address: I2C slave address
igbt6 1:131a836c6b79 84 */
igbt6 5:d003a86ca20e 85 ADT7410(I2C& i2c, int address = ADT7410_I2C_ADDRESS);
igbt6 1:131a836c6b79 86
igbt6 5:d003a86ca20e 87 /** Initialization: set member values and
igbt6 1:131a836c6b79 88 * @returns
igbt6 1:131a836c6b79 89 * 1 on success,
igbt6 1:131a836c6b79 90 * 0 on error
igbt6 1:131a836c6b79 91 */
igbt6 5:d003a86ca20e 92 bool setConfiguration(CONF_FAULT_QUEUE faultQueue=_1_FAULT,
igbt6 5:d003a86ca20e 93 CONF_CT_PIN_POLARITY ctPinPolarity=CT_ACTIVE_LOW,
igbt6 5:d003a86ca20e 94 CONF_INT_PIN_POLARITY intPinPolarity=INT_ACTIVE_LOW,
igbt6 5:d003a86ca20e 95 CONF_INT_CT_MODE intCtMode=INTERRUPT_MODE,
igbt6 5:d003a86ca20e 96 CONF_OPERATION_MODE operMode=CONT_CONV,
igbt6 5:d003a86ca20e 97 CONF_RESOLUTION res=_16_BIT);
igbt6 1:131a836c6b79 98
igbt6 1:131a836c6b79 99 /** Read temperature from the ADT7410.
igbt6 5:d003a86ca20e 100 * @param temperature (C)
igbt6 5:d003a86ca20e 101 * @returns
igbt6 5:d003a86ca20e 102 * 1 on success,
igbt6 5:d003a86ca20e 103 * 0 on error
igbt6 5:d003a86ca20e 104 */
igbt6 5:d003a86ca20e 105 bool readTemp();
igbt6 5:d003a86ca20e 106
igbt6 5:d003a86ca20e 107
igbt6 5:d003a86ca20e 108 /** Read ID number of the chip.
igbt6 5:d003a86ca20e 109 * @param temperature (C)
igbt6 5:d003a86ca20e 110 * @returns ID number (8 bit Value)
igbt6 5:d003a86ca20e 111 */
igbt6 5:d003a86ca20e 112 int readIdNumber(void);
igbt6 5:d003a86ca20e 113
igbt6 5:d003a86ca20e 114
igbt6 5:d003a86ca20e 115 /** Set resolution of read data
igbt6 1:131a836c6b79 116 * @returns
igbt6 1:131a836c6b79 117 * 1 on success,
igbt6 1:131a836c6b79 118 * 0 on error
igbt6 5:d003a86ca20e 119 */
igbt6 5:d003a86ca20e 120 bool setResolution(CONF_RESOLUTION res);
igbt6 1:131a836c6b79 121
igbt6 5:d003a86ca20e 122 /** Get temperature from a previous measurement
igbt6 3:41839eb9229f 123 *
igbt6 1:131a836c6b79 124 * @returns
igbt6 1:131a836c6b79 125 * temperature (C)
igbt6 5:d003a86ca20e 126 */
igbt6 5:d003a86ca20e 127 inline float getTemperature(void) {
igbt6 5:d003a86ca20e 128 return mTemperature;
igbt6 5:d003a86ca20e 129 }
igbt6 1:131a836c6b79 130
igbt6 1:131a836c6b79 131 protected:
igbt6 5:d003a86ca20e 132
igbt6 5:d003a86ca20e 133 float mTemperature;
igbt6 5:d003a86ca20e 134 I2C mI2c;
igbt6 5:d003a86ca20e 135 int mI2cAddr;
igbt6 5:d003a86ca20e 136 uint8_t mResolution;
igbt6 5:d003a86ca20e 137
igbt6 5:d003a86ca20e 138 private:
igbt6 5:d003a86ca20e 139
igbt6 5:d003a86ca20e 140 /** Write data to the given register (using I2C bus)
igbt6 5:d003a86ca20e 141 *
igbt6 5:d003a86ca20e 142 * @returns
igbt6 5:d003a86ca20e 143 * 1 on success,
igbt6 5:d003a86ca20e 144 * 0 on error
igbt6 5:d003a86ca20e 145 */
igbt6 5:d003a86ca20e 146 bool write(uint8_t regAddress, uint8_t* data,int dataLength);
igbt6 5:d003a86ca20e 147
igbt6 1:131a836c6b79 148 /** Write data to the given register
igbt6 5:d003a86ca20e 149 * @param register Address
igbt6 5:d003a86ca20e 150 * @param data to read
igbt6 5:d003a86ca20e 151 * @param length of data to read
igbt6 1:131a836c6b79 152 * @returns
igbt6 1:131a836c6b79 153 * 1 on success,
igbt6 1:131a836c6b79 154 * 0 on error
igbt6 5:d003a86ca20e 155 */
igbt6 5:d003a86ca20e 156 bool read(uint8_t regAddress, uint8_t* data,int length);
igbt6 2:d12dffd027a8 157
igbt6 5:d003a86ca20e 158
igbt6 1:131a836c6b79 159
igbt6 1:131a836c6b79 160 };
igbt6 1:131a836c6b79 161
igbt6 1:131a836c6b79 162 #endif