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.
TMP175.h
00001 /* 00002 \file TMP175.h 00003 \version: 1.0 00004 00005 \brief Este fichero contiene funciones para control de TMP175/75 00006 00007 \web www.micros-designs.com.ar 00008 \date 02/02/11 00009 00010 *- Version Log --------------------------------------------------------------* 00011 * Fecha Autor Comentarios * 00012 *----------------------------------------------------------------------------* 00013 * 02/02/11 Suky Original * 00014 *----------------------------------------------------------------------------*/ 00015 /////////////////////////////////////////////////////////////////////////// 00016 //// //// 00017 //// //// 00018 //// (C) Copyright 2011 www.micros-designs.com.ar //// 00019 //// Este c�digo puede ser usado, modificado y distribuido libremente //// 00020 //// sin eliminar esta cabecera y sin garant�a de ning�n tipo. //// 00021 //// //// 00022 //// //// 00023 /////////////////////////////////////////////////////////////////////////// 00024 #include "mbed.h" 00025 00026 00027 class TMP175{ 00028 public: 00029 #define SHUTDOWN_MODE_OFF 0x00 00030 #define SHUTDOWN_MODE_ON 0x01 00031 #define COMPARATOR_MODE 0x00 00032 #define INTERRUPT_MODE 0x02 00033 #define POLARITY_0 0x00 00034 #define POLARITY_1 0x04 00035 #define FAULT_QUEUE_1 0x00 00036 #define FAULT_QUEUE_2 0x08 00037 #define FAULT_QUEUE_4 0x10 00038 #define FAULT_QUEUE_6 0x18 00039 #define RESOLUTION_9 0x00 00040 #define RESOLUTION_10 0x20 00041 #define RESOLUTION_11 0x40 00042 #define RESOLUTION_12 0x60 00043 #define ONE_SHOT 0x80 00044 TMP175(PinName PIN_SDA, PinName PIN_SCL, PinName PIN_ALERT=NC); 00045 void vSetConfigurationTMP175(unsigned char Config,unsigned char Address); 00046 void vStartSingleConversionTMP175(void); 00047 float fReadTemperatureTMP175(void); 00048 void vSetTemperatureLowTMP175(float Value); 00049 void vSetTemperatureHighTMP175(float Value); 00050 float fReadTemperatureHighTMP175(void); 00051 float fReadTemperatureLowTMP175(void); 00052 bool bReadPinAlertTMP175(void); 00053 #ifdef MBED_OPERATORS 00054 operator float(); 00055 #endif 00056 protected: 00057 unsigned char _Address, Rotar; 00058 float Factor; 00059 unsigned short Mascara; 00060 I2C Bus; 00061 DigitalIn _PIN_ALERT; 00062 }; 00063 00064 TMP175::TMP175(PinName PIN_SDA, PinName PIN_SCL, PinName PIN_ALERT) 00065 :Bus(PIN_SDA,PIN_SCL),_PIN_ALERT(PIN_ALERT){ 00066 } 00067 00068 void TMP175::vSetConfigurationTMP175(unsigned char Config,unsigned char Address){ 00069 00070 _Address=Address<<1; 00071 switch(Config&0x60){ 00072 case 0x00: 00073 Factor=0.5; 00074 Mascara=0x00FF; 00075 Rotar=3; 00076 break; 00077 case 0x20: 00078 Factor=0.25; 00079 Mascara=0x01FF; 00080 Rotar=2; 00081 break; 00082 case 0x40: 00083 Factor=0.125; 00084 Mascara=0x03FF; 00085 Rotar=1; 00086 break; 00087 case 0x60: 00088 Factor=0.0625; 00089 Mascara=0x07FF; 00090 Rotar=0; 00091 break; 00092 } 00093 00094 Bus.start(); 00095 Bus.write(_Address&0xFE); 00096 Bus.write(0x01); 00097 Bus.write(Config); 00098 Bus.stop(); 00099 } 00100 00101 void TMP175::vSetTemperatureLowTMP175(float Value){ 00102 unsigned short Temp; 00103 00104 if(Value>=0.0){ 00105 Temp=Value/0.0625; 00106 }else{ 00107 Temp=(Value+128.0)/0.0625; 00108 //Temp!=0x0800; 00109 } 00110 Temp<<=4; 00111 00112 Bus.start(); 00113 Bus.write(_Address&0xFE); 00114 Bus.write(0x02); 00115 Bus.write(*((unsigned char *)&Temp+1)); 00116 Bus.write(*((unsigned char *)&Temp)); 00117 Bus.stop(); 00118 } 00119 00120 float TMP175::fReadTemperatureLowTMP175(void){ 00121 unsigned short Temp; 00122 float Cal; 00123 00124 Bus.start(); 00125 Bus.write(_Address&0xFE); 00126 Bus.write(0x02); 00127 Bus.start(); 00128 Bus.write(_Address | 0x01); 00129 *((unsigned char *)&Temp+1)=Bus.read(1); 00130 *((unsigned char *)&Temp)=Bus.read(0); 00131 Bus.stop(); 00132 00133 Temp>>=4; 00134 Cal=Temp*0.0625; 00135 if((0x0800&Temp)!=0x0000){ 00136 Cal-=128.0; 00137 } 00138 00139 return(Cal); 00140 } 00141 00142 void TMP175::vSetTemperatureHighTMP175(float Value){ 00143 unsigned short Temp; 00144 00145 if(Value>=0.0){ 00146 Temp=Value/0.0625; 00147 }else{ 00148 Temp=(Value+128.0)/0.0625; 00149 //Temp!=0x0800; 00150 } 00151 Temp<<=4; 00152 00153 Bus.start(); 00154 Bus.write(_Address&0xFE); 00155 Bus.write(0x03); 00156 Bus.write(*((unsigned char *)&Temp+1)); 00157 Bus.write(*((unsigned char *)&Temp)); 00158 Bus.stop(); 00159 } 00160 00161 float TMP175::fReadTemperatureHighTMP175(void){ 00162 unsigned short Temp; 00163 float Cal; 00164 00165 Bus.start(); 00166 Bus.write(_Address&0xFE); 00167 Bus.write(0x03); 00168 Bus.start(); 00169 Bus.write(_Address | 0x01); 00170 *((unsigned char *)&Temp+1)=Bus.read(1); 00171 *((unsigned char *)&Temp)=Bus.read(0); 00172 Bus.stop(); 00173 00174 Temp>>=4; 00175 Cal=Temp*0.0625; 00176 if((0x0800&Temp)!=0x0000){ 00177 Cal-=128.0; 00178 } 00179 00180 return(Cal); 00181 } 00182 00183 float TMP175::fReadTemperatureTMP175(void){ 00184 unsigned short Temp; 00185 float Cal; 00186 00187 Bus.start(); 00188 Bus.write(_Address&0xFE); 00189 Bus.write(0x00); 00190 Bus.start(); 00191 Bus.write(_Address | 0x01); 00192 *((unsigned char *)&Temp+1)=Bus.read(1); 00193 *((unsigned char *)&Temp)=Bus.read(0); 00194 Bus.stop(); 00195 00196 Temp>>=(Rotar+4); 00197 Cal=((float)Factor*(Temp&Mascara)); 00198 if(((~Mascara)&Temp)!=0x0000){ 00199 Cal-=128.0; 00200 } 00201 00202 return(Cal); 00203 } 00204 00205 // Only SHUTDOWN MODE 00206 void TMP175::vStartSingleConversionTMP175(void){ 00207 unsigned char Temp; 00208 00209 Bus.start(); 00210 Bus.write(_Address&0xFE); 00211 Bus.write(0x01); 00212 Bus.start(); 00213 Bus.write(_Address | 0x01); 00214 Temp=Bus.read(0); 00215 Bus.stop(); 00216 00217 Bus.start(); 00218 Bus.write(_Address&0xFE); 00219 Bus.write(0x01); 00220 Bus.write(Temp|0x80); 00221 Bus.stop(); 00222 } 00223 00224 TMP175::operator float(){ 00225 00226 return(fReadTemperatureTMP175()); 00227 } 00228 00229 bool TMP175::bReadPinAlertTMP175(void){ 00230 00231 return(_PIN_ALERT); 00232 }
Generated on Sun Aug 7 2022 19:49:12 by
1.7.2