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.
Dependents: mbed-os5-F303-18650-Manager-tp4056
MCP9808.h
00001 /** 00002 * @brief MCP9808.h 00003 * @details ±0.5°C Maximum Accuracy Digital Temperature Sensor. 00004 * Header file. 00005 * 00006 * 00007 * @return N/A 00008 * 00009 * @author Manuel Caballero 00010 * @date 25/April/2019 00011 * @version 25/April/2019 The ORIGIN 00012 * @pre N/A. 00013 * @warning N/A 00014 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). All rights reserved. 00015 */ 00016 #ifndef MCP9808_H 00017 #define MCP9808_H 00018 00019 #include "mbed.h" 00020 00021 00022 /** 00023 Example: 00024 @code 00025 #include "mbed.h" 00026 #include "MCP9808.h" 00027 00028 MCP9808 myMCP9808 ( p28, p27, MCP9808::MCP9808_ADDRESS_0, 400000 ); // I2C_SDA | I2C_SCL 00029 Serial pc ( USBTX, USBRX ); // tx, rx 00030 00031 DigitalOut myled ( LED1 ); 00032 Ticker newAction; 00033 00034 00035 00036 // @brief Constants. 00037 00038 00039 // @brief Variables. 00040 volatile uint32_t myState; // State that indicates when to perform a new sample 00041 00042 00043 00044 // @brief FUNCTION PROTOTYPES 00045 void changeDATA ( void ); 00046 00047 00048 00049 00050 //@brief FUNCTION FOR APPLICATION MAIN ENTRY. 00051 int main() 00052 { 00053 MCP9808::MCP9808_status_t aux; 00054 MCP9808::MCP9808_config_reg_t myMCP9808_Config; 00055 MCP9808::MCP9808_data_t myMCP9808_Data; 00056 00057 pc.baud ( 115200 ); 00058 00059 00060 myled = 1; 00061 wait(3); 00062 myled = 0; 00063 00064 // Shutdown the device, low-power mode enabled 00065 aux = myMCP9808.MCP9808_GetCONFIG ( &myMCP9808_Config ); 00066 00067 myMCP9808_Config.shdn = MCP9808::CONFIG_SHDN_SHUTDOWN; 00068 aux = myMCP9808.MCP9808_SetCONFIG ( myMCP9808_Config ); 00069 00070 // Get manufacturer ID 00071 aux = myMCP9808.MCP9808_GetManufacturerID ( &myMCP9808_Data ); 00072 00073 // Get device ID and device revision 00074 aux = myMCP9808.MCP9808_GetDeviceID ( &myMCP9808_Data ); 00075 00076 // Configure the device 00077 // - T_UPPER and T_LOWER limit hysteresis at 0C 00078 // - Continuous conversion mode 00079 // - T_CRIT unlocked 00080 // - Window lock unlocked 00081 // - Alert output control disabled 00082 // - Alert output select: Alert for T_UPPER, T_LOWER and T_CRIT 00083 // - Alert output polaruty: Active-low 00084 // - Alert output mode: Comparator output 00085 // 00086 myMCP9808_Config.t_hyst = MCP9808::CONFIG_T_HYST_0_C; 00087 myMCP9808_Config.shdn = MCP9808::CONFIG_SHDN_CONTINUOUS_CONVERSION; 00088 myMCP9808_Config.t_crit = MCP9808::CONFIG_CRIT_LOCK_UNLOCKED; 00089 myMCP9808_Config.t_win_lock = MCP9808::CONFIG_WIN_LOCK_UNLOCKED; 00090 myMCP9808_Config.alert_cnt = MCP9808::CONFIG_ALERT_CNT_DISABLED; 00091 myMCP9808_Config.alert_sel = MCP9808::CONFIG_ALERT_SEL_TUPPER_TLOWER_TCRIT; 00092 myMCP9808_Config.alert_pol = MCP9808::CONFIG_ALERT_POL_ACTIVE_LOW; 00093 myMCP9808_Config.alert_mod = MCP9808::CONFIG_ALERT_MOD_COMPARATOR_OUTPUT; 00094 aux = myMCP9808.MCP9808_SetCONFIG ( myMCP9808_Config ); 00095 00096 // Set resolution: +0.0625C ( t_CON ~ 250ms ) 00097 myMCP9808_Data.resolution = MCP9808::RESOLUTION_0_0625_C; 00098 aux = myMCP9808.MCP9808_SetResolution ( myMCP9808_Data ); 00099 00100 00101 myState = 0UL; // Reset the variable 00102 newAction.attach( &changeDATA, 1U ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s ) 00103 00104 00105 // Let the callbacks take care of everything 00106 while(1) { 00107 sleep(); 00108 00109 if ( myState == 1UL ) { 00110 myled = 1U; 00111 00112 // Get ambient temperature 00113 aux = myMCP9808.MCP9808_GetTA ( &myMCP9808_Data ); 00114 00115 // Send data through the UART 00116 pc.printf ( "T: %0.4f C\r\n", myMCP9808_Data.t_a ); 00117 00118 00119 // Reset the variables 00120 myState = 0UL; 00121 myled = 0U; 00122 } 00123 } 00124 } 00125 00126 00127 // @brief changeDATA ( void ) 00128 // 00129 // @details It changes myState variable 00130 // 00131 // @param[in] N/A 00132 // 00133 // @param[out] N/A. 00134 // 00135 // @return N/A. 00136 // 00137 // 00138 // @author Manuel Caballero 00139 // @date 25/April/2019 00140 // @version 25/April/2019 The ORIGIN 00141 // @pre N/A 00142 // @warning N/A. 00143 // 00144 void changeDATA ( void ) 00145 { 00146 myState = 1UL; 00147 } 00148 @endcode 00149 */ 00150 00151 00152 /*! 00153 Library for the MCP9808 ±0.5°C Maximum Accuracy Digital Temperature Sensor. 00154 */ 00155 class MCP9808 00156 { 00157 public: 00158 /** 00159 * @brief DEFAULT ADDRESSES 00160 */ 00161 typedef enum { 00162 MCP9808_ADDRESS_0 = ( 0b0011000 << 1U ), /*!< I2C slave address byte: A2A1A0: 000 */ 00163 MCP9808_ADDRESS_1 = ( 0b0011001 << 1U ), /*!< I2C slave address byte: A2A1A0: 001 */ 00164 MCP9808_ADDRESS_2 = ( 0b0011010 << 1U ), /*!< I2C slave address byte: A2A1A0: 010 */ 00165 MCP9808_ADDRESS_3 = ( 0b0011011 << 1U ), /*!< I2C slave address byte: A2A1A0: 011 */ 00166 MCP9808_ADDRESS_4 = ( 0b0011100 << 1U ), /*!< I2C slave address byte: A2A1A0: 100 */ 00167 MCP9808_ADDRESS_5 = ( 0b0011101 << 1U ), /*!< I2C slave address byte: A2A1A0: 101 */ 00168 MCP9808_ADDRESS_6 = ( 0b0011110 << 1U ), /*!< I2C slave address byte: A2A1A0: 110 */ 00169 MCP9808_ADDRESS_7 = ( 0b0011111 << 1U ) /*!< I2C slave address byte: A2A1A0: 111 */ 00170 } MCP9808_addresses_t; 00171 00172 00173 00174 /** 00175 * @brief REGISTERS 00176 */ 00177 typedef enum { 00178 MCP9808_CONFIG = 0x01, /*!< CONFIG register */ 00179 MCP9808_TUPPER = 0x02, /*!< T_UPPER register */ 00180 MCP9808_TLOWER = 0x03, /*!< T_LOWER register */ 00181 MCP9808_TCRIT = 0x04, /*!< T_CRIT register */ 00182 MCP9808_TA = 0x05, /*!< T_A register */ 00183 MCP9808_MANUFACTURER_ID = 0x06, /*!< Manufacturer ID register */ 00184 MCP9808_DEVICE_ID = 0x07, /*!< Device ID/Revision register */ 00185 MCP9808_RESOLUTION = 0x08 /*!< Resolution register */ 00186 } MCP9808_registers_t; 00187 00188 00189 00190 /** 00191 * @brief CONFIG Register 00192 */ 00193 /* T_HYST <9:10>: TUPPER AND TLOWER LIMIT HYSTERESIS BITS 00194 * NOTE: 00195 * · This bit can not be altered when either of the Lock bits are set ( bit 6 and bit 7 ) 00196 * · This bit can be programmed in Shutdown mode 00197 */ 00198 typedef enum { 00199 CONFIG_T_HYST_MASK = ( 0b11 << 9U ), /*!< T_HYST mask */ 00200 CONFIG_T_HYST_0_C = ( 0b00 << 9U ), /*!< T_HYST: 0C [ Default ] */ 00201 CONFIG_T_HYST_1_5_C = ( 0b01 << 9U ), /*!< T_HYST: +1.5C */ 00202 CONFIG_T_HYST_3_0_C = ( 0b10 << 9U ), /*!< T_HYST: +3.0C */ 00203 CONFIG_T_HYST_6_0_C = ( 0b11 << 9U ), /*!< T_HYST: +6.0C */ 00204 } MCP9808_config_thyst_t; 00205 00206 00207 00208 /* SHDN <8>: SHUTDOWN MODE BIT 00209 * NOTE: 00210 * · This bit can not be set to '1' when either of the Lock bits are set ( bit 6 and bit 7 ), however, 00211 * it can be cleared to '0' for continuous conversion while locked. 00212 */ 00213 typedef enum { 00214 CONFIG_SHDN_MASK = ( 1U << 8U ), /*!< SHDN mask */ 00215 CONFIG_SHDN_CONTINUOUS_CONVERSION = ( 0U << 8U ), /*!< SHDN: Continuous conversion [ Default ] */ 00216 CONFIG_SHDN_SHUTDOWN = ( 1U << 8U ) /*!< SHDN: Shutdown ( Low-power mode ) */ 00217 } MCP9808_config_shdn_t ; 00218 00219 00220 00221 /* CRIT_LOCK <7>: T_CRIT LOCKED BIT 00222 * NOTE: N/A. 00223 */ 00224 typedef enum { 00225 CONFIG_CRIT_LOCK_MASK = ( 1U << 7U ), /*!< CRIT_LOCK mask */ 00226 CONFIG_CRIT_LOCK_UNLOCKED = ( 0U << 7U ), /*!< T_CRIT register can be written [ Default ] */ 00227 CONFIG_CRIT_LOCK_LOCKED = ( 1U << 7U ) /*!< T_CRIT register can not be written */ 00228 } MCP9808_config_crit_lock_t ; 00229 00230 00231 00232 /* WIN_LOCK <6>: CORRECTION INTERRUPT ENABLE 00233 * NOTE: N/A. 00234 */ 00235 typedef enum { 00236 CONFIG_WIN_LOCK_MASK = ( 1U << 6U ), /*!< WIN_LOCK mask */ 00237 CONFIG_WIN_LOCK_UNLOCKED = ( 0U << 6U ), /*!< TUPPER and TLOWER can be written [ Default ] */ 00238 CONFIG_WIN_LOCK_LOCKED = ( 1U << 6U ) /*!< TUPPER and TLOWER can not be written */ 00239 } MCP9808_config_win_lock_t ; 00240 00241 00242 00243 /* INT_CLEAR <5>: INTERRUPT CLEAR BIT 00244 * NOTE: 00245 * · This bit can not be set to '1' in Shutdown mode, but it can be cleared after the device enters Shutdown mode 00246 */ 00247 typedef enum { 00248 CONFIG_INT_CLEAR_MASK = ( 1U << 5U ), /*!< INT_CLEAR mask */ 00249 CONFIG_INT_CLEAR_NO_EFFECT = ( 0U << 5U ), /*!< No effect [ Default ] */ 00250 CONFIG_INT_CLEAR_CLEAR_INT_OUTPUT = ( 1U << 5U ) /*!< Clear interrupt output, when read, returns '0' */ 00251 } MCP9808_conf_int_clear_t ; 00252 00253 00254 00255 /* ALERT_STAT <4>: ALERT OUTPUT STATUS BIT 00256 * NOTE: N/A. 00257 */ 00258 typedef enum { 00259 CONFIG_ALERT_STAT_MASK = ( 1U << 4U ), /*!< ALERT_STAT mask */ 00260 CONFIG_ALERT_STAT_NOT_ASSERTED = ( 0U << 4U ), /*!< ALERT_STAT is not asserted [ Default ] */ 00261 CONFIG_ALERT_STAT_ASSERTED = ( 1U << 4U ) /*!< ALERT_STAT is asserted */ 00262 } MCP9808_config_alert_stat_t ; 00263 00264 00265 00266 /* ALERT_CNT <3>: ALERT OUTPUT CONTROL BIT 00267 * NOTE: N/A. 00268 */ 00269 typedef enum { 00270 CONFIG_ALERT_CNT_MASK = ( 1U << 3U ), /*!< ALERT_CNT mask */ 00271 CONFIG_ALERT_CNT_DISABLED = ( 0U << 3U ), /*!< ALERT_CNT disabled [ Default ] */ 00272 CONFIG_ALERT_CNT_ENABLED = ( 1U << 3U ) /*!< ALERT_CNT enabled */ 00273 } MCP9808_config_alert_cnt_t ; 00274 00275 00276 00277 /* ALERT_SEL <2>: ALERT OUTPUT SELECT BIT 00278 * NOTE: N/A. 00279 */ 00280 typedef enum { 00281 CONFIG_ALERT_SEL_MASK = ( 1U << 2U ), /*!< ALERT_SEL mask */ 00282 CONFIG_ALERT_SEL_TUPPER_TLOWER_TCRIT = ( 0U << 2U ), /*!< Alert output for T_UPPER, T_LOWER and T_CRIT [ Default ] */ 00283 CONFIG_ALERT_SEL_TA_GREATER_TCRIT = ( 1U << 2U ) /*!< Alert output for T_A greater T_CRIT */ 00284 } MCP9808_config_alert_sel_t ; 00285 00286 00287 00288 /* ALERT_POL <1>: ALERT OUTPUT POLARITY BIT 00289 * NOTE: N/A. 00290 */ 00291 typedef enum { 00292 CONFIG_ALERT_POL_MASK = ( 1U << 1U ), /*!< ALERT_POL mask */ 00293 CONFIG_ALERT_POL_ACTIVE_LOW = ( 0U << 1U ), /*!< ALERT_POL active-low [ Default ] */ 00294 CONFIG_ALERT_POL_ACTIVE_HIGH = ( 1U << 1U ) /*!< ALERT_POL active-high */ 00295 } MCP9808_config_alert_pol_t ; 00296 00297 00298 00299 /* ALERT_MOD <0>: ALERT OUTPUT MODE BIT 00300 * NOTE: N/A. 00301 */ 00302 typedef enum { 00303 CONFIG_ALERT_MOD_MASK = ( 1U << 0U ), /*!< ALERT_MOD mask */ 00304 CONFIG_ALERT_MOD_COMPARATOR_OUTPUT = ( 0U << 0U ), /*!< ALERT_MOD comparator output [ Default ] */ 00305 CONFIG_ALERT_MOD_INTERRUPT_OUTPUT = ( 1U << 0U ) /*!< ALERT_MOD interrupt output */ 00306 } MCP9808_config_alert_mod_t ; 00307 00308 00309 00310 00311 /** 00312 * @brief T_UPPER/T_LOWER/T_CRIT TEMPERATURE LIMIT REGISTERS 00313 */ 00314 /* SIGN <12>: SIGN BIT 00315 * NOTE: N/A. 00316 */ 00317 typedef enum { 00318 TEMPERATURE_LIMIT_SIGN_MASK = ( 1U << 12U ), /*!< SIGN mask */ 00319 TEMPERATURE_LIMIT_SIGN_TA_POSITIVE = ( 0U << 12U ), /*!< T_A greater or iqual 0C [ Default ] */ 00320 TEMPERATURE_LIMIT_SIGN_TA_NEGATIVE = ( 1U << 12U ) /*!< T_A lower 0C */ 00321 } MCP9808_temperature_limit_sign_t; 00322 00323 00324 00325 /* INTEGRAL <8:4>: TEMPERATURE INTEGRAL BOUNDARY PART 00326 * NOTE: N/A. 00327 */ 00328 typedef enum { 00329 TEMPERATURE_LIMIT_INTEGRAL_PART_MASK = ( 0b11111111 << 4U ) /*!< Temperature limit, integral part mask */ 00330 } MCP9808_temperature_limit_integral_boundary_t ; 00331 00332 00333 00334 /* DECIMAL <3:2>: TEMPERATURE DECIMAL BOUNDARY PART 00335 * NOTE: N/A. 00336 */ 00337 typedef enum { 00338 TEMPERATURE_LIMIT_DECIMAL_PART_MASK = ( 0b11 << 2U ), /*!< Temperature limit, decimal part mask */ 00339 TEMPERATURE_LIMIT_DECIMAL_PART_0_00C = ( 0b00 << 2U ), /*!< Temperature limit, decimal part: 0.00C */ 00340 TEMPERATURE_LIMIT_DECIMAL_PART_0_25C = ( 0b01 << 2U ), /*!< Temperature limit, decimal part: 0.25C */ 00341 TEMPERATURE_LIMIT_DECIMAL_PART_0_50C = ( 0b10 << 2U ), /*!< Temperature limit, decimal part: 0.50C */ 00342 TEMPERATURE_LIMIT_DECIMAL_PART_0_75C = ( 0b11 << 2U ) /*!< Temperature limit, decimal part: 0.75C */ 00343 } MCP9808_temperature_limit_decimal_boundary_t ; 00344 00345 00346 00347 00348 /** 00349 * @brief T_A AMBIENT TEMPERATURE REGISTERS 00350 */ 00351 /* TA_VS_TCRIT <15> 00352 * NOTE: N/A. 00353 */ 00354 typedef enum { 00355 T_A_TA_VS_TCRIT_MASK = ( 1U << 15U ), /*!< T_A mask */ 00356 T_A_TA_VS_TCRIT_TA_LOWER_TCRIT = ( 0U << 15U ), /*!< T_A lower T_CRIT */ 00357 T_A_TA_VS_TCRIT_TA_GREATER_EQUAL_TCRIT = ( 1U << 15U ) /*!< T_A greater or equal T_CRIT */ 00358 } MCP9808_t_a_ta_vs_tcrit_t; 00359 00360 00361 00362 /* TA_VS_TUPPER <14> 00363 * NOTE: N/A. 00364 */ 00365 typedef enum { 00366 T_A_TA_VS_TUPPER_MASK = ( 1U << 14U ), /*!< T_A mask */ 00367 T_A_TA_VS_TUPPER_TA_LOWER__IQUAL_TUPPER = ( 0U << 14U ), /*!< T_A lower or equal T_UPPER */ 00368 T_A_TA_VS_TUPPER_TA_GREATER_TUPPER = ( 1U << 14U ) /*!< T_A greater T_UPPER */ 00369 } MCP9808_t_a_ta_vs_tupper_t ; 00370 00371 00372 00373 /* TA_VS_LOWER <13> 00374 * NOTE: N/A. 00375 */ 00376 typedef enum { 00377 T_A_TA_VS_TLOWER_MASK = ( 1U << 13U ), /*!< T_A mask */ 00378 T_A_TA_VS_TLOWER_TA_LOWER_TLOWER = ( 1U << 13U ), /*!< T_A lower or equal T_LOWER */ 00379 T_A_TA_VS_TLOWER_TA_GREATER_EQUAL_TLOWER = ( 0U << 13U ) /*!< T_A greater T_LOWER */ 00380 } MCP9808_t_a_ta_vs_tlower_t ; 00381 00382 00383 00384 /* TA_SIGN <12> 00385 * NOTE: N/A. 00386 */ 00387 typedef enum { 00388 T_A_TA_SIGN_MASK = ( 1U << 12U ), /*!< T_A SIGN mask */ 00389 T_A_TA_SIGN_POSITIVE = ( 0U << 12U ), /*!< T_A positive */ 00390 T_A_TA_SIGN_NEGATIVE = ( 1U << 12U ) /*!< T_A negative */ 00391 } MCP9808_t_a_sign_t ; 00392 00393 00394 00395 /* TA_INTEGRAL <11:4> 00396 * NOTE: N/A. 00397 */ 00398 typedef enum { 00399 T_A_TA_INTEGRAL_PART_MASK = ( 0b11111111 << 4U ) /*!< T_A integral part */ 00400 } MCP9808_t_a_integral_t ; 00401 00402 00403 00404 /* TA_DECIMAL <3:0> 00405 * NOTE: N/A. 00406 */ 00407 typedef enum { 00408 T_A_TA_DECIMAL_PART_MASK = ( 0b1111 << 0U ) /*!< T_A decimal part */ 00409 } MCP9808_t_a_decimal_t ; 00410 00411 00412 00413 00414 /** 00415 * @brief RESOLUTION REGISTER 00416 */ 00417 /* RESOLUTION <1:0> 00418 * NOTE: N/A. 00419 */ 00420 typedef enum { 00421 RESOLUTION_MASK = ( 0b11 << 0U ), /*!< Resolution mask */ 00422 RESOLUTION_0_5_C = ( 0b00 << 0U ), /*!< Resolution: +0.5C */ 00423 RESOLUTION_0_25_C = ( 0b01 << 0U ), /*!< Resolution: +0.25C */ 00424 RESOLUTION_0_125_C = ( 0b10 << 0U ), /*!< Resolution: +0.125C */ 00425 RESOLUTION_0_0625_C = ( 0b11 << 0U ) /*!< Resolution: +0.0625C [ Default ] */ 00426 } MCP9808_resolution_t; 00427 00428 00429 00430 00431 00432 00433 #ifndef MCP9808_VECTOR_STRUCT_H 00434 #define MCP9808_VECTOR_STRUCT_H 00435 typedef struct { 00436 MCP9808_config_thyst_t t_hyst; /*!< Temperature Limit Hysteresis */ 00437 MCP9808_config_shdn_t shdn; /*!< Shutdown mode */ 00438 MCP9808_config_crit_lock_t t_crit; /*!< T_CRIT lock bit */ 00439 MCP9808_config_win_lock_t t_win_lock; /*!< Win. Lock bit */ 00440 MCP9808_conf_int_clear_t int_clear; /*!< Interrupt clear bit */ 00441 MCP9808_config_alert_stat_t alert_stat; /*!< Alert output status bit */ 00442 MCP9808_config_alert_cnt_t alert_cnt; /*!< Alert Output control bit */ 00443 MCP9808_config_alert_sel_t alert_sel; /*!< Alert Output select bit */ 00444 MCP9808_config_alert_pol_t alert_pol; /*!< Alert Output polarity bit */ 00445 MCP9808_config_alert_mod_t alert_mod; /*!< Alert Output mode bit */ 00446 } MCP9808_config_reg_t; 00447 00448 00449 typedef struct { 00450 float t_a; /*!< Ambient temperature value */ 00451 uint16_t t_a_raw; /*!< Raw ambient temperature value */ 00452 00453 MCP9808_t_a_sign_t t_a_sign; /*!< Ambient temperature sign */ 00454 MCP9808_t_a_ta_vs_tcrit_t ta_vs_tcrit; /*!< T_A vs T_CRIT result */ 00455 MCP9808_t_a_ta_vs_tupper_t ta_vs_tupper; /*!< T_A vs T_UPPER result */ 00456 MCP9808_t_a_ta_vs_tlower_t ta_vs_tlower; /*!< T_A vs T_LOWER result */ 00457 00458 MCP9808_resolution_t resolution; /*!< Device resolution */ 00459 00460 float t_upper; /*!< T_UPPER limit */ 00461 float t_lower; /*!< T_LOWER limit */ 00462 float t_crit; /*!< T_CRIT limit */ 00463 00464 uint16_t manufacturerID; /*!< Manufacturer ID */ 00465 uint8_t deviceID; /*!< Device ID */ 00466 uint8_t deviceRevision; /*!< Device Revision */ 00467 } MCP9808_data_t; 00468 #endif 00469 00470 00471 /** 00472 * @brief INTERNAL CONSTANTS 00473 */ 00474 typedef enum { 00475 MCP9808_SUCCESS = 0U, 00476 MCP9808_FAILURE = 1U, 00477 I2C_SUCCESS = 0U /*!< I2C communication was fine */ 00478 } MCP9808_status_t; 00479 00480 00481 00482 00483 /** Create an MCP9808 object connected to the specified I2C pins. 00484 * 00485 * @param sda I2C data pin 00486 * @param scl I2C clock pin 00487 * @param addr I2C slave address 00488 * @param freq I2C frequency 00489 */ 00490 MCP9808 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); 00491 00492 /** Delete MCP9808 object. 00493 */ 00494 ~MCP9808(); 00495 00496 /** It gets CONFIG register value. 00497 */ 00498 MCP9808_status_t MCP9808_GetCONFIG ( MCP9808_config_reg_t* myCONFIG ); 00499 00500 /** It sets CONFIG register value. 00501 */ 00502 MCP9808_status_t MCP9808_SetCONFIG ( MCP9808_config_reg_t myCONFIG ); 00503 00504 /** It sets temperature limit for: T_UPPER, T_LOWER or T_CRIT. 00505 */ 00506 MCP9808_status_t MCP9808_SetT_Limit ( MCP9808_registers_t myTLimit, MCP9808_data_t myTValue_Limit ); 00507 00508 /** It gets temperature limit for: T_UPPER, T_LOWER or T_CRIT. 00509 */ 00510 MCP9808_status_t MCP9808_GetT_Limit ( MCP9808_registers_t myTLimit, MCP9808_data_t* myTValue_Limit); 00511 00512 /** It gets ambient temperature register ( raw value ). 00513 */ 00514 MCP9808_status_t MCP9808_GetRawTA ( MCP9808_data_t* myRawTA ); 00515 00516 /** It gets ambient temperature register ( Celsius degrees ). 00517 */ 00518 MCP9808_status_t MCP9808_GetTA ( MCP9808_data_t* myTA ); 00519 00520 /** It gets manufacturer ID. 00521 */ 00522 MCP9808_status_t MCP9808_GetManufacturerID ( MCP9808_data_t* myManufacturerID ); 00523 00524 /** It gets both device ID and device revision. 00525 */ 00526 MCP9808_status_t MCP9808_GetDeviceID ( MCP9808_data_t* myDeviceID ); 00527 00528 /** It sets the sensor resolution. 00529 */ 00530 MCP9808_status_t MCP9808_SetResolution ( MCP9808_data_t myResolution ); 00531 00532 /** It gets the sensor resolution. 00533 */ 00534 MCP9808_status_t MCP9808_GetResolution ( MCP9808_data_t* myResolution ); 00535 00536 00537 00538 00539 private: 00540 I2C _i2c; 00541 uint32_t _MCP9808_Addr; 00542 }; 00543 00544 #endif
Generated on Sat Jul 23 2022 05:40:28 by
1.7.2