Чтобы отправить от Slave(Tiny45) длинный байт
Код
for(;;)
{
if(usiTwiSlave.available())
{
//usiTwiSlave.receive();
usiTwiSlave.write((unsigned char)(Value >> 24));
usiTwiSlave.write((unsigned char)(Value >> 16));
usiTwiSlave.write((unsigned char)(Value >> 8));
usiTwiSlave.write((unsigned char)(Value >> 0));
}
}
в Master(Мега) нужно добавить задержки
Код
void ReadSensor()
{
I2c_StartWait(SENSOR_ADDR | W); // slave address, write to capsensor SENSOR_ADDR
I2c_Write(TWI_CMD_MASTER_READ);
I2c_RepStart(SENSOR_ADDR | R); // slave address + read bit, read capsensor SENSOR_ADDR
ValueOfCharge = (unsigned long)I2c_Read(I2C_ACK) << 24;
delay_ms(100);
ValueOfCharge |= (unsigned long)I2c_Read(I2C_ACK) << 16;
delay_ms(100);
ValueOfCharge |= (unsigned long)I2c_Read(I2C_ACK) << 8;
delay_ms(100);
ValueOfCharge |= (unsigned long)I2c_Read(I2C_NACK) << 0;
I2c_Stop();
}
Тини работает от 8МГц, Мега - на 20 МГц. При меньших задержках - не работает.