Бит ACKEN на PIC24FJ64GA002 не сбрасывается после последовательности подтверждения - PullRequest
0 голосов
/ 28 ноября 2018
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 и не движется дальше.

...