コード例 #1
0
ファイル: i2c.c プロジェクト: sannyas/avrlib
uint8_t	i2c_writeByte( uint8_t dev_addr, uint8_t data_addr, uint8_t data ){
	twi_start( );
	twi_send( I2C_ADDR_WRITE(dev_addr) );
	twi_send( data_addr );
	twi_send( data );
	twi_stop( );

	return 0;
}
コード例 #2
0
ファイル: i2c.c プロジェクト: sannyas/avrlib
uint8_t	i2c_writeBytes( uint8_t dev_addr, uint8_t data_addr, uint8_t *data, uint8_t data_len ){
	uint8_t i;
	twi_start( );
	twi_send( I2C_ADDR_WRITE(dev_addr) );
	twi_send( data_addr );
	for( i=0; i<data_len; ++i ){
		twi_send( data[i] );
	}
	twi_stop();

	return 0;
}
コード例 #3
0
ファイル: i2c.c プロジェクト: sannyas/avrlib
uint8_t	i2c_readByte( uint8_t dev_addr, uint8_t data_addr ){
	uint8_t data;

	twi_start( );
	twi_send( I2C_ADDR_WRITE(dev_addr) );
	twi_send( data_addr );
	twi_start( );
	twi_send( I2C_ADDR_READ(dev_addr) );
	data = twi_recv( 0 );
	twi_stop();

	return data;
}
コード例 #4
0
ファイル: SeeedOLED.c プロジェクト: naito7/NightDoxFirmware
uint8_t SeeedOLED_sendCommand(unsigned char command)
{
  uint8_t ret = 0;
  twi_start();
  ret = twi_send((SeeedOLED_Address<<1)|0); // begin I2C communication & write
  if(ret) goto out;
  ret = twi_send(SeeedOLED_Command_Mode);        // Set OLED Command mode
  if(ret) goto out;
  ret = twi_send(command); 
 out:  
  twi_stop(); // End I2C communication
  return ret;
}
コード例 #5
0
ファイル: SeeedOLED.c プロジェクト: naito7/NightDoxFirmware
uint8_t SeeedOLED_sendData(unsigned char Data)
{
  uint8_t ret = 0;
  twi_start();
  ret = twi_send((SeeedOLED_Address<<1)|0); // begin I2C communication
  if(ret) goto out;
  ret = twi_send(SeeedOLED_Data_Mode);            // data mode
  if(ret) goto out;
  ret = twi_send(Data);
  if(ret) goto out;
 out:
  twi_stop(); // stop I2C transmission
  return ret;
}
コード例 #6
0
ファイル: i2c.c プロジェクト: sannyas/avrlib
uint8_t	i2c_readBytes( uint8_t dev_addr, uint8_t data_addr, uint8_t *data, uint8_t data_len ){
	uint8_t i;

	twi_start( );
	twi_send( I2C_ADDR_WRITE(dev_addr) );
	twi_send( data_addr );
	twi_start( );
	twi_send( I2C_ADDR_READ(dev_addr) );
	for( i=0; i<data_len-1; ++i ){
		data[i] = twi_recv( 1 );
	}
	data[i] = twi_recv( 0 );
	twi_stop();

	return data_len;
}
コード例 #7
0
void service_twi(void)
{
	if(!(TWI0->TWI_SR & TWI_SR_TXCOMP)){
		return;
	}
	wbuff *tx_wr = 0;
	int i = 0;
	//attempt dequeuing peripheral tx buffers in priority order
	tx_wr = dequeue(&fan_ctrltx_mqueue);
	if(tx_wr){
		twi_send(TWI0,tx_wr,FC_HARDWARE_ADDR);
		//Since the txbuff is only used by value,
		//It may be freed after the transfer is started
		free_wbuff(tx_wr);
	}
	/////For debug only////////////////////////////
	//currently nothing here...
	///////////////////////////////////////////////
}
コード例 #8
0
ファイル: twi.c プロジェクト: akafugu/VFD-Modular-Clock
// must be called in:
// slave tx event callback
// or after beginTransmission(address)
void twi_send_char(char* data)
{
  twi_send((uint8_t*)data, strlen(data));
}
コード例 #9
0
ファイル: main.c プロジェクト: jmesmon/reefdemon
void relay_begin(void)
{
	twi_send(0x20, relays);
}