Getting a NACK after reading 1 byte from MCP9808 temperature sensor
You violate the sequence by clearing the ADDR bit first, and then setting ACK and POS bits. So the sequence in your code is not according to what the manual says. Clearing the ADDR bit already starts the transmission of next byte, so by the time the code goes to setting ACK and POS bits, it is too late to set them anymore, and it uses the settings where NAK is sent right after the first data byte instead of the second.