コード例 #1
0
ファイル: twi.c プロジェクト: cybertux/minotaurus
int twi_write(uint8_t chip, uint8_t addr, uint8_t *buffer, int len)
{
	if(NULL == buffer )
	{
		return 1;
	}
	/* start the read sequence with a address write!*/
	if (!TWIM_Start (SlaveAddress, TWIM_WRITE))
	{
		TWIM_Stop ();
		printf ("Could not start TWI Bus for READ\n");
		return 1;
	}

	/* write address to slave, this points the address pointer a the given address on the slave */
	if(!TWIM_Write(addr))
	{
		TWIM_Stop ();
		printf ("Could not write the target address onto the bus \n");
		return 1;
	}	
	for(int i = 0; i < len; i++ )
	{
		if(!TWIM_Write(addr))
		{
			TWIM_Stop ();
			printf ("Could not write the target address onto the bus \n");
			return 1;
		}
	}
	/* stop the write sequence */
	TWIM_Stop (void);
	return 0;
}
コード例 #2
0
ファイル: i2c.c プロジェクト: polygon/imu3000
uint8_t I2C_Write(uint8_t reg, uint8_t value)
{
  if (TWIM_Start(addr, TWIM_WRITE))
    if (TWIM_Write(reg))
      if (TWIM_Write(value))
      {
        TWIM_Stop();
        return 1;
      }
  TWIM_Stop();
  return 0;
}
コード例 #3
0
ファイル: i2c.c プロジェクト: polygon/imu3000
uint8_t I2C_Read(uint8_t reg, uint8_t* buffer)
{
  if (TWIM_Start(addr, TWIM_WRITE))
    if (TWIM_Write(reg))
      if (TWIM_Start(addr, TWIM_READ))
      {
        *buffer = TWIM_ReadNack();
        TWIM_Stop();
        return 1;
      }
  TWIM_Stop();
  return 0;
}
コード例 #4
0
ファイル: twi.c プロジェクト: cybertux/minotaurus
int twi_read(uint8_t slaveAdress, uint8_t addr, uint8_t *buffer, int len)
{
	if(NULL == buffer)
	{
          return 1;
	}

	/* start the read sequence with a address write!*/
	if (!TWIM_Start (SlaveAddress, TWIM_WRITE))
	{
		TWIM_Stop ();
		printf ("Could not start TWI Bus for READ\n");
		return 1;
	}

	/* write address to slave, this points the address pointer a the given address on the slave */
	if(!TWIM_Write(addr))
	{
		TWIM_Stop ();
		printf ("Could not write the target address onto the bus \n");
		return 1;
	}
	
	/* send repeated start sequence */
	if (!TWIM_Start (SlaveAddress, TWIM_READ))
	{
		TWIM_Stop ();
		printf ("Could not start TWI Bus for READ\n");
		return 1;
	}
	/* read the data */	
	for(int i = 0; i < len; i++)
	{
		buffer[i] = TWIM_ReadAck();
	}
	/* the last byte is followed by a NACK */
	TWIM_ReadNack();
	/* Stop the */	
	TWIM_Stop();	
	return 0;
}