示例#1
0
文件: 24c01.c 项目: pal73/fat470
//-----------------------------------------------
long _24c01_read_4byte(short adr)
{
long temp;
//char temp1;
long temp_[4];

i2c_Start();
i2c_SendByte(0xa0);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_4byte;
i2c_SendByte((char)adr);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_4byte;
i2c_Restart();
i2c_SendByte(0xa1);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_4byte;
temp_[0]=i2c_ReadByte();
i2c_SendAcknowledge(1);
temp_[1]=i2c_ReadByte();
i2c_SendAcknowledge(1);
temp_[2]=i2c_ReadByte();
i2c_SendAcknowledge(1);
temp_[3]=i2c_ReadByte();
i2c_SendAcknowledge(0);
Stop_label_24c01_read_4byte: 
i2c_Stop();
temp_[0]&=0x000000ff;
temp_[1]<<=8;
temp_[1]&=0x0000ff00;
temp_[2]<<=16;
temp_[2]&=0x00ff0000;
temp_[3]<<=24;
temp_[3]&=0xff000000;
temp=temp_[0]+temp_[1]+temp_[2]+temp_[3];
return temp;
}
示例#2
0
// Read a char from servo ic
uint8_t i2c_slave_read(uint8_t slave_address, uint8_t address)
{
	uint8_t read_byte;
	// Read one byte (i.e. servo pos of one servo)
	i2c_Start();      					// send Start
	i2c_Address(slave_address, I2C_WRITE);	// Send slave address with write operation
	i2c_Write(address);					// Set register for servo 0
	i2c_Restart();						// Restart
	i2c_Address(slave_address, I2C_READ);	// Send slave address with read operation
	read_byte = i2c_Read(0);			// Read one byte
										// If more than one byte to be read, (0) should
										// be on last byte only
										// e.g.3 bytes= i2c_Read(1); i2c_Read(1); i2c_Read(0);
   	i2c_Stop();							// send Stop
	return read_byte;					// return byte. If reading more than one byte
										// 				store in an array
}
示例#3
0
文件: 24c01.c 项目: pal73/fat470
//-----------------------------------------------
short _24c01_read_2byte(short adr)
{
short temp;
char temp1;
i2c_Start();
i2c_SendByte(0xa0);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_2byte;
i2c_SendByte((char)adr);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_2byte;
i2c_Restart();
i2c_SendByte(0xa1);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_2byte;
temp1=i2c_ReadByte();
i2c_SendAcknowledge(1);
temp=i2c_ReadByte();
i2c_SendAcknowledge(0);
Stop_label_24c01_read_2byte: 
i2c_Stop();
temp<<=8;
temp+=temp1;
return temp;
}
示例#4
0
文件: 24c01.c 项目: pal73/fat470
//-----------------------------------------------
void _24c01_read_nbyte(short adr, char* buff, char n)
{
char i;
i2c_Start();
i2c_SendByte(0xa0);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_nbyte;
i2c_SendByte((char)adr);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_nbyte;
i2c_Restart();
i2c_SendByte(0xa1);
if(i2c_ReadAcknowledge()) goto Stop_label_24c01_read_nbyte;
for(i=0;i<(n-1);i++)
	{
	buff[i]=i2c_ReadByte();
	i2c_SendAcknowledge(1);
	}
buff[i]=i2c_ReadByte();
i2c_SendAcknowledge(0);
Stop_label_24c01_read_nbyte: 
i2c_Stop();

}
示例#5
0
void readMag(int magArr[3]){
        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_xH_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int xH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_xL_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int xL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_yH_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int yH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_yL_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int yL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_zH_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int zH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(mag_i2c_addr,I2C_WRITE);
        i2c_Write(mag_zL_addr);
        i2c_Restart(mag_i2c_addr,I2C_READ);
        unsigned int zL = i2c_ReadFinal();
        i2c_ResetBus();

        magArr[0] = (xH<<8) | xL;
        magArr[1] = (yH<<8) | yL;
        magArr[2] = (zH<<8) | zL;
}//end read mag
示例#6
0
void readGyr(int gyrArr[6]){
        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_xH_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int xH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_xL_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int xL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_yH_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int yH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_yL_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int yL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_zH_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int zH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(gyr_i2c_addr,I2C_WRITE);
        i2c_Write(gyr_zL_addr);
        i2c_Restart(gyr_i2c_addr,I2C_READ);
        unsigned int zL = i2c_ReadFinal();
        i2c_ResetBus();

        gyrArr[0] = (xH<<8) | xL;
        gyrArr[1] = (yH<<8) | yL;
        gyrArr[2] = (zH<<8) | zL;
}
示例#7
0
void readAcc(int accArr[6]){
        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_xH_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int xH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_xL_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int xL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_yH_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int yH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_yL_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int yL = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_zH_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int zH = i2c_ReadFinal();
        i2c_ResetBus();

        i2c_Start(acc_i2c_addr,I2C_WRITE);
        i2c_Write(acc_zL_addr);
        i2c_Restart(acc_i2c_addr,I2C_READ);
        unsigned int zL = i2c_ReadFinal();
        i2c_ResetBus();

        accArr[0] = (xH<<8) + xL;
        accArr[1] = (yH<<8) + yL;
        accArr[2] = (zH<<8) + zL;
}