Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AT30TSE75X.h Source File

AT30TSE75X.h

00001 #ifndef AT30TSE75X_H
00002 #define AT30TSE75X_H
00003 
00004 #include "mbed.h"
00005 
00006 #define AT30TSE_TEMPERATURE_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_TEMP | \
00007 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
00008 
00009 /* AT30TSE75x Device Type ID for Temperature Sensor: 0b1001xxx */
00010 #define AT30TSE75X_DEVICE_TYPE_ID_TEMP    0x48
00011 /* AT30TSE75x Device Type ID for EEPROM: 0b1010xxx */
00012 #define AT30TSE75X_DEVICE_TYPE_ID_EEPROM  0x50
00013 
00014 #define BOARD_AT30TSE_DEVICE_ADDR  0x07 /* 0b111 */ /*CAn be varied according to the condition of A0, A1, A2*/
00015 
00016 #define AT30TSE_CONFIG_RES_9_bit    0
00017 #define AT30TSE_CONFIG_RES_10_bit   1
00018 #define AT30TSE_CONFIG_RES_11_bit   2
00019 #define AT30TSE_CONFIG_RES_12_bit   3
00020 
00021 #define AT30TSE_TEMPERATURE_REG_SIZE    2
00022 
00023 #if (BOARD_USING_AT30TSE != AT30TSE752) && \
00024 (BOARD_USING_AT30TSE != AT30TSE754) && \
00025 (BOARD_USING_AT30TSE != AT30TSE758) && \
00026 (BOARD_USING_AT30TSE != AT30TS75)
00027 /* Using AT30TSE758 in Default */
00028 #define BOARD_USING_AT30TSE  AT30TSE758
00029 #endif
00030 
00031 /* Setting the AT30TSE75x Temperature Sensor Address */
00032 #define AT30TSE_TEMPERATURE_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_TEMP | \
00033 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
00034 
00035 #define AT30TSE752                      1
00036 #define AT30TSE754                      2
00037 #define AT30TSE758                      3
00038 #define AT30TS75                        4
00039 
00040 #if BOARD_USING_AT30TSE == AT30TSE752
00041 #define AT30TSE_EEPROM_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
00042 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
00043 #elif BOARD_USING_AT30TSE == AT30TSE754
00044 #define AT30TSE_EEPROM_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
00045 (BOARD_AT30TSE_DEVICE_ADDR & 0x06))
00046 #elif BOARD_USING_AT30TSE == AT30TSE758
00047 #define AT30TSE_EEPROM_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
00048 (BOARD_AT30TSE_DEVICE_ADDR & 0x04))
00049 #elif BOARD_USING_AT30TSE != AT30TS75
00050 /* Using AT30TSE758 in Default */
00051 #define AT30TSE_EEPROM_TWI_ADDR  (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
00052 (BOARD_AT30TSE_DEVICE_ADDR & 0x04))
00053 #endif
00054 
00055 class AT30TSE75X
00056 {
00057 public:
00058   AT30TSE75X(PinName sda, PinName scl);
00059   ~AT30TSE75X();
00060 
00061   float read_temp();
00062   uint8_t read_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page);
00063   uint8_t write_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page);
00064   
00065   I2C at30tse75x_i2c;
00066 private:
00067   uint8_t resolution = AT30TSE_CONFIG_RES_9_bit;
00068 
00069 };
00070 
00071 #endif