如何将16位数据写入I2c协议
How to write a 16bit data to I2c protocol
我正在制作一个程序,其中我使用 I2C 将 INA226 与 atmega8 连接起来。我需要用值 4127h
写入它的寄存器。以下是我完成的代码。当我读取寄存器时,我得到 41 FF
。这意味着我可以写 41 但不能写 27。我该怎么做呢?
此外,当我尝试将值从 4127h
更改为 3637h
(只是为了检查)时,它不会发生变化并显示旧值 41 Ff
。
请帮忙,谢谢。
代码
i2c_init();
i2c_start();
i2c_write(0b10000000); //slave address
i2c_write(0x00); //register address
i2c_write(0x41); // data
i2c_write(0x27); // data
i2c_stop();
i2c_start();
i2c_write(0b10000001);
temp1 = i2c_read(1);
temp2 = i2c_read(0);
i2c_stop();
enter code here
unsigned int_16 DATA=4127
i2c_init();
i2c_start();
i2c_write(0b10000000); //slave address
i2c_write(0x00); //register address
i2c_write((int)DATA>>8); // data OF MSB
i2c_write((int)DATA & 0XFF); // data OF LSB
i2c_stop();
我正在制作一个程序,其中我使用 I2C 将 INA226 与 atmega8 连接起来。我需要用值 4127h
写入它的寄存器。以下是我完成的代码。当我读取寄存器时,我得到 41 FF
。这意味着我可以写 41 但不能写 27。我该怎么做呢?
此外,当我尝试将值从 4127h
更改为 3637h
(只是为了检查)时,它不会发生变化并显示旧值 41 Ff
。
请帮忙,谢谢。
代码
i2c_init();
i2c_start();
i2c_write(0b10000000); //slave address
i2c_write(0x00); //register address
i2c_write(0x41); // data
i2c_write(0x27); // data
i2c_stop();
i2c_start();
i2c_write(0b10000001);
temp1 = i2c_read(1);
temp2 = i2c_read(0);
i2c_stop();
enter code here
unsigned int_16 DATA=4127
i2c_init();
i2c_start();
i2c_write(0b10000000); //slave address
i2c_write(0x00); //register address
i2c_write((int)DATA>>8); // data OF MSB
i2c_write((int)DATA & 0XFF); // data OF LSB
i2c_stop();