Вт июн 07, 2022 18:40:03
Вт июн 07, 2022 19:10:06
а у меня аппаратный i2c почти ничего не жрёт...~Dimon~ писал(а):Управление с AVR по I2C жрет очень много времени процессора
Вт июн 07, 2022 19:29:12
Вт июн 07, 2022 19:39:59
void I2C_IT_Function (void)
{
unsigned char Temp;
I2C_ERROR |= (I2C_ErrCode)(I2CSR2 & ERR); // Error status copied to global variable
Temp = I2CSR1;
if (Temp & SB) //EV5
{
I2CDR = Address7bit; //Send address
}
else if ((Temp & EVF) && (!(Temp & BTF)))// EV6
{
I2CCR |= PE;
}
else if (Temp & BTF) //EV7-EV8
{
/// Tx ///
if (!(Address7bit & I2C_RX_MODE))
{
if (TxCount-- > 0)
{
I2CDR = *(TxBuffer++);
}
else
{
if (CanStop)
{
I2C_Generate_Stop();
BusyFlag = 0;
}
else
{
Address7bit |= 0x01;
if (RxCount == 1)
{
I2C_ACK_Disable();
}
I2C_Generate_Start();
}
}
}
/// Rx ///
else
{
if (RxCount == 2)
{
I2C_ACK_Disable();
}
if (RxCount == 1)
{
I2C_Generate_Stop();
BusyFlag = 0;
}
if (RxCount-- > 0)
{
*(RxBuffer++) = I2CDR;
}
}
}
else
{
I2C_Interrupt_Disable();
}
}
Вт июн 07, 2022 23:47:17
Ср июн 08, 2022 02:20:11
Вт май 30, 2023 16:00:57