?? temp.c
字號:
/* Includes *************************************************************/
#include <stdlib.h>
#include "Types/BaseTypes.h"
#include "i2c.h"
/* Constants ************************************************************/
const byte l_yTempShift = 7;
const float l_fTempCoef = 0.5;
const byte l_yTempOffset = 0;
const float l_fTempCoef83 = 1.0;
const byte l_yTempOffset83 = 0;
/* Macros ***************************************************************/
/* Types ****************************************************************/
/* Variables ************************************************************/
/* Prototypes ***********************************************************/
/* Functions ************************************************************/
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This function returns the board temperature in degrees celvin or
TEMP_ERROR.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
extern byte getTemp ( word i2cAddress )
{
byte ans;
word wRes;
ans = masterReadI2C( 0x02, (byte *) &wRes, i2cAddress);
if( ans != stat_success)
{
wRes = TEMP_NOT_AVAILABLE;
return (byte) wRes;
}
// swap byte order
wRes = ((wRes & 0xff00) >> 8) | ((wRes & 0x00ff) << 8);
//negative value
if ( wRes & 0x8000 )
{
wRes = ~wRes+1 ; //two's complement
wRes &= 0x7FFF ;
wRes >>= l_yTempShift ;
wRes = wRes * l_fTempCoef;// * -1;
wRes = ~wRes+1 ; //two's complement
}
//positive value
else
{
wRes >>= l_yTempShift;
wRes = wRes * l_fTempCoef;
}
wRes = wRes + l_yTempOffset;
return (byte) wRes;
}
extern byte getTemp83 ( word i2cAddress, byte commandReg )
{
byte bRes;
if( masterWriteI2C( 0x01, &commandReg, i2cAddress ) != stat_success) //Command register init.
{
bRes = TEMP_NOT_AVAILABLE;
return bRes;
}
else
{
if( masterReadI2C( 0x01, &bRes, i2cAddress ) != stat_success)
{
bRes = TEMP_NOT_AVAILABLE;
return bRes;
}
}
//negative value
if ( bRes & 0x80 )
{
bRes = ~bRes+1 ; //two's complement
bRes &= 0x7F ;
bRes = bRes * l_fTempCoef83 ; // * -1;
bRes = ~bRes+1 ; //two's complement
}
//positive value
else
{
bRes = bRes * l_fTempCoef83;
}
bRes = bRes + l_yTempOffset83;
return bRes;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -