uint8_t i2c_read(void)
{
uint8_t u8_readData;
uint8_t u8_ackBit = 0;
while(I2C1CON & 0x1F); //wait for idle
I2C1CONbits.RCEN = 1; //prepare device to receive
while(I2C1CONbits.RCEN);
u8_readData = I2C1RCV; //write recieved data to variable
while(I2C1CON & 0x1F); //wait for idle
I2C1CONbits.ACKDT = u8_ackBit; //prepare to send ack bit
I2C1CONbits.ACKEN = 1; //transmit ack bit
//HERE IS MY PROBLEM
while(I2C1CONbits.ACKEN); //wait for idle
return(u8_readData);
}
Это часть моего кода, с которой у меня возникают проблемы, как показано в коде while (I2C1CONbits.ACKEN);не в состоянии очистить.Эта часть кода используется для подключения инфракрасного датчика (тип: семейство MLX90614) к Pic24.Мои соединения на макете верны, и я утроил, проверил это.Что происходит, когда я запускаю код, код останавливается в этом цикле while и не движется дальше.