код
Код
main
{
I2C_Init();
I2C_Transfer();
}
void I2C_Init(void)
{
PCONP_bit.PCI2C0 = 1;
I2C0SCLH = 0x0191;
I2C0SCLL = 0x0190;
PINSEL1_bit.P0_27 = 1;
PINSEL1_bit.P0_28 = 1;
I2C0CONCLR = 0xFF;
VIC_SetVectoredIRQ(I2C0IntrHandler, 0, VIC_I2C0);
VICINTENABLE |= 1 << VIC_I2C0;
I2C0CONSET_bit.I2EN = 1;
}
void I2C_Transfer(void)
{
I2C0CONSET_bit.STA = 1;
}
void I2C0IntrHandler (void)
{
switch(I2C0STAT)
{
case(0x08): //старт проходит нормально, а дальше в I2C0STAT 0xF8
I2C0DAT = 0xC0;
I2C0CONCLR_bit.STAC = 1;
break;
case(0x18):
I2C0DAT = 0x09;
break;
default:
FIO2CLR_bit.P2_10=1;
break;
}
I2C0CONCLR_bit.SIC = 1;
}
{
I2C_Init();
I2C_Transfer();
}
void I2C_Init(void)
{
PCONP_bit.PCI2C0 = 1;
I2C0SCLH = 0x0191;
I2C0SCLL = 0x0190;
PINSEL1_bit.P0_27 = 1;
PINSEL1_bit.P0_28 = 1;
I2C0CONCLR = 0xFF;
VIC_SetVectoredIRQ(I2C0IntrHandler, 0, VIC_I2C0);
VICINTENABLE |= 1 << VIC_I2C0;
I2C0CONSET_bit.I2EN = 1;
}
void I2C_Transfer(void)
{
I2C0CONSET_bit.STA = 1;
}
void I2C0IntrHandler (void)
{
switch(I2C0STAT)
{
case(0x08): //старт проходит нормально, а дальше в I2C0STAT 0xF8
I2C0DAT = 0xC0;
I2C0CONCLR_bit.STAC = 1;
break;
case(0x18):
I2C0DAT = 0x09;
break;
default:
FIO2CLR_bit.P2_10=1;
break;
}
I2C0CONCLR_bit.SIC = 1;
}