Ejemplo n.º 1
0
// Write bit to IMU
void TWI_WriteBit(unsigned char reg, unsigned char bit_num, unsigned char data ){
	int read_aux[1];	
	unsigned char data_add = 0;
	
	TWI_Read(reg, read_aux, 1);							// Read byte of a registry of IMU
	if (data == True) data_add |= (1 << bit_num);		// Select false or true for bit to write
		else data_add &= ~(1 << bit_num);				
	read_aux[0] |= data_add;							// Compound new data with bit for write	
	TWI_Write(reg, read_aux[0]);						// Write byte actualized	
}
Ejemplo n.º 2
0
/*!
    Reads data (using the given \a twi peripheral) from an AK4146 starting with
    a particular \a registerAddress and stores it in the provided \a buffer.
    Data is read until the buffer is filled to its \a bufferSize.

    This function returns true if the read operation was successful; otherwise
    it returns false.
 */
inline unsigned char AK4641_Read(AT91S_TWI *twi,
                                 void *buffer,
                                 unsigned int bufferSize,
                                 unsigned char registerAddress)
{
    return TWI_Read(twi,
                    buffer,
                    bufferSize,
                    AK4641_SLAVEADDRESS,
                    registerAddress,
                    1);
}
Ejemplo n.º 3
0
unsigned char Read24C64_Byte(unsigned char devAddr, unsigned int regAddr) {
         unsigned char val;
         
         TWI_Start();
         TWI_Write(0b10100000);//_WRITE_MODE(devAddr));
         TWI_Write(regAddr>>8);          // MSB Byte first
         TWI_Write(regAddr);             // LSB Byte afterward
         TWI_Start();                    // Repeated start
         TWI_Write(0b10100001);//_READ_MODE(devAddr));
         val = TWI_Read(0u);
         TWI_Stop();
         
         return val;
}
Ejemplo n.º 4
0
void PCF_Read(uint8_t addr, uint8_t *data, uint8_t count) {
	TWI_Start();

	TWI_Write(PCF8563_WRITE_ADDR);
	TWI_Write(addr);

	TWI_Stop();
	TWI_Start();

	TWI_Write(PCF8563_READ_ADDR);

	while (count)
	{
		count--;

		*data = TWI_Read(count);
		data++;
	}

	TWI_Stop();

}
Ejemplo n.º 5
0
/*
 * Liest "2" Register (aufeinander folgende Register e.g.: 0x01, 0x02)
 */
short TWI_readRegister2(uint8_t i2cAdr, uint8_t regAdr) {
	uint8_t reply[4];
	uint8_t n_Byte = 2;

	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_WRITE) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Write");
		uart_writeAbsatz();
	}
	if (TWI_Write_Func(regAdr) == 0) {
		//Error
		uart_writeString("TWI Error regAdr Write");
		uart_writeAbsatz();
	}
	TWI_Stop();

	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_READ) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Write");
		uart_writeAbsatz();
	}
	if (TWI_Read(reply, n_Byte) == 0) {
		//Error
		uart_writeString("TWI Error Read Int");
		uart_writeAbsatz();
	}
	TWI_Stop();
	return (short) reply[0] << 8 | reply[1];
}
Ejemplo n.º 6
0
/*
 * Liest "1" Register
 */
char TWI_readRegister(uint8_t i2cAdr, uint8_t regAdr) {
	uint8_t reply[3];
	uint8_t n_Byte = 1;

	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_WRITE) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Write");
		uart_writeAbsatz();
	}
	if (TWI_Write_Func(regAdr) == 0) {
		//Error
		uart_writeString("TWI Error regAdr Write");
		uart_writeAbsatz();
	}
	TWI_Stop();

	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_READ) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Read");
		uart_writeAbsatz();
	}
	if (TWI_Read(reply, n_Byte) == 0) {
		//Error
		uart_writeString("TWI Error Read Byte");
		uart_writeAbsatz();
	}
	TWI_Stop();
	return reply[0];
}
Ejemplo n.º 7
0
void TWI_readRegisterN(uint8_t i2cAdr, uint8_t regAdr,uint8_t reply[], uint8_t n_Byte) {
//	uint8_t n_Byte = 6;
//	uint8_t reply[8];
	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_WRITE) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Write");
		uart_writeAbsatz();
	}
	if (TWI_Write_Func(regAdr) == 0) {
		//Error
		uart_writeString("TWI Error regAdr Write");
		uart_writeAbsatz();
	}
	TWI_Stop();

	if (TWI_Start() == 0) {
		//Error
		uart_writeString("TWI Error Start");
		uart_writeAbsatz();
	}
	if (TWI_Write_Addr(i2cAdr, TW_READ) == 0) {
		//Error
		uart_writeString("TWI Error i2cAdr Write");
		uart_writeAbsatz();
	}
	if (TWI_Read(reply, n_Byte) == 0) {
		//Error
		uart_writeString("TWI Error Read Int");
		uart_writeAbsatz();
	}
	TWI_Stop();
}