Datasheet
2015-2017 Microchip Technology Inc. DS20005426C-page 17
MCP9600
FIGURE 4-3: Timing Diagram to Set a Register Pointer and Read a Two-Byte Data.
SDA
A
C
K
1100
A
0000
A
C
K
S
2
A
1
A
0
12345678 12345678
SCL
0
Address Byte
MCP9600
W 0xx P
A
C
K
1100
A
MSB Data
A
C
K
N
A
K
S P
2
A
1
A
0
12345678 12345678 12345678
Address Byte LSB Data
R
MCP9600
Master Master
SDA
SCL
00000001 10010100
MCP9600 Clock Stretching
TABLE 4-2: POINTERS
Read-Only
Registers
Pointer
T
H
0000 0000
T
∆
0000 0001
T
C
0000 0010
Note: this is an example pseudo routine:
i2c_start(); // send START command
i2c_write(b’1100 0000’); // WRITE Command
// also, make sure bit 0 is cleared ‘0’
i2c_write(b’0000 00XX’); // Write T
H
, T
∆
, or T
C
registers
i2c_stop(); // send STOP command
i2c_start(); // send START command
i2c_write(b’1100 0001’); // READ Command
// also, make sure bit 0 is set ‘1’
UpperByte = i2c_read(ACK); // READ 8 bits
// and Send ACK bit
LowerByte = i2c_read(NAK); // READ 8 bits
// and Send NAK bit
i2c_stop(); // send STOP command
//Convert the temperature data
if ((UpperByte & 0x80) == 0x80){ //T
A
0°C
Temperature = (UpperByte x 16 + LowerByte / 16) - 4096;
}else //T
A
0°C
Temperature = (UpperByte x 16 + LowerByte / 16);
//Temperature = Ambient Temperature (°C)










