void i2m_AS72xx_topwrite(uint8_t virtualReg, uint8_t d)
{
uint8_t status;
TWI_timeout=TWI_timeout_time;
while (1)
{
//Read slave
I²C status to see if the write buffer is ready.
TWI_Buffer[0]=I2C_AS72XX_SLAVE_STATUS_REG;
FEHLER = twi0_send(AS7265_adr,TWI_Buffer,0x01);
FEHLER = twi0_receive(AS7265_adr,TWI_Buffer,0x01);
status = TWI_Buffer[0];
if ((status & I2C_AS72XX_SLAVE_TX_VALID) == 0)
// No inbound TX pending at slave. Okay to write now.
break ;
if(TWI_timeout==0)
{
break;
FEHLER=20;
}
_delay_ms(AS7265X_POLLING_DELAY);
}
//Send Data to virtual Register
TWI_Buffer[0]=(virtualReg | 0x80);
//Send 1 Bytes
FEHLER = twi0_send(AS7265_adr,TWI_Buffer,0x01);
TWI_timeout=TWI_timeout_time;
while (1)
{
//Read slave
I²C status to see if the write buffer is ready. //****** Die Sequenz wurde hier gestoppt ******
TWI_Buffer[0]=I2C_AS72XX_SLAVE_STATUS_REG;
FEHLER = twi0_send(AS7265_adr,TWI_Buffer,0x01);
FEHLER = twi0_receive(AS7265_adr,TWI_Buffer,0x01);
status = TWI_Buffer[0];
if ((status & I2C_AS72XX_SLAVE_TX_VALID) == 0)
// No inbound TX pending at slave. Okay to write now.
break ;
if(TWI_timeout==0)
{
break;
FEHLER=21;
}
_delay_ms(AS7265X_POLLING_DELAY);
}
//Send data
TWI_Buffer[0]=I2C_AS72XX_SLAVE_WRITE_REG;
TWI_Buffer[1]=d;
FEHLER=twi0_send(AS7265_adr,TWI_Buffer,0x2);
}
Lesezeichen