Регистр TEMP_OUT 12-и битный. Имеет адрес 0х0В и 0х0А. Масштабный коэффициент (scale factor) -0.47. Вот и все что о нем известно из datasheet. Так вот равенство temperature = output_coding X scale_factor никак не выполняется. При комнатных условиях выходной код 0х04DE, а температура составляет -519*С! Как будто другой scale factor должен быть. Для регистров INCL_OUT и INCL_180_OUT выражение угол = utput_coding X scale_factor выполняется.

Может что неправильно делаю:
- запрос к регистру посылкой адреса;
- запись полученной информации в старший байт переменной Х;
- запрос к регистру посылкой произвольных данных;
- запись полученной информации в младший байт переменной Х;
- т.к. регистр TEMP_OUT 12-битный, маскирую старшие 4 бита нулями;
- перемножаю переменную Х и scale factor;
- вывожу результат.
Что неправильно?
Сообщение отредактировал elijah - Jul 7 2010, 08:24