Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AT30TSE75X.cpp
00001 #include "AT30TSE75X.h" 00002 00003 AT30TSE75X::AT30TSE75X(PinName sda, PinName scl) : at30tse75x_i2c(sda, scl), resolution(AT30TSE_CONFIG_RES_9_bit) { 00004 at30tse75x_i2c.frequency(10000); 00005 } 00006 AT30TSE75X::~AT30TSE75X() { } 00007 00008 float AT30TSE75X::read_temp() { 00009 uint8_t bufferwrite[1]; 00010 uint8_t buffer[2]; 00011 float temperature; 00012 uint16_t data; 00013 buffer[0] = 0; 00014 buffer[1] = 0; 00015 00016 at30tse75x_i2c.read((AT30TSE_TEMPERATURE_TWI_ADDR << 1 ),(char *)buffer,AT30TSE_TEMPERATURE_REG_SIZE,false); 00017 00018 00019 data = (buffer[0] << 8) | buffer[1]; 00020 int8_t sign = 1; 00021 00022 /* Check if negative and clear sign bit. */ 00023 if (data & (1 << 15)) { 00024 sign *= -1; 00025 data &= ~(1 << 15); 00026 } 00027 00028 /* Convert to temperature. */ 00029 switch (this->resolution) { 00030 case AT30TSE_CONFIG_RES_9_bit: 00031 data = (data >> 7); 00032 (temperature) = data * sign * 0.5; 00033 break; 00034 00035 case AT30TSE_CONFIG_RES_10_bit: 00036 data = (data >> 6); 00037 (temperature) = data * sign * 0.25; 00038 break; 00039 00040 case AT30TSE_CONFIG_RES_11_bit: 00041 data = (data >> 5); 00042 (temperature) = data * sign * 0.125; 00043 break; 00044 00045 case AT30TSE_CONFIG_RES_12_bit: 00046 data = (data >> 4); 00047 (temperature) = data * sign * 0.0625; 00048 break; 00049 00050 default: 00051 break; 00052 } 00053 return temperature; 00054 } 00055 00056 uint8_t AT30TSE75X:: read_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page) { 00057 uint8_t buff[20]; 00058 buff[0] = (word_addr & 0x0F) | ((0x0F & page) << 4); 00059 00060 at30tse75x_i2c.write((int)(AT30TSE_EEPROM_TWI_ADDR << 1),(char *)buff,1,false); 00061 return at30tse75x_i2c.read((int)(AT30TSE_EEPROM_TWI_ADDR << 1),(char *)data,length,false); 00062 } 00063 00064 uint8_t AT30TSE75X:: write_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page) 00065 { 00066 uint8_t buff[length+1];; 00067 buff[0] = (word_addr & 0x0F) | ((0x0F & page) << 4); 00068 for(int i = 0; i < length; i++) 00069 { 00070 buff[i+1] = *data++; 00071 } 00072 return at30tse75x_i2c.write((int)(AT30TSE_EEPROM_TWI_ADDR << 1),(char *)buff,(length + 1),false); 00073 }
Generated on Tue Jul 12 2022 12:43:33 by
