⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temp.c

📁 Discription: This multi-master driver provides the software interface to the I2C Bus hardware of th
💻 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 + -