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 循环处停止并且不再继续。