2015-03-24 2 views
0

Я делаю программу, в которой я взаимодействую с INA226 с помощью atmega8 с использованием I2C. Мне нужно записать его регистр со значением 4127h. Ниже приведен код, который я сделал. когда я читаю реестр, я получаю 41 FF. Это означает, что я могу писать 41, но не 27. Как я могу это сделать?Как записать 16-битные данные в протокол I2c

Также, когда я пытаюсь изменить значение, например, от 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(); 

ответ

0
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();