Hello i have first project with i2c port my problem is from code "rIICCON" what is this ? and meaning ? is this for ACK ? is this change for every i2c device ? this codes use in every device or need change? void initi2c() { rGPEUP |= 0xc000; //Pull-up disable rGPECON = rGPECON & ~(0xf<<28) | (0xa<<28); //GPE15:IICSDA , GPE14:IICSCL pISR_IIC = (unsigned)IicInt; rINTMSK &= ~(BIT_IIC); //Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16 // If PCLK 50.7MHz, IICCLK = 3.17MHz, Tx Clock = 0.198MHz rIICCON = (1<<7) | (0<<6) | (1<<5) | (0xf); rIICADD = 0x10; //2440 slave address = [7:1] rIICSTAT = 0x10; //IIC bus data output enable(Rx/Tx) rIICLC = (1<<2)|(1); // Filter enable, 15 clocks SDA output delay added by junon } void Wri2c(U32 slvAddr,U32 addr,U8 data) { _iicMode = WRDATA; _iicPt = 0; _iicData[0] = (U8)addr; _iicData[1] = data; _iicDataCount = 2; rIICDS = slvAddr; //0xa0 rIICSTAT = 0xf0; //MasTx,Start //Clearing the pending bit isn't needed because the pending bit has been cleared. while(_iicDataCount!=-1); _iicMode = POLLACK; while(1) { rIICDS = slvAddr; _iicStatus = 0x100; rIICSTAT = 0xf0; //MasTx,Start rIICCON = 0xaf; //Resumes IIC operation. while(_iicStatus==0x100); if(!(_iicStatus&0x1)) break; //When ACK is received } rIICSTAT = 0xd0; //Stop MasTx condition rIICCON = 0xaf; //Resumes IIC operation. Delay(1); //Wait until stop condtion is in effect. //Write is completed. } void Rdi2c(U32 slvAddr,U32 addr,U8 *data) { _iicMode = SETRDADDR; _iicPt = 0; _iicData[0] = (U8)addr; _iicDataCount = 1; rIICDS = slvAddr; rIICSTAT = 0xf0; //MasTx,Start //Clearing the pending bit isn't needed because the pending bit has been cleared. while(_iicDataCount!=-1); _iicMode = RDDATA; _iicPt = 0; _iicDataCount = 1; rIICDS = slvAddr; rIICSTAT = 0xb0; //MasRx,Start rIICCON = 0xaf; //Resumes IIC operation. while(_iicDataCount!=-1); *data = _iicData[1]; }